Orion Dock is a Docker-first Rust workspace for Orion's core agent logic and skills runtime. Desktop installer and npm-based deployment paths have been retired in favor of containerized build, test, and delivery.
- Core crates for identity, memory, routing, capabilities, skills, and birth lifecycle
- Autonomous agent runtime — structured tool-calling via
route_with_tools()with legacy text fallback; risk-based security policies that enable safe autonomous action - Orion API (
crates/orion-api) — HTTP API for the web UI (health, status, tier-model management) - Web UI (
frontend/) — React + Vite + TypeScript; chat dashboard with Fast/Standard/Pro tier selection - Council Engine (MoA DAG) (
crates/orion-router/src/council.rs) — native Rust multi-model debate/synthesis for Pro tier - Tier Model Orchestration — Per-provider Fast/Standard/Pro model selection with catalog validation
- Quick-Start Birth — One-call agent creation with auto identity and standard constitutional documents
- Skill crates under
skills/(web search, web browse, shell, filesystem, HTTP, email, Docker exec, Perplexity) - Docker development and CI workflow under
docker/ - Full stack Compose profile: postgres, ollama, orion-api, frontend
- GitHub Actions CI (when enabled): Docker-only fast suite (lint, build, test, frontend typecheck/build in container) and full-stack UAT job. CI and Dependabot may be disabled; run
scripts/local-verify(orrun-uat.ps1/dev-stack.ps1) locally before pushing.
This repository is one piece of a deliberate three-part identity ecosystem (see sao-ecosystem-article.md and diagrams below).
- Abigail – personal local agent with full free will (owner-controlled keys).
- Orion Dock – enterprise container agents (same soul + skills model, SAO-provisioned).
- SAO – central management, cryptographic vault, agent registry, enterprise IDP bridge.
Every running agent instance carries the same archetype:
soul.md+ethics.md+org-map.md- Merged at birth into the runtime system prompt.
- Skills always split: tool (code/env) + how-to-use.md (ego guidance).
- Modular Crate Architecture (Orion)
- Birth Lifecycle
- Bicameral Mind / IdEgo Router
- Zero Trust Security Model
- Autonomous Execution Loop
- SAO Trust Chain & Ecosystem Overview
- Docker Desktop (or Docker Engine + Compose v2)
Copy example.env to .env and set variables as needed (API keys, LOCAL_LLM_BASE_URL, etc.). The file .env is gitignored; never commit secrets.
# Build container image
docker compose -f docker/docker-compose.yml build orion-build
# Run lint/build/test (and frontend typecheck/build) in container
docker compose -f docker/docker-compose.yml run --rm -e UAT_MODE=fast orion-build
# Optional interactive shell for development
docker compose -f docker/docker-compose.yml up -d orion-dev
docker compose -f docker/docker-compose.yml exec orion-dev bash
# Full stack (web UI + API + Postgres + Ollama): open http://localhost:3000
docker compose -f docker/docker-compose.yml --profile full up -d
# Full stack with dual-proxy egress boundary (proxy always on in full profile)
docker compose -f docker/docker-compose.yml --profile full up -d --buildFor a one-command full environment startup (including optional email ingress profile), use:
.\scripts\full-stack.ps1Common variants:
.\scripts\full-stack.ps1 -NoEmail # start without email profile
.\scripts\full-stack.ps1 -SkipBuild # start without rebuilding images
.\scripts\full-stack.ps1 -Rebuild # no-cache rebuild before start
.\scripts\full-stack.ps1 -Down # tear down running stackDual-proxy mode keeps app services on an internal-only network and routes outbound HTTP(S) via
proxy_internal -> proxy_external, with SSRF deny rules at the egress proxy. See
documents/HOW_TO_RUN_LOCALLY.md and docker/proxy/README.md for modes (allow_all vs
allowlist), host access toggles, ingress sidecars, and audit logs.
The canonical path is scripts/docker-test-suite.sh (invoked by orion-build). Manually:
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo build --workspace
cargo test --workspace --no-fail-fast
# Frontend: cd frontend && npm ci && npm run typecheck && npm run buildFor full-stack UAT (with postgres, orion-api, frontend up): run the container with UAT_MODE=full and DATABASE_URL set; see documents/APPLICATION_TEST_PLAN.md.
- Private key: During birth setup, the Ed25519 private key is shown once. Save it securely; it is not stored. See
documents/SECURITY_NOTES.md. - Non-Windows: Secret storage uses a plaintext stub on non-Windows platforms (development only). Do not use for production on macOS/Linux until a cross-platform secret store is integrated.
- Local LLM URL: Only
localhost/127.0.0.1/::1are allowed to prevent SSRF. Do not point at internal or cloud URLs.
OPENAI_API_KEY- enables cloud provider routes when configuredLOCAL_LLM_BASE_URL- local OpenAI-compatible endpoint (e.g.http://ollama:11434in Compose)EXTERNAL_PUBKEY_PATH- explicit public key path overrideMEMORY_BACKEND-sqlite(default) orpostgresDATABASE_URL- Postgres connection string whenMEMORY_BACKEND=postgresBIRTH_MODEL- model used for birth stages (defaultqwen2.5:3b-instruct)ID_MODEL_DEFAULT- default model for non-birth Id flows
Birth runs local-first (pinned birth model); once a cloud API key is set, routing uses cloud first with local fallback. Ego model selection follows the tier system: Fast (lightweight), Standard (balanced), or Pro (highest capability with native council debate/synthesis). See documents/HOW_TO_RUN_LOCALLY.md for full stack and birth runtime steps.
| Responsibility | Id (local, heartbeat) | Ego (cloud tiers) |
|---|---|---|
| Birth process | Yes | No |
| Heartbeat / cron lightweight checks | Yes | No |
| Privacy-sensitive / local-only | Yes | No |
| Operational chat (mentor) | No | Yes |
| Agentic / tool-calling loops | No | Yes (min Standard) |
| Orchestration spawn_agentic | No | Yes |
Id is a heartbeat-class model. It must never be used for tool-calling, autonomous loops, or any task requiring function-calling reliability.
crates/- core Rust crates (includingorion-api)frontend/- React + Vite web UI; env:VITE_API_URLfor API base URL when not using proxyservices/- auxiliary runtime servicesskills/- skill pluginsdocker/- Dockerfile and Compose stack.github/workflows/ci.yml- Docker-based CI gatedocuments/HOW_TO_RUN_LOCALLY.md- local Docker runbook
Contributions are welcome. See CONTRIBUTING.md for workflow and quality expectations.
MIT. See LICENSE.