OpenCrane βΊ apps
Everything here is a deployable: a thing that ships and runs β a server, a single-page app, a
worker, a database. Apps are thin. They compose libraries, wire up clients, and manage process
lifecycle; the actual product logic lives in libs. The rule is
one apps/<name> per deployable, and logic lives in libs β if you are writing behaviour worth
testing on its own, it belongs in a library, not here.
| Deployable | What it owns |
|---|---|
opencrane |
The organisation control plane and authenticated REST API. |
opencrane-ui |
The browser workspace for personal assistants, team chats and organisation administration. |
conversation-computer |
The generation-fenced process image used by Agent Sandbox. |
memory-gateway |
The private authenticated boundary in front of Cognee. |
artifact-service |
The artifact promote-and-receipt service. |
artifact-preprocessor |
Outbound-only PDF-to-text worker behind the OpenCrane artifact broker. |
artifact-scanner |
Outbound-only malware scanner for quarantined conversation files. |
agent-controller |
Sole Kubernetes mutator for governed one-shot Jobs. |
mcp-executor |
One-shot OpenCrane companion for OCI-backed MCP server Jobs. |
mcp-file-generator |
Credentialless CSV-producing MCP image for the existing governed OCI execution flow. |
skill-authoring |
Chart-only isolated candidate-skill Job plane with no standing worker. |
postgres |
The durable PostgreSQL deployable. |
Vendored third-party infrastructure (Cognee, LiteLLM, and the Kubernetes release
composer) lives one level down under apps/_infra β see that index for the
service map.
opencrane (control plane) ββservesβββΊ opencrane-ui (SPA)
βββ memory-gateway
Β· artifact-service Β· artifact-preprocessor Β· artifact-scanner
βββ conversation-computer (Agent Sandbox process image)
βββ agent-controller Β· mcp-executor
βββ skill-authoring
βββ postgres (durable DB)
apps/_infra/ ββ vendored infra + release composer
Apps carry type:app / scope:app. An app may compose any library, but it must not import
another app β deployables never depend on each other's source.
An app that publishes a container owns its complete release descriptor on its NX container
target: metadata.release.image is the registry suffix and metadata.release.dockerfile is the
build definition. The Docker workflow selects affected container targets from NX, reads those
descriptors from their app projects, and fails closed if either field is absent. A container
target therefore runs the actual image build; an image smoke check is a distinct app target.
Pre-1.0 there are no per-app version stamps or upgrade transitions. One current manifest,
releases/<version>.json, binds the repository version, the fresh-install
database baseline digest, and the PostgreSQL operand image; the full policy lives in
docs/agents/versioning.md.
- Parent front door: OpenCrane
- Vendored infra index:
apps/_infraΒ· library capabilities:libs/backend