AI assistants become far more valuable when they understand how people work, can use company tools, and can carry knowledge across conversations. At organisation scale, that creates a governance problem: every assistant needs the right identity, context, permissions, budget, and approval boundaries β without exposing one person's work to another.
OpenCrane is a self-hosted control plane for organisational AI. It gives every employee a durable personal assistant, lets the organisation run shared agents for scheduled and triggered work, and keeps the organisation in control of its data, knowledge, skills, tools, models, and audit history.
Vendor-hosted assistants are convenient, but they place proprietary workflows, conversations, and company knowledge inside another company's platform, and they tie an organisation's operating model to one model provider.
OpenCrane keeps the organisational layer on infrastructure you control:
- employee conversations, files, personas, and memory stay private to their authorised user;
- company knowledge, integrations, skills, and agent definitions stay organisation-owned;
- model providers and credentials can change without rebuilding the assistant product;
- budgets, approvals, access decisions, and activity are governed in one place; and
- each organisation runs inside its own isolated boundary.
Everything in OpenCrane is built around one distinction.
- Personal assistants work for a single employee. An assistant can see and use only that person's approved context, tools, skills, files, and memory. Its work is private to them, and it builds up an understanding of how that employee works over time.
- Managed agents do bounded work for the organisation, a department, a team, or a project β on a schedule or in response to a trigger. Each managed agent runs under its own narrowly scoped identity, and can never quietly inherit the person who created it, the employee who started it, or anyone's private memory or personal tools.
Both kinds share the same foundation: durable conversations, governed actions, versioned skills and files, and permitted access to organisation knowledge.
Each organisation is one isolated boundary. Inside it, a control plane holds the durable record of everything β who the agents are, what they may do, and everything they have done. When an agent needs to act, OpenCrane spins up a short-lived, isolated agent runtime for that single task, hands it one frozen snapshot of its input, and removes it when the task finishes. The runtime streams its progress back to the control plane but holds no authority of its own, so an assistant survives restarts, scaling, and a closed browser tab without ever becoming the source of truth.
Employees Schedules & triggers
β β
β β
ββββ YOUR ORGANISATION β one isolated boundary ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β β
β β β β
β βΌ βΌ β
β βββββββββββββββββββββββββββ βββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββ β
β β Personal assistant β β identity adjusted β β Managed agent β β
β β private to one ββββ to the employee β β bounded, scoped work β β
β β employee β β (per-person sidecar) β β own scoped identity β β
β βββββββββββββββββββββββββββ βββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββ β
β β β β
β βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββ β
β β OpenCrane control plane β β Shared organisation services β β
β β identity Β· conversations Β· tasks β β maintained centrally, β β
β β approvals Β· budgets Β· access Β· audit β β outside the agents β β
β βββββββββββββββββββββββββββββββββββββββββββββββ β β β
β runs a β β² progress β β’ Models β β
β task β β β β’ Tools β β
β βΌ β β β’ Memory & knowledge β β
β βββββββββββββββββββββββββββββββββββββββββββββββ β β’ Files & artifacts β β
β β Agent runtime βusesβ β β
β β isolated & short-lived Β· one task Β· βββββΆβ β β
β β keeps no standing access β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββ β
β β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The control plane governs the parts that must be consistent across every agent:
- Durable conversations keep an ordered history that replays after a reconnect, instead of trusting the browser or the runtime to remember.
- Governed actions pause for approval when a step needs it, and record the exact action taken and its outcome.
- Versioned skills and files preserve which capability or input a task actually used, even after a newer version is published.
- Organisation memory makes permitted company knowledge available to an agent without granting it broad access to any employee's private data.
- Budgets and audit track spend and activity in one place, per agent and per organisation.
See the illustrated architecture overview for the full reader-facing system view.
An agent's reach is set once, centrally, by an organisation admin β never by the agent or the person using it. Each setting becomes part of the effective contract OpenCrane freezes into a task before its agent runtime starts, so changing a policy shapes future tasks and never rewrites one already running.
βββββββββββββββββββββ
β Organisation adminβ
β β
βββββββββββββββββββββ
βΌ
ββββ OpenCrane control plane β what an organisation admin configures ββββββββββββββββββββββββββββββ
β β
β βββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββ β
β β People & access β β Agents & skills β β
β β employees Β· departments Β· teams Β· β β managed agent definitions & revisions β β
β β projects Β· who may use what (grants) β β schedules Β· triggers Β· published skills β β
β βββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββ β
β β Tools & integrations β β Models & providers β β
β β MCP tool servers Β· tool grants β β provider keys (BYOK) Β· enabled models β β
β β external integrations & approvals β β model routing defaults β β
β βββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββ β
β β Knowledge β β Budgets & audit β β
β β organisation retrieval sources β β spend caps Β· usage quotas β β
β β what agents may retrieve β β audit log (view decisions & activity) β β
β βββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββ β
β β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
compiled into the frozen contract for every task
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Effective contract for one task β
β the frozen snapshot each Agent runtime receives β no setting β
β can change once the task has started β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The complete documentation is at opencrane.ai, including:
- getting started;
- the architecture overview;
- the deployment guide;
- the MCP integration guide; and
- the API overview.
- Node.js 22 or newer
- Kubernetes 1.30 or newer
- Helm 3
kubectl- a CloudNativePG operator in the target cluster
npm ci
npm run build
npm run testDevelopers and coding agents can add source-anchored semantic repository context to a clone with
npm run agent-context:setup. The index is advisory and complements Nx; it does not replace Nx
project boundaries, affected calculation, builds, or tests. See the
repository-context guide for the supported platforms and loop.
The deployment entrypoint installs one isolated organisation boundary. Before running it, create the PostgreSQL credential Secrets named in the command and configure the organisation's OpenID Connect (OIDC) identity provider.
export OIDC_ISSUER_URL="https://identity.example.com"
export OIDC_CLIENT_ID="opencrane-acme"
export OIDC_REDIRECT_URI="https://acme.opencrane.example/api/v1/auth/callback"
apps/_infra/deploy-k8s/deploy.sh \
--base-domain opencrane.example \
--cluster-tenant acme \
--postgres-credentials-secret opencrane-postgres-bootstrap \
--obot-postgres-credentials-secret opencrane-obot-postgres-bootstrap \
--litellm-postgres-credentials-secret opencrane-litellm-postgres-bootstrapThis installs the isolated acme organisation boundary and serves its UI and REST API at
https://acme.opencrane.example. The API is rooted at /api/v1; the generated OpenAPI document and
interactive reference are linked from the API documentation.
For deployment profiles, required Secrets, and local cluster setup, follow the cluster deployment guide.
For a two-minute orientation: application deployables live under apps/, reusable
capabilities under libs/, shared API contracts under libs/contracts/,
and the documentation site under website/.
Repository contributors should start with AGENTS.md. Capability history lives in
CHANGELOG.md, while completed implementation history and design context live in
plan-done.md.
OpenCrane is available under the GNU Affero General Public License v3.0 or later.