Docs

Run and publish Manja

Start with a local spec or container, then connect the source and choose the revision readers should see. Manja keeps public docs pinned to that known-good version until a healthy publication replaces it.

Run locally

The current vertical slice renders a read-only OpenAPI reference from a spec file and stores publication metadata in a local data directory.

Commandshell
go run ./cmd/manja \
  -spec internal/adapters/openapi/testdata/github-v3-rest.json \
  -data-dir .manja/data

Run with Docker

Published images are available from GitHub Container Registry as ghcr.io/araihu/manja. The main tag follows the latest successful build from main; release builds also publish semver tags.

Commandshell
docker run --rm \
  -p 8080:8080 \
  -v manja-data:/var/lib/manja \
  ghcr.io/araihu/manja:main

The image starts with the bundled GitHub REST API fixture. To render your own spec, mount it into the container and pass the same Manja flags used by the local binary.

Custom specshell
docker run --rm \
  -p 8080:8080 \
  -v "$PWD/openapi.yaml:/spec/openapi.yaml:ro" \
  -v manja-data:/var/lib/manja \
  ghcr.io/araihu/manja:main \
  -addr :8080 \
  -spec /spec/openapi.yaml \
  -data-dir /var/lib/manja

Point at source

Keep the OpenAPI file in the repository that already owns it. Manja needs the repository, credentials when required, a spec path, and the revision or singleton file source to index.

Repository
Remote or local source that owns the spec.
Spec path
Path such as docs/openapi.yaml or api/openapi.yaml.
Revision
Branch, tag, commit, or file source used as the publication candidate.

Handle versions

Branches, tags, commits, and singleton spec files stay close to source control. Manja can index each candidate and expose the selected version without asking maintainers to author docs in a second place.

Publish deliberately

Public docs should show the chosen version until a later sync is healthy enough to replace it. That last-known-good behavior keeps readers on stable docs even if source access or parsing fails later.

Generated examples and request snippets are useful for readers, but the public surface remains read-only and does not proxy upstream APIs.