# AgentsKit OS — full machine-readable corpus > Operating system for AI agents in production. Parent brand: AgentsKit. ## Public documentation ### cli/agents.mdx --- title: Agents description: Register, list, version, promote, and compare agents from the command line. --- The AKOS CLI gives you full lifecycle control over agents in your workspace: register them in the registry, move them through lifecycle states with audit trails, generate drafts from plain English descriptions, and compare evaluation results across variants. ## Registering an agent ```bash akos agent register \ --id summarizer \ --owner alice@example.com \ --purpose "Summarizes incoming emails and posts to Slack" ``` Required flags: | Flag | Description | |---|---| | `--id ` | Agent identifier (lowercase, hyphen-separated) | | `--owner ` | Responsible owner — email address or handle | | `--purpose ` | Short description of what the agent does | Optional flags: | Flag | Description | |---|---| | `--state ` | Initial lifecycle state (default: `draft`) | | `--risk ` | Risk tier (default: `low`) | | `--workspace-root ` | Override workspace runtime root | **Lifecycle states:** `draft`, `review`, `approved`, `staged`, `production`, `deprecated`, `retired` **Risk tiers:** `low`, `medium`, `high`, `critical` ## Listing registered agents ```bash akos agent list ``` Outputs each agent's ID, lifecycle state, risk tier, and owner. Add `--json` for machine-readable output. ```bash akos agent list --json ``` ## Generating an agent from a description To generate a starter agent configuration from a plain-English description: ```bash akos agent from-nl "Summarize Slack DMs daily and post a digest" ``` The command infers the agent's intent (verb, cadence, confidence) and outputs a YAML draft ready to paste into your workspace config. Save directly to a file: ```bash akos agent from-nl "Monitor GitHub issues and triage by label" \ --out agents/issue-triage.yaml ``` Output as JSON instead of YAML: ```bash akos agent from-nl "Send weekly report to Notion" --format json ``` ## Promoting an agent through the lifecycle `agent promote` validates a lifecycle transition against the AKOS governance graph and emits an audit event. It does not modify the registry by default (dry-run mode). ```bash akos agent promote \ --agent-id summarizer \ --from draft \ --to review \ --actor alice@example.com ``` To commit the transition to the registry (update state and append the audit event): ```bash akos agent promote \ --agent-id summarizer \ --from review \ --to approved \ --actor alice@example.com \ --check code_review \ --check security_scan \ --commit ``` ### Promote options | Flag | Description | |---|---| | `--from ` | Current lifecycle state (required) | | `--to ` | Target lifecycle state (required) | | `--agent-id ` | Agent identifier (default: `unknown`) | | `--actor ` | Principal authorizing the transition | | `--risk ` | Risk tier (default: `low`) | | `--check ` | Satisfied governance gate (repeatable) | | `--reason ` | Free-form reason recorded in the audit event | | `--json` | Emit the audit event as JSON | | `--commit` | Persist the transition to the registry | If a transition is blocked by unsatisfied gates, the CLI prints which checks are missing and exits non-zero. ## Viewing agent version history ```bash akos agent version-list --id summarizer ``` Prints the recorded version history for an agent. Add `--json` for structured output. ## Comparing agent variants Use `agent compare` to rank multiple agent variants by pass rate, cost, and latency from a saved evaluation run. First, prepare a JSON file containing evaluation results for each variant: ```json [ { "id": "variant-a", "passRate": 0.92, "meanCostUsd": 0.004, "meanLatencyMs": 820 }, { "id": "variant-b", "passRate": 0.88, "meanCostUsd": 0.002, "meanLatencyMs": 510 } ] ``` Then run the comparison: ```bash akos agent compare evaluations.json ``` The CLI prints a ranked table and the overall winner. Adjust scoring weights to match your priorities: ```bash akos agent compare evaluations.json \ --pass 0.7 \ --cost 0.1 \ --latency 0.2 ``` Default weights: pass rate 0.6, cost 0.2, latency 0.2. Weights do not need to sum to 1. Output as JSON: ```bash akos agent compare evaluations.json --json ``` ## Viewing the agent changelog ```bash akos agent changelog --agent-id summarizer ``` Prints the recorded change events for an agent. Add `--json` for structured output. ## Related topics - **[Agents in the app](/docs/using-the-app/agents)** — registry UI, lifecycle promotion, sandbox test. - **[Model catalog](/docs/using-the-app/model-catalog)** — choosing models in agent forms. - **[Quality checks (Evals)](/docs/using-the-app/evals)** — regression suites that gate promotions. - **[Flows and Runs](/docs/cli/flows-and-runs)** — run agents inside workflow graphs. Source: /raw/cli/agents.mdx ### cli/authentication.mdx --- title: Authentication description: Log in to your AKOS workspace, manage provider credentials, store secrets in the vault, and provision integration connections. --- The CLI authenticates to your AKOS workspace via a device-code OAuth flow. Once logged in, provider credentials and secrets are managed separately through the `creds`, `vault`, `secrets`, and `connections` commands. ## Logging in ```bash akos auth login ``` This starts a device-code flow: 1. The CLI prints a verification URL and a short user code. 2. Open the URL in a browser and enter the code. 3. After approval, the CLI saves your session token locally and prints `Logged in as `. ### Login options | Flag | Description | |---|---| | `--scope ` | OAuth scope (default: `cli`) | | `--client-id ` | Override the OAuth client ID | ### CI environments If the environment variable `AKOS_TOKEN` is already set, `auth login` exits immediately with a success message. Use this for non-interactive pipelines. ## Checking your session ```bash akos auth whoami ``` Prints `Logged in as on tenant ` and confirms the workspace is reachable. Add `--json` for machine-readable output. ## Switching tenants When your account belongs to multiple tenants (OEM multi-tenancy), use the `tenant` commands to list and switch: ```bash akos tenant list ``` Lists all tenants your account can access. If you do not have the `oem:tenant:admin` role, the command falls back to reporting the current tenant. ```bash akos tenant use ``` In local/self-host mode, this persists the tenant ID to your local session for subsequent sidecar calls. In hosted/cloud mode, tenant switching is server-side; re-login or use the hosted tenant switch flow so token claims and tenant isolation stay aligned. ## Logging out ```bash akos auth logout ``` Clears the locally stored session token. Safe to call when no session exists (idempotent). ## Managing provider credentials The `creds` command lists, verifies, and stores the API keys required by AI providers and integrations. Values are never printed. ### List known providers ```bash akos creds list ``` Shows each provider, its kind, and the vault keys it requires. Filter by kind or provider: ```bash akos creds list --kind llm akos creds list --provider anthropic ``` Output as JSON: ```bash akos creds list --json ``` ### Check credential presence ```bash akos creds check ``` Scans the environment (and optionally a secrets file) for each required key. Exits with code 0 when all keys are present, code 7 when any are missing. ```bash # Check against a local dotenv-style file (key names only — values never shown) akos creds check --secrets-file .env.local # Skip cloud providers (air-gapped workspace) akos creds check --air-gap # Restrict to a specific provider akos creds check --provider openai ``` ### Set a credential ```bash akos creds set ``` Interactive guided flow for storing a credential. Follows the same vault backend as `vault put`. ### Onboarding guide Print the full credential onboarding playbook: ```bash akos creds guide ``` ## Vault: workspace secrets The `vault` command reads and writes secrets in the workspace vault. Secret **values are never printed** — only key names and their source are shown. ### Store a secret ```bash akos vault put OPENAI_API_KEY sk-... ``` Scope the secret to a tenant instead of the workspace: ```bash akos vault put STRIPE_SECRET_KEY sk_live_... --scope tenant ``` Scopes: `workspace` (default), `tenant`. ### List stored secrets ```bash akos vault list ``` Shows key names and their source (e.g. `os-keychain`). Add `--json` for machine-readable output. ## Secrets: headless provisioning The `secrets` command is a headless alternative to `vault`, operating through the running workspace sidecar. Use it when scripting in environments where the sidecar is already running. ```bash # Store a secret akos secrets set GITHUB_TOKEN ghp_... # List stored keys (values hidden) akos secrets list # Filter output as JSON akos secrets list --json ``` Scope options (`--scope workspace|tenant`) work the same as `vault put`. ## Integration connections Integration connections link your workspace to external services (Slack, GitHub, Stripe, and others). Authentication always references a vault key — never a plaintext token. ### Provision a connection First, store the credential in the vault: ```bash akos vault put SLACK_BOT_TOKEN xoxb-... ``` Then create the connection, referencing the vault key: ```bash akos connections set \ --id slack-main \ --kind slack \ --label "Main Slack workspace" \ --secret-id SLACK_BOT_TOKEN ``` For integrations that require no auth: ```bash akos connections set \ --id public-webhook \ --kind webhook \ --label "Inbound webhook" \ --no-auth ``` Supported kinds: `slack`, `github`, `linear`, `discord`, `email`, `cron`, `file`, `webhook`, `cdc`, `twilio`, `sentry`, `pagerduty`, `stripe`, `s3`, `mcp`, `llm`. ### List connections ```bash akos connections list # Filter by kind akos connections list --kind slack # JSON output akos connections list --json ``` ### Inspect a connection ```bash akos connections get slack-main ``` ### Remove a connection ```bash akos connections rm slack-main ``` Removing a connection does not delete the underlying vault secret. ## Related topics - **[Connections (CLI)](/docs/cli/connections)** — `connections guide`, provision, and `connectors test`. - **[Connections in the app](/docs/using-the-app/connections)** — OAuth cards, external secrets, SQL, cloud sync. - **[Integration setup](/docs/using-the-app/integration-setup)** — registry-backed setup guides for providers. - **[CLI index](/docs/cli)** — `doctor`, shell completion, and CI token patterns. Source: /raw/cli/authentication.mdx ### cli/chat.mdx --- title: Chat and Interactive Shell description: Talk to the workspace copilot from the terminal — one-shot messages, readline shell, full-screen TUI, and slash commands. --- The `chat` command is the terminal face of the same assistant that powers **[Home (Assistant)](/docs/using-the-app/copilot)** in the app. It calls `copilot.session.*` on the sidecar — authenticate first, then ensure the sidecar is reachable (`akos serve` locally or `AKOS_HEADLESS_URL`). ## One-shot message Send a single prompt and wait for the reply (default timeout 30 s): ```bash akos chat "summarize today's failed runs" akos chat "draft a cron trigger for nightly backups" ``` Continue an existing session: ```bash akos chat --session sess_abc "now add error handling to that flow" ``` Stream tokens as they arrive (ADR-0133 polling stream): ```bash akos chat --stream "explain our egress policy" ``` Enqueue without waiting for the assistant to finish: ```bash akos chat --no-wait "start a long research task" akos chat sessions akos chat show sess_abc --json ``` ### Options | Flag | Description | |---|---| | `--session ` | Continue an existing copilot session | | `--workspace ` | Workspace for newly created sessions | | `--principal ` | Principal id (default: `cli`) | | `--role ` | `orchestrator`, `chat`, `coder`, `reviewer`, or `embedder` | | `--stream` | Print assistant tokens incrementally | | `--no-wait` | Return after the message is enqueued | | `--timeout-ms ` | Max wait for a final reply (default: `30000`) | | `--poll-ms ` | Poll interval while waiting (default: `500`) | | `--json` | Emit raw session/send envelopes | ## Interactive readline shell Open the portable slash-command shell (also used when you run `akos` with no args on a TTY): ```bash akos chat --interactive # shorthand: akos chat -i ``` Type natural language or slash commands (`/help`, `/flows`, `/inbox`, …). Lists remember the last result so you can select by number (`/run-flow 2`, `/approve 1`). ## Full-screen TUI For the Ink-based terminal UI (transcript pane, themes, governance badges, proposal cards): ```bash akos chat --tui ``` Requires a real TTY. Without one, the CLI exits with a hint to use `--interactive` or a one-shot message. ### TUI highlights - **Themes** — `/theme ocean|grape|forest|ember|mono|midnight|sunset|nord`; persisted in `~/.akos/tui.json`. `NO_COLOR` forces monochrome. - **Editing** — readline chords (`Ctrl+A/E`, `Ctrl+W`, `Ctrl+U/K/Y`), `↑`/`↓` history, `Tab` completes `/commands` and `@mentions`. - **Keybindings** — optional overrides in `~/.akos/keys.json` (approve, cancel, scroll). - **Governance** — header badges for pending HITL and in-flight runs; `Ctrl+G` approves the next gate inline. - **Proposals** — assistant flow/agent proposals render as cards; `/apply ` materializes the chosen proposal. - **Resume** — transcripts reload from the sidecar when switching sessions (`/sessions` picker in TUI). - **Offline** — unreachable sidecar shows a banner; the CLI can auto-start a local sidecar on first use. ## Slash command cheat sheet | Slash | Action | |---|---| | `/help` | List slash commands | | `/workspaces`, `/workspace ` | List / switch workspace | | `/sessions`, `/use `, `/new` | List / switch / create chat session | | `/flows`, `/flow `, `/run-flow ` | List / show / run a flow | | `/agents`, `/agent ` | List / show an agent | | `/inbox`, `/approve `, `/reject ` | HITL queue | | `/runs`, `/run `, `/watch `, `/logs ` | Run inspection | | `/connect …` | Provider setup / OAuth completion | | `/apply ` | Approve the n-th assistant proposal | | `/export [path]` | Save conversation to markdown | | `/quit` | Exit (`Ctrl-C` / `Ctrl-D` also work) | Full table (including `/verticals`, `/theme`, `/cost`, …): **[Command reference](/docs/cli/command-reference)** › Interactive shell. ## Session management ```bash akos chat sessions --json akos chat show sess_abc akos chat cancel sess_abc # stop an in-progress turn akos chat delete sess_abc # remove session + transcript ``` ## Scripting copilot primitives For automation that parses slash commands or builds proactive cards without the interactive shell: ```bash akos copilot slash list akos copilot slash parse "/run-flow nightly-backup" akos copilot mention parse "ask @billing about limits" akos copilot proactive '{"kind":"run.failed","runId":"run_1"}' --json ``` Registry-backed integration setup steps also surface in chat — see **[Connections](/docs/cli/connections)** (`connections guide`) and **[Integration setup](/docs/using-the-app/integration-setup)**. ## Related topics - **[Home (Assistant)](/docs/using-the-app/copilot)** — same copilot in the browser/desktop UI. - **[Flows and Runs](/docs/cli/flows-and-runs)** — `/run-flow` and scriptable `flows run`. - **[Connections](/docs/cli/connections)** — `/connect` and OAuth completion from the shell. - **[Knowledge and RAG](/docs/cli/knowledge-and-rag)** — `/knowledge` and indexed docs for retrieval. - **[Command reference](/docs/cli/command-reference)** — streaming, exit codes, non-TTY usage. Source: /raw/cli/chat.mdx ### cli/command-reference.mdx --- title: Command Reference description: A concise table of every top-level akos command with a one-line description. --- All commands accept `--help` for detailed usage. Commands marked with a sidecar requirement need `akos serve` to be running (or `AKOS_HEADLESS_URL` pointing at a remote sidecar). **Topic walkthroughs** (examples and operator loops): [Authentication](/docs/cli/authentication) · [Connections](/docs/cli/connections) · [Agents](/docs/cli/agents) · [Flows and Runs](/docs/cli/flows-and-runs) · [Processes](/docs/cli/pipelines) · [Triggers](/docs/cli/triggers) · [Knowledge and RAG](/docs/cli/knowledge-and-rag) · [Security and Governance](/docs/cli/security-governance) · [Costs and Observability](/docs/cli/costs-observability) · [Chat](/docs/cli/chat) · [Configuration](/docs/cli/configuration) · [Migrating](/docs/cli/migrating) · [Deploying](/docs/cli/deploying). ## Core workspace | Command | Description | |---|---| | `init [dir]` | Scaffold a new AKOS workspace (config, `.agentskitos/`, `.gitignore`) | | `init-ci` | Scaffold GitHub Actions CI templates for an AKOS project | | `wizard` | Interactive first-run template wizard | | `new [template-id]` | Scaffold a workspace from a starter template (`--list` to browse) | | `doctor` | Diagnose the CLI environment: Node version, platform, credentials, connectivity | | `status` | Show sidecar connection, active workspace, auth state, recent runs/triggers/anomalies | | `workspaces list` | List sidecar workspaces and mark the active one (requires sidecar) | | `workspaces use ` | Switch the active workspace (requires sidecar) | | `workspaces create ` | Create a workspace; idempotent on id (requires sidecar) | | `workspaces delete ` | Delete a workspace; rejects the active one. Requires `--confirm` in non-TTY (requires sidecar) | | `workspaces clone ` | Clone the active workspace into a new id (requires sidecar) | | `upgrade` | Check for a newer CLI version and print the upgrade command | | `completion ` | Emit a shell completion script (`bash`, `zsh`, `fish`) | | `version` | Print the installed CLI version | ## Authentication and credentials | Command | Description | |---|---| | `auth login` | Sign in via device-code OAuth and persist a session token | | `auth logout` | Clear the persisted session token | | `auth whoami` | Print the active session identity (requires sidecar) | | `auth status` | Show the current auth session state | | `tenant list` | List accessible tenants (requires `oem:tenant:admin`; falls back to current tenant) | | `tenant use ` | Switch the active tenant locally; hosted/cloud switching is server-side | | `creds list` | List known providers and their required vault keys | | `creds check` | Verify that required credential keys are present (values never shown) | | `creds set` | Interactively store a provider credential | | `creds guide` | Print the guided credential onboarding playbook | | `vault list` | List workspace secret keys stored in the vault (values hidden) | | `vault put ` | Write a secret to the workspace vault | | `secrets list` | List provisioned secret keys via the sidecar (values hidden) | | `secrets set ` | Provision a secret headless via the sidecar | | `connections list` | List provisioned integration connections | | `connections get ` | Read a single integration connection | | `connections guide [providerId]` | Print setup guidance from the integration registry (`--category`, `--implemented-only`) | | `connections sql-get ` | Read a single SQL connection (`--json`) | | `connections set` | Provision (create or replace) an integration connection | | `connections rm ` | Remove an integration connection | ## Agents | Command | Description | |---|---| | `agents list` | List inline agents from the sidecar (`--json`) | | `agents show ` | Show a single inline agent (`--json`) | | `agents run ` | Invoke an agent now (`--input`, `--mode`, requires `--confirm` in non-TTY) | | `agent register` | Persist a new agent registry entry (local registry) | | `agent list` | List agents in the local workspace registry | | `agent from-nl ` | Generate an agent draft from a natural-language description | | `agent promote` | Validate a lifecycle transition and emit an audit event | | `agent version-list` | View the version history for an agent (`--id`, `--json`) | | `agent bump` | Mint a new agent version (auto-suggest, manual confirm) | | `agent diff` | Diff two agent versions (defaults to last two) | | `agent compare ` | Rank agent variants by pass rate, cost, and latency | | `agent changelog` | View the change event history for an agent | ## Flows and runs | Command | Description | |---|---| | `flow new [template-id]` | Scaffold a flow from a built-in template into a workspace config | | `flow export ` | Export a flow as a portable `FlowEnvelope` JSON | | `flow import-json ` | Import a `FlowEnvelope` JSON into an existing config | | `flows list` | List inline flows in the active workspace (`--json`) | | `flows show ` | Show a single inline flow (`--json`) | | `flows validate ` | Validate an inline flow against the `FlowConfig` schema | | `flows run ` | Run an inline flow now (`--mode`, requires `--confirm` in non-TTY) | | `flows edit ` | Edit an inline flow in `$EDITOR`; validates before applying (TTY only) | | `run [configPath]` | Execute (or resume) a flow (default mode: `dry_run`) | | `runs list` | List recent flow runs (`--workspace`, `--status`, `--limit`, `--json`) | | `runs get ` | Fetch a single run row via the sidecar (`runs.get`; null when missing) (`--json`) | | `runs show ` | Enriched run detail: status, flow, timings, cost/tokens, counts, recent events (`--json`) | | `runs watch ` | Follow one run's status/detail until completion (`--once`, `--json`) | | `runs cancel ` | Cancel an in-flight run (requires `--confirm` in non-TTY) | | `runs retry ` | Re-dispatch the flow behind a run (`--mode`, requires `--confirm` in non-TTY) | | `runs logs ` | Print the span/tool event timeline of a run (`--json`) | | `runs artifacts ` | List artifacts produced by a run (`--limit`, `--json`) | | `explain` | Explain a coding run from its persisted artifact bundle | | `whatif ` | Project cost/latency/pass-rate impact of a hypothetical change | | `inbox list` | List pending HITL approvals (`--status`, `--json`) | | `inbox show ` | Show full approval context + risk notes (`--json`) | | `inbox approve ` | Approve a pending approval (`--note`, requires `--confirm` in non-TTY) | | `inbox reject ` | Reject a pending approval (`--note` reason required, `--confirm` in non-TTY) | | `hitl list` | List human-in-the-loop escalations (alias surface of `inbox`) | | `hitl approve ` | Approve an escalation | | `hitl reject ` | Reject an escalation (note required) | | `hitl reassign ` | Reassign a pending escalation | | `hitl modify ` | Submit a counter-proposal for an escalation | | `hitl dead-letter` | List HITL escalations dead-lettered by a decision-SLA timeout | | `hitl ledger append` | Append a signed entry to the HITL ledger chain | | `runs tail` | Stream new run entries live (poll-based; `--interval`, `--workspace`) | | `runs retention prune` | Prune run records beyond the configured retention policy | ## Pipelines | Command | Description | |---|---| | `pipelines list` | List pipelines in the workspace (`--json`) | | `pipelines show ` | Show a single pipeline by id (`--json`) | | `pipelines runs ` | List runs for a pipeline (`--limit`, `--json`) | | `pipelines run ` | Dispatch a new pipeline run (`--mode`, `--input`, `--json`) | | `pipelines resume ` | Resume a pipeline run paused at an approval gate (`--json`) | | `pipelines cancel ` | Cancel an in-flight pipeline run (`--json`) | ## Triggers | Command | Description | |---|---| | `triggers kinds` | List all supported trigger kinds | | `triggers list` | List triggers defined in a config file | | `triggers add` | Add a trigger to a config file | | `triggers remove ` | Remove a trigger from a config file | | `triggers test ` | Send a synthetic event through a trigger (requires sidecar) | | `triggers runs ` | View recent executions for a trigger (requires sidecar) | | `triggers url ` | Print the inbound URL for a webhook trigger (requires sidecar) | | `triggers toggle ` | Enable or disable a trigger (requires sidecar) | | `trigger preset list` | List built-in trigger presets | | `trigger preset show ` | Show the configuration for a named preset | | `triggers tail` | Stream new trigger-fired events live (poll-based; `--interval`) | | `triggers contracts` | List every registered trigger contract via the sidecar | ## Configuration | Command | Description | |---|---| | `config validate ` | Validate a config file against the AKOS schema | | `config get [key]` | Read a value (dotted key) from a config file, or the whole config | | `config set ` | Set a value (dotted key); validates before writing. Requires `--confirm` in non-TTY | | `config edit ` | Open a config file in `$EDITOR`; validates on save (TTY only) | | `config diff ` | Show a structural diff between two config files | | `config explain` | Show which config layer set each leaf value | | `config migrate ` | Migrate a config file to the current schema version | | `lock ` | Generate or verify `akos.lock` | | `sync` | Check or apply version drift between the lockfile and installed packages | ## Deploying and operating | Command | Description | |---|---| | `publish [dir]` | Build a signed plugin bundle for marketplace upload | | `deploy [bundle]` | Verify asset integrity and ship a bundle to a publisher backend | | `install ` | Fetch, verify, and install a plugin from a registry URL | | `serve` | Start the local workspace sidecar (JSON-RPC over stdio) | | `mcp-serve` | Serve the AKOS capability catalog and security tools to external agents over MCP | | `mcp discover` | Discover MCP server definitions from local agent config files | | `import ` | Translate an n8n / LangChain / LangGraph / Langflow / Flowise / Dify workflow into AKOS config (`--apply` to upsert into the workspace) | | `migrate-to-cloud` | Migrate local workspace data to Postgres and S3 | | `docs export` | Emit the for-agents catalog (JSON + `llms.txt`; RFC-0012) | | `seed` | Materialise demo pack data into sidecar stores (`--vertical`, `--reset`) | | `prod seed` | Ledgered production seeds — demo packs or assistant-knowledge folders (`--dry-run`, `--apply`, `--target demo\|assistant-knowledge`, `--force`, `--vertical`, `--base-dir`) | | `snapshot create` | Create a workspace snapshot | | `snapshot restore` | Restore a workspace from a snapshot | | `snapshot schedule` | Persist a snapshot scheduling and retention policy | | `snapshot retention` | Apply the configured retention policy and prune old snapshots | ### MCP security tools `mcp-serve` exposes agent-operable security management (ADR-0136). An agent can read and reconfigure the firewall, egress policy, and PII profiles at runtime — no redeploy — via these MCP tools: | MCP tool | Description | |---|---| | `firewall.rules.list` | List firewall rules (optionally by tier) | | `firewall.rules.upsert` | Create or update a firewall rule | | `firewall.rules.delete` | Delete a firewall rule by id | | `firewall.rules.shadow` | Toggle a rule into/out of `dry_run` (shadow / log-only) mode | | `egress.policy.get` / `egress.policy.set` | Read or replace the outbound network policy | | `pii.profiles.list` / `pii.profiles.upsert` / `pii.profiles.delete` | Manage custom PII redaction profiles | > Every security tool requires the `security:admin` capability. The MCP server > forwards each call to the running sidecar, where the RBAC access gate > authorizes it — an unauthorized principal receives `AUTHZ_DENIED`. There is no > path that bypasses the gate. ## Plugins | Command | Description | |---|---| | `plugins list` | List installed plugins (`--workspace`, `--json`) | | `plugins get ` | Show a plugin with its capability grants (`--json`) | | `plugins install ` | Install a plugin from a manifest | | `plugins enable ` | Enable an installed plugin | | `plugins disable ` | Disable an installed plugin | | `plugins uninstall ` | Uninstall a plugin and remove its files | ## Packs | Command | Description | |---|---| | `packs list` | List available domain packs (`--json`) | | `packs install ` | Install a domain pack into the workspace | | `packs seed` | Materialise a demo seed bundle (alias of `seed`) | ## Templates | Command | Description | |---|---| | `templates list` | List starter flow templates (`--json`) | ## Marketplace | Command | Description | |---|---| | `marketplace search` | List and filter available marketplace domain packs | | `marketplace install ` | Apply a domain pack to the workspace (requires sidecar) | | `marketplace featured` | Show the editorial featured-listing rotation | | `marketplace suggestions` | Show connection suggestions inferred from workspace + recent runs | | `marketplace report` | File an abuse / policy report against a listing (`--listing`, `--reason`) | | `marketplace private-library` | List private (non-marketplace) plugins available for install | | `marketplace publisher-keys` | List pinned publisher keys with their current trust level | | `marketplace installed` | List installed plugins for the active workspace | | `marketplace fetch` | Fetch the marketplace catalog | | `marketplace apply-monitoring-pack ` | Apply a monitoring pack to the workspace | | `marketplace apply-security-pack ` | Apply a security pack to the workspace | ## Tools | Command | Description | |---|---| | `tools list` | List built-in + plugin tools in the workspace (`--workspace`, `--json`) | | `tools show ` | Show a tool descriptor: category, stability, side-effects, capabilities, args schema (`--json`) | > Direct ad-hoc tool invocation has no sidecar contract — tools execute inside governed runs. Run a tool by adding it to a flow/agent and using `flows run` / `agents run`. ## Connectors | Command | Description | |---|---| | `connectors test --workspace ` | Preflight connections — reports missing credential **keys** (never values), `--kind`, `--json` | > Connection CRUD lives under `connections list/get/set/rm`. `connectors` adds the readiness check. ## Knowledge (RAG) `knowledge` manages knowledge sources (list, add, remove, reindex, status, search). `rag` is a companion command focused on retrieval and ingestion (search, ingest, status). Both commands are real and shipped; use `knowledge` for source management and `rag` for agent-facing retrieval. | Command | Description | |---|---| | `knowledge list` | List configured knowledge sources (`--json`) | | `knowledge add ` | Add a source (`--kind`, `--name`); loader secrets provisioned via `secrets`, never passed here | | `knowledge remove ` | Remove a source and drop its index | | `knowledge search ` | Search the knowledge index (alias: `query`; `--source`, `--top-k`, `--json`); see also: `rag search` | | `knowledge reindex ` | Drop and re-run the digest for a source (alias: `rebuild`) | | `knowledge status` | Indexer status for every source (`--json`) | | `rag search ` | Agent-facing RAG retrieval (`--source`, `--top-k`, `--json`); see also: `knowledge search` | | `rag ingest ` | Re-index (ingest) an existing source | | `rag status` | Indexer readiness for every source (`--json`) | ## Security & governance | Command | Description | |---|---| | `security policy` | Live governance posture: air-gap, firewall, PII, sandbox, RBAC, egress, audit (`--json`) | | `security rbac` | List operator roles and assignments (`--json`) | | `security egress` | Show the egress policy slice of the posture (`--json`) | | `security firewall rules` | List firewall rules (`--tier`, `--shadow` for dry-run-only, `--json`) | | `security firewall set` | Create or update a firewall rule (`--id`, `--tier`, `--pattern`, `--action`, `--shadow`, `--severity`, `--scope`, `--json`) | | `security firewall test` | Evaluate sample text against a tier; shows enforced and shadow matches (`--text`, `--tier`, `--shadow`, `--json`) | ## Sandbox | Command | Description | |---|---| | `sandbox state` | Show the active sandbox isolation level and live sandbox count | | `sandbox policy` | Get or set the sandbox isolation policy | | `sandbox denials` | List recent sandbox denial events (`--limit`, `--json`) | | `sandbox preview` | Preview what a policy change would deny before applying it | ## Costs | Command | Description | |---|---| | `costs summary` | Aggregate spend over a window (`--workspace`, `--window-hours`, `--json`) | | `costs breakdown` | Detailed spend breakdown (`--group-by`, `--from`, `--to`, `--provider`, `--role`, `--workspace`, `--json`) | | `costs budgets` | List configured spend budgets and thresholds (`--json`) | | `costs list` | List itemized cost rows (for filtering / CSV export) (`--json`) | | `costs alerts` | List active cost alerts derived from budget consumption (`--json`) | | `costs usage` | Show tenant usage state from the backend usage meter (`--json`) | | `usage status`, `usage watch` | Inspect, poll, or stream tenant usage state with `--sse`; exits non-zero when usage is exceeded or blocked | ## Audit | Command | Description | |---|---| | `audit list` | List audit ledger entries (`--actor`, `--kind`, `--workspace`, `--limit`, `--json`) | | `audit show ` | Show a single audit entry by id/seq | | `audit export` | Export a signed audit batch (`--workspace`, `--limit`) | | `audit verify` | Verify ledger integrity (hash chain + signatures); exit 1 on failure | | `audit tail` | Follow audit entries live (see streaming commands) | ## Compliance | Command | Description | |---|---| | `compliance export` | Export compliance records (e-discovery, audit export) | | `compliance legal-hold` | Place or release a legal hold on workspace data | | `compliance delete` | DSAR / right-to-erasure delete of data for a subject | ## Observability `observability` covers traces, metrics, logs, and exporter status. `obs` is a companion command that adds anomaly-rule inspection not covered by `observability`. Both commands are real and shipped; neither replaces the other. | Command | Description | |---|---| | `observability metrics ` | Timeseries (`tokens.in`/`tokens.out`/`cost.totalUsd`/`errors.count`/`p99.latencyMs`; `--range`, `--json`) | | `observability traces ` | Span/tool event timeline for a run (`--json`) | | `observability logs` | Snapshot active anomalies (`--workspace`, `--json`) | | `observability status` | Telemetry exporter + anomaly-rule + cost-meter snapshot (`--json`) | | `logs tail` | Stream live anomaly/observability events (poll-based; `--interval`, `--workspace`) | | `obs anomaly-rules` | List structured anomaly rules with their paused state (`--json`); see also: `observability` | ## Admin | Command | Description | |---|---| | `users list` | List workspace users (`--json`) | | `users get ` | Show a user (`--json`) | | `users upsert` | Create or update a user | | `users delete ` | Remove a user | | `users role ` | Assign or revoke a role for a user | | `teams list` | List teams (`--json`) | | `teams get ` | Show a team (`--json`) | | `teams upsert` | Create or update a team | | `teams delete ` | Remove a team | | `teams member` | Add or remove a team member | | `teams role ` | Assign or revoke a role for a team | | `topologies list` | List agent topologies (`--json`) | | `topologies upsert` | Create or update a topology | | `topologies delete ` | Remove a topology | | `topologies run ` | Dispatch a topology run | ## Dev and coding-agent | Command | Description | |---|---| | `dev worktree` | Manage git worktrees for parallel development | | `dev issue-pr` | Create or link a PR to a tracked issue | | `coding-agent delegate` | Delegate a coding task to the coding agent | | `coding-agent benchmark` | Run the coding-agent benchmark suite | | `coding-agent conformance` | Run the coding-agent conformance checks | | `coding-agent smoke` | Run a quick smoke test of the coding-agent surface | ## Chat `chat` opens an interactive or streaming session with the workspace assistant. Walkthrough (one-shot, `--interactive`, `--tui`, sessions): **[Chat and Interactive Shell](/docs/cli/chat)**. Slash-command reference: [Interactive shell](#interactive-shell) below. | Command | Description | |---|---| | `chat [message]` | Send a message to the workspace assistant (`--stream`, `--interactive`, `--tui`) | | `chat sessions` | List saved chat sessions (`--json`) | | `chat show ` | Show the transcript for a session (`--json`) | | `chat cancel ` | Cancel an in-progress chat session | | `chat delete ` | Delete a chat session and its transcript | ## Copilot Slash/mention parsing and proactive cards via the sidecar. | Command | Description | |---|---| | `copilot slash list` | List supported copilot slash commands and their dispatch methods | | `copilot slash parse ` | Parse a chat message for a leading slash command; returns the dispatch method | | `copilot mention parse ` | Parse @-mentions out of a chat message | | `copilot proactive ` | Turn a sidecar event (JSON object) into a proactive action card, or null | ## Telemetry | Command | Description | |---|---| | `telemetry status` | Show current telemetry consent state | | `telemetry enable` | Opt in to anonymous usage telemetry | | `telemetry disable` | Opt out of telemetry | | `telemetry export` | Export stored telemetry events (JSON or CSV) | --- ## Interactive shell `akos chat --interactive` (or `akos` with no args on a TTY) opens a portable readline shell. `akos chat --tui` opens the **full-screen Ink TUI** (transcript pane, themes, autocomplete, governance badges, proposal cards) over the *same* slash-command registry — it requires a TTY and falls back to `chat --interactive` otherwise. See [Full-screen TUI](#full-screen-tui-akos-chat---tui) below. Slash commands mirror the scriptable surface and remember the last list you viewed, so you can select by number: | Slash | Action | |---|---| | `/help` | List available slash commands | | `/session` | Show the active session ID and workspace | | `/workspaces`, `/workspace ` | List / switch workspace | | `/sessions`, `/use `, `/new` | List / switch / create a chat session. In the `--tui`, `/sessions` opens an interactive picker (↑↓ select, ⏎ switch, Esc cancel) and switching re-loads that session's transcript | | `/flows`, `/flow `, `/run-flow ` | List / show / run a flow | | `/agents`, `/agent ` | List / show an agent | | `/inbox`, `/approve `, `/reject ` | List pending approvals / approve / reject | | `/tools`, `/tool `, `/knowledge` | Browse tools / show a tool / list knowledge sources | | `/runs`, `/run ` | List recent runs / show one | | `/tail ` | Snapshot a run's current status + recent events | | `/watch ` | Follow a run until it finishes (polls to a terminal state) | | `/logs ` | Show a run's span/tool event timeline | | `/artifacts ` | List a run's artifacts | | `/cancel `, `/retry ` | Cancel / re-dispatch a run | | `/apply ` | Apply the n-th proposal on the latest assistant turn (approves it so the agent materializes the flow/agent it proposed) | | `/verticals`, `/vertical `, `/vertical use ` | List the whitelabel catalog / show a vertical's config / switch the CLI's active vertical | | `/connect`, `/connect `, `/connect ` | List providers / store an API key / finish a browser OAuth flow | | `/cost`, `/logs ` | Cost summary / run logs (also available as cockpit verbs) | | `/theme [name]`, `/config` | Switch color theme (`ocean`, `grape`, `forest`, `ember`, `mono`, plus truecolor `midnight`, `sunset`, `nord`) / show configuration | | `/compact`, `/export [path]` | Toggle dense spacing / save the conversation to markdown | | `/resend` | Resend the last message (TUI built-in; distinct from the runs cockpit `/retry`) | | `/history`, `/clear` | Print / clear the local transcript | | `/quit` | Exit (Ctrl-C / Ctrl-D also exit gracefully) | ### Full-screen TUI (`akos chat --tui`) The TUI layers a richer experience over the same slash commands and streaming: - **Themes & color.** `/theme ` switches palettes live and persists the choice to `~/.akos/tui.json`. Three 24-bit truecolor palettes (`midnight`, `sunset`, `nord`) render on truecolor terminals and downsample elsewhere. Setting `NO_COLOR` forces the monochrome palette. - **Code rendering.** Assistant markdown renders headers, lists, inline/fenced code with a language label and lightweight syntax highlighting. - **Editing.** Readline-style line editing — `←`/`→`, `Ctrl+A`/`E` (start/end), `Ctrl+W` (delete word), `Ctrl+U`/`Ctrl+K` (kill to start/end), and `Ctrl+Y` (yank the last killed text). `↑`/`↓` recall input history; `Tab` completes `/commands` and `@mentions`. - **Keybindings.** The discrete action keys — approve gate, cancel turn, scroll up/down — are configurable via `~/.akos/keys.json`. Each action maps to a chord `{ "ctrl": true, "char": "g" }` or `{ "key": "pageUp" }`; defaults match the shipped bindings, so the file is optional. Example: ```json { "approve": { "ctrl": true, "char": "g" }, "cancel": { "key": "escape" }, "scrollUp": { "key": "pageUp" }, "scrollDown": { "key": "pageDown" } } ``` - **Governance & cost.** Header badges show pending HITL approvals and in-flight runs (polled); `Ctrl+G` approves the next gate inline. The footer shows session token usage and spend over the cost window. - **Proposals.** When the assistant proposes a flow/agent, it renders as a card with the target tool, action tier, and estimated cost; `/apply ` approves it. - **Resume.** A session's transcript is reloaded from the sidecar on launch and when switching sessions, so history is not lost. `Ctrl+C` prints how to resume. - **Offline.** If the sidecar is unreachable the header shows an offline banner; the CLI auto-starts a local sidecar on first use. ## Streaming Live, incremental output (ADR-0133). Streaming is **polling-based** today — the sidecar transport is request/response, so there is no server-push channel yet; a future sidecar contract can add one behind the same subscription interface. | Command | Description | |---|---| | `chat --stream` | Render assistant tokens incrementally as they arrive (falls back to `--wait` polling) | | `runs tail` / `runs watch ` | Poll-based live run/event tails | | `logs tail` / `audit tail` / `triggers tail` | Poll-based live event tails | Streams are cancellable and deadline-bounded (`--timeout-ms`, `AKOS_STREAM_INTERVAL_MS`) so they never block a CI pipeline. When streaming is unavailable, the polling fallback remains. ## Global flags These flags are accepted by most commands: | Flag | Description | |---|---| | `--help`, `-h` | Display help for the command | | `--json` | Emit machine-readable JSON output (where supported) | | `--stream` | (chat) render incremental assistant tokens | ## Exit codes Cross-cutting codes shared by the sidecar-backed command families (the canonical contract; centralised in `os-cli`'s `lib/exit-codes.ts`): | Code | Meaning | |---|---| | `0` | Success | | `1` | Runtime / network / I/O error | | `2` | Invalid arguments, usage, or invalid config | | `5` | Requested resource not found (run, flow, agent, tool, inbox item) | Some commands additionally use command-specific codes, documented per command: `3` (pre-flight / input-file read failure), `4` (conflict / already exists), `6` (unsatisfied governance gate), `7` (missing credentials), `8` (registry entry not found), `9` (state mismatch — stored state diverges from request), `10` (lockfile drift — `lock --check` found drift vs the current config). > Note: lockfile drift is exit code `10`, distinct from `5` (NOT_FOUND). ## Related topics - **[CLI index](/docs/cli)** — install, `doctor`, shell completion, CI tokens - **[Using the App](/docs/using-the-app)** — screen guides for the same workspace - **[Run lifecycle](/docs/how-it-works/run-lifecycle)** — governed path behind `run`, `pipelines`, and `audit` ## Server, CI, and non-TTY usage `akos` is safe to run on headless servers, in SSH sessions, and in CI without a graphical shell: - **Authentication.** Set `AKOS_TOKEN` in the environment to skip the interactive `auth login` device-code flow. `auth login` detects the variable and exits `0`. - **Machine output.** Pass `--json` to any `list`/`show`/`get`/`status` command for parseable stdout. Diagnostics go to stderr, so `... --json | jq` stays clean. - **Mutations never block.** Destructive commands (`workspaces delete`, `config set`) require `--confirm`. In a non-TTY context they fail fast with a hint instead of waiting for input — they never hang a pipeline. - **`config edit` is interactive only.** It opens `$EDITOR` and therefore requires a TTY. In CI use `config set --confirm` (scripted) or `config validate` (read-only) instead. - **Sidecar reachability.** Commands marked "requires sidecar" call the local workspace sidecar (`akos serve`). Point the CLI at a remote sidecar with `AKOS_HEADLESS_URL`; tune the per-call deadline with `AKOS_SIDECAR_TIMEOUT_MS` (default 15 000 ms). Sidecar calls have deadlines and render typed errors with actionable hints. `akos status` reports whether the sidecar is reachable. - **Color.** ANSI color is disabled automatically when stdout is not a TTY, when `NO_COLOR` is set, or under `CI`. Set `FORCE_COLOR` to override. Watch/tail commands emit plain newline-delimited records suitable for log capture. Source: /raw/cli/command-reference.mdx ### cli/configuration.mdx --- title: Configuration description: Initialize workspaces, validate and diff config files, trace config layer provenance, migrate schemas, and generate lockfiles. --- AKOS workspaces are defined by a single YAML file (`akos.config.yaml`). The CLI provides a set of commands for creating, verifying, comparing, explaining, and migrating these configuration files, plus a lockfile system for reproducible deployments. ## Initializing a workspace To scaffold a new workspace in the current directory: ```bash akos init ``` To initialize in a specific directory: ```bash akos init ./my-workspace ``` This creates: - `akos.config.yaml` — the workspace config - `.agentskitos/` — the runtime data directory - `.gitignore` — pre-populated to exclude `.agentskitos/` and `.env` files ### init options | Flag | Description | |---|---| | `[dir]` | Target directory (default: current directory) | | `--id ` | Workspace ID (default: slugified directory name) | | `--name ` | Display name (default: directory basename) | | `--force` | Overwrite an existing `akos.config.yaml` | | `--non-interactive` | Never prompt; use only flags and defaults | | `--template ` | Scaffold from a starter template | Available templates: `hello-agent` (seeds a minimal agent and flow). ```bash akos init --template hello-agent ``` After scaffolding with `hello-agent`, you can immediately do a dry run: ```bash akos run akos.config.yaml --mode dry_run ``` ## Validating a config file ```bash akos config validate akos.config.yaml ``` Exits 0 when the file is valid, or exits 1 and prints each validation error with its field path and message. Works with both YAML and JSON config files. ## Diffing two config files ```bash akos config diff akos.config.yaml akos.config.new.yaml ``` Outputs a structural diff: - `+` path: value — key added - `- path`: value — key removed - `~ path`: old → new — value changed Exits 0 whether or not there are changes. Useful in CI to detect unexpected config drift between environments. ## Explaining config layer provenance When you run AKOS with multiple config layers (defaults, global, workspace, env, runtime), `config explain` shows which layer set each leaf value in the merged result: ```bash akos config explain \ --defaults defaults.yaml \ --workspace akos.config.yaml ``` Use any combination of the layer flags: | Flag | Description | |---|---| | `--defaults ` | Defaults layer config path | | `--global ` | Global layer config path | | `--workspace ` | Workspace layer config path | | `--env ` | Env layer config path | | `--runtime ` | Runtime layer config path | At least one flag is required. The command prints a table of every leaf value and the layer that supplied it, followed by the fully merged config value. ## Migrating a config to a newer schema ```bash akos config migrate akos.config.yaml ``` Migrates the config to the current schema version. Prints a list of migration steps applied and the resulting config. To target a specific version: ```bash akos config migrate akos.config.yaml --to 2 ``` If no migration steps are needed (the config is already current), the command exits 0 with `(no migrations needed)`. ## Lockfiles A lockfile (`akos.lock`) pins the exact versions and content hashes of agents, flows, plugins, and providers in a workspace config. Check it into source control to ensure reproducible deployments. ### Generate a lockfile ```bash akos lock akos.config.yaml ``` Writes `akos.lock` next to the config file. To write to a different path: ```bash akos lock akos.config.yaml --out /path/to/akos.lock ``` ### Verify a lockfile has not drifted ```bash akos lock akos.config.yaml --check ``` Compares the existing lockfile against the current config. Exits 0 when they match, or exits 10 (lockfile drift) and lists drift issues. Use this in CI to catch unintended config changes. ### Sync installed versions After verifying the lockfile, use `sync` to apply any version drift between the lockfile and your installed packages: ```bash # Check for drift (default — no changes made) akos sync # Apply drift (install/upgrade to match the lockfile) akos sync --apply # Restrict scope akos sync --plugins-only akos sync --core-only # Point to a non-default lockfile akos sync --lock /path/to/akos.lock ``` ## Related topics - **[General workspace settings](/docs/using-the-app/workspaces)** — export/import and runtime sections. - **[Route-only Config screen](/docs/using-the-app/route-only-screens)** — copilot, orchestration, privacy tabs. - **[Migrating to AKOS](/docs/cli/migrating)** — import flows and migrate local state to cloud. Source: /raw/cli/configuration.mdx ### cli/connections.mdx --- title: Connections description: List integration connections, read the setup registry, provision connectors, and preflight readiness from the CLI. --- The `connections` commands manage **integration connections** — typed records that flows, agents, and triggers reference for OAuth apps, webhooks, SQL, LLM providers, and more. Credential **values never appear on the command line**. Store secrets with `vault put` or `secrets set`, then reference a vault key when provisioning a connection. ## Prerequisites ```bash akos auth login akos serve # or AKOS_HEADLESS_URL for a remote sidecar ``` See **[Authentication](/docs/cli/authentication)** for login, vault, secrets, and `creds` workflows. ## List connections ```bash akos connections list akos connections list --kind slack --json ``` ## Read one connection ```bash akos connections get slack-main --json akos connections sql-get analytics-db --json ``` ## Integration setup registry The setup registry powers the assistant, Connections UI, and this CLI surface. Print provider-specific guidance before wiring credentials: ```bash akos connections guide slack akos connections guide discord --json akos connections guide --category llm --implemented-only ``` Each entry includes: - Preferred setup mode (OAuth, bot install, guided secret, …) - Required scopes and health-check RPC method - Assistant-safe wording hints - Links to external credential pages when applicable This mirrors the **[Integration setup](/docs/using-the-app/integration-setup)** product guide and `akos creds guide`. ## Provision a connection ```bash akos connections set \ --id slack-main \ --kind slack \ --label "Engineering Slack" \ --secret-id SLACK_BOT_TOKEN ``` Use `--no-auth` for connections that do not require stored credentials. Optional flags: `--scopes` (comma-separated), `--schema`, `--workspace`. Supported kinds: `slack`, `github`, `linear`, `discord`, `email`, `cron`, `file`, `webhook`, `cdc`, `twilio`, `sentry`, `pagerduty`, `stripe`, `s3`, `mcp`, `llm`. ## Remove a connection ```bash akos connections rm my-slack ``` Removing a connection does not delete the underlying vault secret. ## Preflight readiness Before a demo or deploy, verify that required credential **keys** exist (values are never printed): ```bash akos connectors test --workspace default akos connectors test --workspace default --kind slack --json ``` ## External automation API keys Scoped keys for `/v1/automations/*` are provisioned through the Connections UI (**External apps**) or the sidecar integration surface — not via a separate CLI verb today. See **[Public automation API](/docs/using-the-app/public-automation-api)** for request shapes after keys exist. ## Related topics - **[Connections in the app](/docs/using-the-app/connections)** — OAuth cards, SQL, cloud sync, coding agents. - **[Authentication](/docs/cli/authentication)** — `vault`, `secrets`, and `creds check`. - **[Integration setup](/docs/using-the-app/integration-setup)** — guided setup narrative for operators. - **[Triggers](/docs/cli/triggers)** — SaaS triggers that share OAuth connections. - **[Command reference](/docs/cli/command-reference)** — full `connections.*` and `connectors` tables. Source: /raw/cli/connections.mdx ### cli/costs-observability.mdx --- title: Costs and Observability description: Inspect spend, budgets, usage limits, traces, metrics, and anomaly rules from the CLI. --- Cost and observability commands read the same meters and telemetry exporters as the **[Cost](/docs/using-the-app/cost)** screen and **[Activity](/docs/using-the-app/runs-and-observability)** traces view. All verbs require sidecar reachability unless noted. ## Cost summary ```bash akos costs summary akos costs summary --workspace default --window-hours 168 --json ``` Aggregate spend for the configured window (default: recent hours). ## Breakdown ```bash akos costs breakdown --group-by provider --from 2026-07-01 --to 2026-07-05 akos costs breakdown --group-by role --provider openai --json ``` `groupBy` is required by the sidecar contract (`provider`, `role`, `workspace`, …). ## Budgets and alerts ```bash akos costs budgets --json akos costs alerts --json akos costs list --json ``` `costs list` returns itemized rows suitable for CSV piping; `costs alerts` surfaces budget threshold breaches. ## Tenant usage meter Cloud tenants expose backend-computed usage limits (do not recompute limits in scripts): ```bash akos usage status --json akos usage watch --once --json akos usage watch --sse --timeout-ms 60000 ``` `usage watch` exits non-zero when status is `blocked` or `exceeded` — useful in CI guardrails. ## Per-run cost For a single execution, use the runs cockpit: ```bash akos runs show --json akos runs logs --json ``` Token and USD fields appear in the enriched run detail payload. ## Observability ```bash akos observability status --json akos observability metrics tokens.in --range 24h --json akos observability traces --json akos observability logs --workspace default --json ``` Metrics ids include `tokens.in`, `tokens.out`, `cost.totalUsd`, `errors.count`, and `p99.latencyMs`. ### Anomaly rules ```bash akos obs anomaly-rules --json ``` Companion to `observability` — lists structured anomaly rules and paused state. ### Live tails Poll-based streaming (ADR-0133) — safe for CI with deadlines: ```bash akos logs tail --interval 2000 --workspace default akos runs tail --interval 1500 akos runs watch --json ``` Set `AKOS_STREAM_INTERVAL_MS` to tune poll cadence. ## Interactive shell shortcuts In `akos chat --interactive` or `--tui`, slash commands mirror these surfaces: - `/cost` — spend summary for the session window - `/runs`, `/run `, `/watch `, `/logs ` — run inspection - `/tail ` — snapshot status + recent events See **[Command reference](/docs/cli/command-reference)** › Interactive shell. ## Related topics - **[Cost in the app](/docs/using-the-app/cost)** — budgets, billing tab, spend charts. - **[Activity](/docs/using-the-app/runs-and-observability)** — run list, traces, observability health. - **[Flows and Runs](/docs/cli/flows-and-runs)** — `runs show`, `runs watch`, retention prune. - **[Dashboard](/docs/using-the-app/dashboard)** — live cost summary card. - **[Command reference](/docs/cli/command-reference)** — full `costs`, `usage`, and `observability` tables. Source: /raw/cli/costs-observability.mdx ### cli/deploying.mdx --- title: Deploying description: Publish and deploy plugins, run the local sidecar, migrate to cloud, and manage workspace snapshots. --- AKOS supports several deployment workflows: publishing plugins for the marketplace, running the local sidecar for development, migrating self-hosted data to cloud infrastructure, and scheduling workspace snapshots. ## Publishing a plugin The `publish` command packages a plugin into a signed, integrity-verified bundle for the AKOS marketplace. ### Plugin structure Your plugin directory should contain: - `agentskit-os.plugin.yaml` — the plugin manifest - `dist/` — compiled asset files ### Build the bundle ```bash akos publish ``` By default this reads the manifest from `./agentskit-os.plugin.yaml`, packages assets from `./dist/`, and writes `./agentskit-os.bundle.json`. For development or internal bundles, skip the signature requirement: ```bash akos publish --unsigned ``` ### publish options | Flag | Description | |---|---| | `[dir]` | Plugin source directory (default: `.`) | | `--manifest ` | Override manifest path | | `--assets ` | Override assets directory | | `--out ` | Override bundle output path | | `--unsigned` | Emit an unsigned manifest (for dev/internal use) | | `--registry-url ` | POST the bundle to a marketplace publish endpoint | | `--publisher-id ` | Publisher ID (default: `manifest.id`) | ## Deploying a bundle After building with `publish`, use `deploy` to verify asset integrity and hand the bundle to a publisher backend. ```bash akos deploy ``` By default reads `./agentskit-os.bundle.json` and verifies each asset's SHA-256. To verify only without publishing: ```bash akos deploy --dry-run ``` ### deploy options | Flag | Description | |---|---| | `[bundle]` | Bundle JSON path (default: `agentskit-os.bundle.json`) | | `--assets ` | Override assets directory (default: `/dist`) | | `--publisher ` | Publisher backend (default: `in-memory`) | | `--dry-run` | Verify only; skip the publish call | ## Installing a plugin To fetch, verify, and install a plugin from a registry URL: ```bash akos install ``` The CLI fetches the payload (manifest + bundle + signature), verifies the signature, resolves permissions, and writes the plugin to `~/.agentskitos/plugins///`. ```bash # Allow installation of an unsigned bundle (internal use only) akos install --allow-unsigned # Declare permitted permissions akos install --allow-permission files:read --allow-permission network:egress # Override install root akos install --install-root /opt/akos/plugins ``` ## Running the local sidecar The `serve` command starts the local workspace sidecar, which provides the JSON-RPC surface that the desktop app and CLI commands such as `hitl`, `triggers`, `vault`, and `connections` communicate with. ```bash akos serve ``` The process stays running and streams JSON-RPC over stdin/stdout. Use this during local development. To accept webhook deliveries from external systems, bind to all interfaces: ```bash akos serve --public ``` Pin the webhook port: ```bash akos serve --public --webhook-port 4242 ``` > When `--public` is used, the CLI prints a security warning. Always run behind a firewall or trusted tunnel and ensure every webhook trigger verifies its signature. ## Exposing the capability catalog over MCP To allow an external AI agent to query the AKOS capability catalog via the Model Context Protocol: ```bash akos mcp-serve ``` Spawns the MCP server over stdio. The external agent connects via JSON-RPC and can call `doc.search`, `doc.get`, and `capabilities.list`. ## Migrating from self-hosted to cloud The `migrate-to-cloud` command streams your local workspace data (SQLite tables and blob objects) to a cloud Postgres database and optionally an S3 bucket. ```bash akos migrate-to-cloud \ --org my-org-id \ --source ~/.agentskit \ --target postgres://user:pass@host/dbname ``` To preview the migration plan without writing any data: ```bash akos migrate-to-cloud \ --org my-org-id \ --source ~/.agentskit \ --target postgres://... \ --dry-run ``` To resume a previously interrupted migration: ```bash akos migrate-to-cloud \ --org my-org-id \ --source ~/.agentskit \ --target postgres://... \ --resume ``` A checkpoint file at `/.migrate-checkpoint.json` tracks progress. Rows and blobs already migrated are skipped (`ON CONFLICT DO NOTHING`). ### Blob migration (S3) Set environment variables before running if you want to migrate blob objects alongside relational data: ```bash export AKOS_S3_BUCKET=my-akos-bucket export AKOS_S3_REGION=us-east-1 akos migrate-to-cloud \ --org my-org-id \ --source ~/.agentskit \ --target postgres://... ``` ### migrate-to-cloud options | Flag | Description | |---|---| | `--org ` | Organization ID to migrate (required) | | `--source ` | Path to the local data directory (required) | | `--target ` | Cloud Postgres connection URL (required) | | `--dry-run` | Print migration plan only; do not write to target | | `--resume` | Resume using the checkpoint file | ## Snapshot scheduling The `snapshot schedule` command writes a snapshot scheduling and retention policy for your workspace. It does not install cron or systemd tasks — it records the configuration and prints a suggested cron line you can install yourself. ```bash akos snapshot schedule ``` Customize the schedule and retention: ```bash akos snapshot schedule \ --dir ./backups/snapshots \ --cron "0 3 * * *" \ --daily 7 \ --weekly 4 \ --monthly 12 ``` ### snapshot schedule options | Flag | Description | |---|---| | `--dir ` | Snapshot directory (default: `./.agentskitos/snapshots`) | | `--cron ` | Cron expression (default: `0 2 * * *` — 2 AM daily) | | `--daily ` | Keep snapshots for N distinct days (default: 7) | | `--weekly ` | Keep snapshots for N distinct ISO weeks (default: 4) | | `--monthly ` | Keep snapshots for N distinct months (default: 12) | After running, the CLI prints the saved config path and a suggested cron entry to run `snapshot retention` on the same schedule. ## Telemetry AKOS collects anonymous, opt-in usage telemetry. No secret values are ever included. ```bash # Check current consent status akos telemetry status # Opt in akos telemetry enable # Opt out akos telemetry disable # Export stored events (JSON by default) akos telemetry export # Export as CSV akos telemetry export --csv # Export events since a specific date akos telemetry export --since 2024-01-01T00:00:00Z # Preview event counts without printing values akos telemetry export --dry-run ``` ## Related topics - **[Migrating to AKOS](/docs/cli/migrating)** — `migrate-to-cloud` walkthrough (also covered above) - **[Configuration](/docs/cli/configuration)** — `lock`, `sync`, and workspace export/import - **[Connections](/docs/cli/connections)** — preflight integrations before go-live - **[Knowledge and RAG](/docs/cli/knowledge-and-rag)** — `prod seed` for assistant documentation - **[Command reference](/docs/cli/command-reference)** — `publish`, `install`, `serve`, `mcp-serve`, snapshots Source: /raw/cli/deploying.mdx ### cli/flows-and-runs.mdx --- title: Flows and Runs description: Create flows from templates, execute them, inspect results, model what-if changes, and manage human-in-the-loop approvals. --- Flows are the unit of work in AKOS: a directed graph of agent and tool nodes that executes a multi-step process. The CLI lets you scaffold flows from built-in templates, run them in several modes, inspect their output, and project the impact of model or configuration changes. ## Creating a flow ### Browse templates ```bash akos flow new --list ``` Filter templates by persona: ```bash akos flow new --list --persona developer ``` ### Scaffold a flow into your workspace config ```bash akos flow new ``` For example: ```bash akos flow new summarize-slack-dms ``` This merges the template's flow (and any required agents) into your `akos.config.yaml`. If a flow with the same ID already exists, the command exits with an error unless you pass `--replace`. ### flow new options | Flag | Description | |---|---| | `--list` | List available templates and exit | | `--persona

` | With `--list`, filter/order templates for a persona | | `--target ` | Config file to merge into (default: `akos.config.yaml`) | | `--flow-id ` | Override the scaffolded flow ID | | `--replace` | Replace an existing flow with the same ID | | `--estimate` | Print a hint to run a cost estimate after scaffolding | | `--visual` | Also write a visual layout document under `.agentskitos/flows/` | | `--visual-out ` | Write the visual layout document to a custom path | ## Running a flow ```bash akos run akos.config.yaml ``` By default, flows run in `dry_run` mode — the flow graph is traversed and logged but no LLM calls or external side effects are made. This is safe for testing your configuration. ### Run modes | Mode | Description | |---|---| | `dry_run` | Traverse the flow without LLM calls or side effects (default) | | `real` | Execute fully with live LLM calls and tool actions | | `durable` | Like `real`, but checkpointed so interrupted runs can be resumed | ```bash # Dry run (default) akos run akos.config.yaml # Live run akos run akos.config.yaml --mode real # Durable run (checkpointed) akos run akos.config.yaml --mode durable --store ./run-checkpoints ``` ### Selecting a specific flow When your config has multiple flows, specify which one to run: ```bash akos run akos.config.yaml --flow summarize-slack-dms ``` ### Resuming an interrupted run ```bash akos run akos.config.yaml \ --mode durable \ --store ./run-checkpoints \ --resume ``` `--resume` requires `--store`. ### Cost estimate Print an estimated cost and exit without executing the flow: ```bash akos run akos.config.yaml --estimate ``` ### run options | Flag | Description | |---|---| | `--flow ` | Flow ID to execute (required when config has multiple flows) | | `--mode ` | Run mode: `dry_run`, `real`, `durable` (default: `dry_run`) | | `--workspace ` | Override workspace ID | | `--store

` | Checkpoint directory for durable mode | | `--resume ` | Resume an existing run (requires `--store`) | | `--estimate` | Print cost estimate and exit | | `--force` | Skip budget limit check | | `--strict` | In `real` mode, error when LLM credentials are missing instead of falling back | | `--quiet` | Suppress per-node event output | ## Listing past runs ```bash akos runs list ``` Shows recent runs with their flow ID, status, cost, and token counts. Add `--json` for structured output. Use `--limit ` to control how many results are returned. ## Fetching a single run To fetch one run row by id via the sidecar: ```bash akos runs get ``` Add `--json` for the raw run row. The command returns `null` when no run matches the id. ## Explaining a run After a coding agent run that captured artifact bundles, use `explain` to get a plain-English step-by-step walkthrough: ```bash akos explain --artifact-dir ./run-artifacts ``` Filter to a specific run ID: ```bash akos explain --artifact-dir ./run-artifacts --run-id ``` Output as structured JSON: ```bash akos explain --artifact-dir ./run-artifacts --json ``` The `--artifact-dir` should point to the directory passed to `--capture-run-artifacts` when the run was started. ## What-if analysis Project how a change to token budget, latency, cost, or pass rate would affect your historical runs without re-running them. Prepare a JSON file of past run snapshots: ```json [ { "id": "run-1", "costUsd": 0.005, "latencyMs": 900, "passed": true }, { "id": "run-2", "costUsd": 0.007, "latencyMs": 1200, "passed": false } ] ``` Then project the impact: ```bash # What if we switched to a model that costs 30% less? akos whatif runs.json --cost 0.7 # What if tokens were reduced by 20% and latency improved by 10%? akos whatif runs.json --tokens 0.8 --latency 0.9 # What if pass rate dropped by 5 percentage points? akos whatif runs.json --pass -0.05 ``` Options: | Flag | Description | |---|---| | `--tokens ` | Token count multiplier (e.g. `0.7` = 30% fewer tokens) | | `--latency ` | Latency multiplier | | `--cost ` | Cost multiplier | | `--pass ` | Pass-rate delta in the range `[-1, 1]` | | `--json` | Emit JSON instead of the summary table | ## Human-in-the-loop (HITL) approvals When a flow escalates a decision to a human reviewer, use `hitl` to list and act on pending escalations via the running workspace sidecar. ### List escalations ```bash # All escalations akos hitl list # Filter by status akos hitl list --status open akos hitl list --status approved akos hitl list --status rejected ``` ### Approve an escalation ```bash akos hitl approve # With a note and signer akos hitl approve \ --note "Reviewed and looks correct" \ --signer alice@example.com ``` ### Reject an escalation ```bash akos hitl reject --note "Data quality issue — re-run after fix" ``` `--note` is required when rejecting. ### Reassign an escalation ```bash akos hitl reassign bob@example.com ``` ### Submit a counter-proposal ```bash akos hitl modify "Use the revised budget figure of 42000" ``` All HITL commands require the workspace sidecar to be running (`akos serve`). ## Runs retention To prune old run records: ```bash akos runs retention prune ``` This command removes run records beyond the configured retention policy. Use `--dry-run` to preview what would be deleted. ## Related topics - **[Workflows in the app](/docs/using-the-app/flows)** — visual editor, snapshots, import wizard. - **[Activity](/docs/using-the-app/runs-and-observability)** — live run monitor and trace drill-down. - **[Inbox](/docs/using-the-app/inbox)** — approve or reject paused human-gate steps. - **[Run lifecycle](/docs/how-it-works/run-lifecycle)** — governed path from trigger to audit ledger. - **[Triggers](/docs/cli/triggers)** — cron, webhook, and file-watch automation. Source: /raw/cli/flows-and-runs.mdx ### cli/index.mdx --- title: AKOS CLI description: Set up the akos command line, run your first health check, and configure shell completion. --- The AKOS CLI (`akos`) lets you manage every part of your AKOS workspace from a terminal: initialize workspaces, run flows, manage agents, configure triggers, operate secrets, and deploy plugins — all scriptable and CI-friendly. ## Requirements - An active AKOS workspace (self-hosted desktop or cloud tenant) - Credentials for that workspace from your AKOS administrator ## Installation The `akos` CLI is provided as part of your AKOS enterprise plan. Your administrator distributes the build for your platform and your CI environment. If you don't have it yet, contact your AKOS administrator or account team for access. Once it's installed, confirm it's available: ```bash akos --version ``` ## First run: doctor Before doing anything else, run the built-in diagnostics to confirm the CLI is configured correctly: ```bash akos doctor ``` `doctor` checks: - Node.js version compatibility - Platform support - Whether the core AKOS runtime is linked - The `AGENTSKITOS_HOME` data directory - Available trigger kinds To also verify that your AI provider credentials are present (no secret values are printed): ```bash akos doctor --creds ``` To run a live connectivity probe (LLM round-trip + sandbox check, 10-second timeout): ```bash akos doctor --live ``` ### doctor options | Flag | Description | |---|---| | `--live` | Run live LLM and sandbox probes | | `--creds` | Check AI provider credential presence | | `--air-gap` | Skip cloud providers when checking credentials | | `--provider ` | Restrict credential check to one provider (repeatable) | | `--env-prefix ` | Environment variable prefix to scan (default: `AGENTSKITOS_`) | | `--secrets-file ` | Merge key names from a dotenv-style file into the credentials check | | `--no-probes` | Skip vault and keychain probes | | `--init-audit-key ` | Pre-generate an ed25519 audit signing key for a workspace and exit | ## Getting help Every command and subcommand accepts `--help`: ```bash akos --help akos run --help akos config validate --help ``` ## Shell completion Generate and install a completion script for your shell so you can tab-complete commands and flags. **Bash** — add to `~/.bashrc`: ```bash eval "$(akos completion bash)" ``` **Zsh** — add to `~/.zshrc`: ```bash eval "$(akos completion zsh)" ``` **Fish** — save to the completions directory: ```bash akos completion fish > ~/.config/fish/completions/akos.fish ``` Supported shells: `bash`, `zsh`, `fish`. ## Checking for updates ```bash akos upgrade ``` To print the current and latest version without installing: ```bash akos upgrade --check ``` ## CI environments When the environment variable `AKOS_TOKEN` is set, `auth login` is skipped automatically. This is the recommended pattern for non-interactive CI pipelines. ## Topic guides Walkthroughs for the most common operator paths (each links to the full command table): | Guide | Covers | |---|---| | [Authentication](/docs/cli/authentication) | Login, vault, secrets, creds | | [Connections](/docs/cli/connections) | Setup registry, provision integrations, preflight | | [Agents](/docs/cli/agents) | Registry, versions, promotion, compare | | [Flows and Runs](/docs/cli/flows-and-runs) | Scaffold, run, watch, HITL, retention | | [Processes (Pipelines)](/docs/cli/pipelines) | Multi-phase runs, resume, cancel | | [Triggers](/docs/cli/triggers) | Cron, webhook, file-watch, sidecar ops | | [Knowledge and RAG](/docs/cli/knowledge-and-rag) | Sources, search, prod seed, assistant docs | | [Security and Governance](/docs/cli/security-governance) | Posture, firewall, audit, compliance | | [Costs and Observability](/docs/cli/costs-observability) | Spend, usage limits, traces, tails | | [Chat and shell](/docs/cli/chat) | Copilot one-shot, readline, TUI, slash commands | | [Configuration](/docs/cli/configuration) | Validate, diff, lockfile, sync | | [Migrating to AKOS](/docs/cli/migrating) | Import workflows, migrate-to-cloud | | [Deploying](/docs/cli/deploying) | Plugins, sidecar, snapshots, telemetry | ## Reference - [Using the App](/docs/using-the-app) — the same workspace from the browser or desktop UI - [Command Reference](/docs/cli/command-reference) — every top-level command in one table Source: /raw/cli/index.mdx ### cli/knowledge-and-rag.mdx --- title: Knowledge and RAG description: Manage knowledge sources, search the index, reindex folders, and seed assistant documentation from the CLI. --- The CLI exposes two complementary surfaces for retrieval-augmented generation: - **`knowledge`** — source lifecycle (list, add, remove, reindex, status) plus workspace search. - **`rag`** — agent-facing retrieval and ingestion helpers (`search`, `ingest`, `status`). Both commands call the sidecar. Loader credentials are **never** passed on the command line — provision secrets with `vault put` or `secrets set` first, then reference a `location` when adding a source. ## Prerequisites ```bash akos serve # local sidecar (or point AKOS_HEADLESS_URL at a remote sidecar) akos knowledge list ``` ## Manage sources ### List sources ```bash akos knowledge list akos knowledge list --json ``` ### Add a source ```bash # Local folder akos knowledge add my-docs ./docs/product # Remote kinds (credentials resolved server-side) akos knowledge add handbook https://example.com/docs --kind url --name "Product handbook" akos knowledge add repo-docs github:org/repo --kind github ``` | Flag | Description | |---|---| | `--kind` | `folder`, `url`, `s3`, `notion`, `drive`, or `github` (default: `folder`) | | `--name` | Display name (defaults to the source id) | | `--json` | Emit the created source as JSON | ### Remove a source ```bash akos knowledge remove my-docs ``` Drops the source and its index. ### Reindex ```bash akos knowledge reindex my-docs # alias: akos knowledge rebuild my-docs ``` Queues a full digest rebuild for one source. ### Indexer status ```bash akos knowledge status akos knowledge status --json ``` ## Search Search the workspace index (alias: `query`): ```bash akos knowledge search "how do I configure egress" akos knowledge search "onboarding checklist" --source my-docs --top-k 10 --json ``` The companion `rag` command exposes the same retrieval path for automation: ```bash akos rag search "sandbox policy" --top-k 5 --json akos rag ingest my-docs akos rag status --json ``` Use `knowledge` when managing sources; use `rag` when scripting retrieval inside agent tooling. ## Seed assistant documentation (operators) To index the shipped documentation corpus so the in-app assistant can retrieve repo docs (beyond the always-on contract catalog), use the ledgered production seed: ```bash # Preview what would be registered akos prod seed --target assistant-knowledge --dry-run # Apply folder sources + record the seed ledger akos prod seed --target assistant-knowledge --apply # Rebuild indexes after apply akos knowledge reindex assistant-knowledge-for-agents akos knowledge reindex assistant-knowledge-user-docs ``` | Flag | Description | |---|---| | `--dry-run` | Report planned/missing/stale seed entries without writing | | `--apply` | Apply missing or stale seeds and update the ledger | | `--force` | With `--apply`, re-apply even when checksums already match | | `--target` | `demo` (default) or `assistant-knowledge` | | `--vertical` | Limit demo seeds to one vertical pack | | `--base-dir` | Override the packs directory | Until rebuild completes, fumadocs pages are not in assistant RAG folder search — the contract catalog in the system prompt is always on. ## Demo vertical packs Materialise demo pack fixtures into sidecar stores (development / sales demos): ```bash akos seed --vertical coding akos prod seed --target demo --dry-run akos prod seed --target demo --apply --vertical finance ``` Set `AKOS_DEMO_PACKS=1` in the sidecar environment when demo packs are gated in your deployment. ## Related topics - **[Knowledge in the app](/docs/using-the-app/knowledge)** — UI for sources and flow RAG nodes. - **[Integration setup](/docs/using-the-app/integration-setup)** — OAuth providers for Notion/Drive/GitHub sources. - **[Authentication](/docs/cli/authentication)** — `vault put` and `secrets set` for loader credentials. - **[Command reference](/docs/cli/command-reference)** — full `knowledge` / `rag` / `prod seed` tables. Source: /raw/cli/knowledge-and-rag.mdx ### cli/migrating.mdx --- title: Migrating to AKOS description: Bring your existing automations with you — import flows from n8n, LangChain, LangGraph, Langflow, Flowise, and Dify, and migrate local data to the cloud. --- AKOS is designed to sit on top of what you already have, not to make you start over. If you have already built automations in another tool, you can bring them across instead of rebuilding them by hand. And when you outgrow a local deployment, you can move your data to the cloud without losing history. ## Importing from other tools The `akos import` command translates a third-party workflow export into an AKOS config (agents + flows). It auto-detects the source format, or you can force it with `--source`. Supported sources: **n8n**, **LangChain**, **LangGraph**, **Langflow**, **Flowise**, and **Dify**. ```bash akos import ./my-export.json ``` This prints the resulting AKOS config (YAML) to stdout. To write it to a file: ```bash akos import ./my-export.json --out akos.config.yaml ``` To push the converted flows straight into a running workspace via the sidecar (instead of writing a file): ```bash akos import ./my-export.json --apply ``` ### Flags | Flag | Purpose | |---|---| | `--out ` | Write the resulting YAML to a file instead of stdout. | | `--apply` | Upsert the converted flow(s) directly into the running workspace via the sidecar. Mutually exclusive with `--out`. | | `--source ` | Force the importer source (`n8n`, `langchain`, `langgraph`, `langflow`, `flowise`, `dify`) instead of auto-detecting. | | `--workspace ` | Override the workspace id from the imported file. | | `--quiet` | Suppress the warning summary. | ### What gets converted, and warnings The importer maps the source's nodes and connections onto AKOS **agents** and **flows**. Constructs that have no direct AKOS equivalent are reported as warnings at the end of the run — the import still succeeds, and the warnings tell you exactly what to wire up by hand afterward. Review the generated config, fill in any flagged gaps, then validate it: ```bash akos config validate akos.config.yaml ``` ## Migrating local data to the cloud When you start on the desktop app or a local deployment and later move to the multi-tenant cloud, `akos migrate-to-cloud` streams your local state (the SQLite filesystem store) into a cloud Postgres + object-store target. ```bash akos migrate-to-cloud \ --org \ --source ~/.agentskit \ --target postgres://... \ --dry-run ``` | Flag | Purpose | |---|---| | `--org ` | The target cloud organization. | | `--source ` | The local state directory to migrate from. | | `--target ` | The destination Postgres connection string. | | `--dry-run` | Print the migration plan only — no writes. | | `--resume` | Resume an interrupted migration from its checkpoint. | The migration is **idempotent** (rows insert with conflict-skip, blobs already present are skipped) and **resumable** — a checkpoint file at `/.migrate-checkpoint.json` lets an interrupted run pick up where it left off. Run with `--dry-run` first to review the plan before applying. ## Related topics - **[Workflows in the app](/docs/using-the-app/flows)** — review imported flows in the visual editor. - **[Agents in the app](/docs/using-the-app/agents)** — registry entries materialized from imports. - **[Configuration](/docs/cli/configuration)** — validate, diff, and lock the config your import produces. - **[Getting Started](/docs/getting-started)** — the three ways to run AKOS (web, desktop, CLI). Source: /raw/cli/migrating.mdx ### cli/pipelines.mdx --- title: Processes (Pipelines) description: List processes, dispatch multi-phase pipeline runs, and resume or cancel runs paused at approval gates. --- The `pipelines` command family operates **processes** — ordered phases that chain flows with JSONPath data handoff and optional human approval gates. The UI calls them **Processes**; the RPC namespace is `pipelines.*` (with deprecated `sdlc.*` aliases). All `pipelines` verbs require a running sidecar (`akos serve` locally, or `AKOS_HEADLESS_URL` for remote). ## List processes ```bash akos pipelines list akos pipelines list --json ``` ## Inspect one process ```bash akos pipelines show my-release-pipeline --json ``` Exits with code `5` when the id is not found. ## List process runs ```bash akos pipelines runs akos pipelines runs --pipeline my-release-pipeline --limit 20 --json ``` ## Dispatch a new run ```bash akos pipelines run my-release-pipeline ``` Pass initial context as JSON: ```bash akos pipelines run my-release-pipeline \ --ctx '{"ticketId":"ENG-4821","owner":"alice"}' \ --idempotency-key eng-4821-2026-07-05 ``` In CI or other non-TTY environments, mutations require explicit confirmation: ```bash akos pipelines run my-release-pipeline --confirm --json ``` | Flag | Description | |---|---| | `--ctx ` | JSON object passed as run context | | `--idempotency-key ` | Dedupe duplicate dispatches | | `--confirm` | Skip the interactive confirmation prompt | | `--json` | Emit the raw dispatch payload | ## Resume after approval When a phase requires human approval, the run pauses until a reviewer acts in the **[Inbox](/docs/using-the-app/inbox)** (or via `inbox approve` / `hitl approve`). Resume the process run from the CLI: ```bash akos pipelines resume pipe_run_abc123 --json ``` ## Cancel an in-flight run ```bash akos pipelines cancel pipe_run_abc123 akos pipelines cancel pipe_run_abc123 --confirm # non-TTY ``` ## Typical operator loop ```bash akos pipelines list akos pipelines run quarterly-close --ctx '{"period":"2026-Q2"}' --confirm akos pipelines runs --pipeline quarterly-close --limit 5 # … reviewer approves in Inbox … akos pipelines resume ``` ## Related topics - **[Processes in the app](/docs/using-the-app/pipelines)** — kanban board, chain view, column settings. - **[Flows and Runs](/docs/cli/flows-and-runs)** — single-flow execution and HITL escalations. - **[Inbox](/docs/using-the-app/inbox)** — human approval tasks for gated phases. - **[Concepts: Processes](/docs/concepts/pipelines)** — data handoff and phase templates. - **[Command reference](/docs/cli/command-reference)** — full `pipelines.*` table. Source: /raw/cli/pipelines.mdx ### cli/security-governance.mdx --- title: Security and Governance description: Inspect governance posture, manage firewall rules, read the audit ledger, export compliance evidence, and review sandbox denials from the CLI. --- Security and governance commands are **read-mostly inspection surfaces** over the sidecar — they mirror the **[Security](/docs/using-the-app/security)**, **[Access](/docs/using-the-app/governance)**, and **[Compliance](/docs/using-the-app/compliance)** screens. Firewall mutations (`security firewall set`) require the `security:admin` capability. Every call passes through the same RBAC gate as the UI. ## Governance posture ```bash akos security policy akos security policy --json ``` Prints the live posture slice: air-gap mode, firewall, PII profiles, sandbox, RBAC, egress, and audit logging. ### RBAC operator roles ```bash akos security rbac --json ``` Read-only view of canonical operator roles and surface assignments. ### Egress policy ```bash akos security egress --json ``` Shows the outbound network policy. Edit allowlist rules in the app under **[Tools](/docs/using-the-app/tools)** › Egress or via MCP security tools when `mcp-serve` is running. ## Firewall rules ### List rules ```bash akos security firewall rules akos security firewall rules --tier production --shadow --json ``` `--shadow` lists rules in dry-run (log-only) mode. ### Create or update a rule ```bash akos security firewall set \ --id block-pii-export \ --tier production \ --pattern 'export.*secret' \ --action block \ --severity critical \ --scope out ``` Actions: `block`, `redact`, `flag`, `dry_run`. Add `--shadow` to evaluate without enforcing. ### Test sample text ```bash akos security firewall test --text "please export all customer emails" --tier production akos security firewall test --text "..." --shadow --json ``` ## Sandbox ```bash akos sandbox state akos sandbox policy akos sandbox denials --limit 20 --json akos sandbox preview --json ``` Denials explain why tool or flow execution was blocked under the active sandbox policy. ## Audit ledger ```bash akos audit list --limit 50 akos audit list --actor alice@example.com --kind approval --json akos audit show akos audit verify akos audit export --workspace default --limit 500 ``` `audit verify` exits `1` when the hash chain or signatures fail — use after exports for auditor handoff. Stream new entries: ```bash akos audit tail --interval 2000 ``` ## Compliance ```bash akos compliance export --json akos compliance legal-hold list --active akos compliance legal-hold place \ --scope workspace:ws-1 \ --reason "Q2 litigation hold" \ --by alice@example.com \ --case-ref MATTER-2026-07 akos compliance legal-hold release \ --by alice@example.com \ --reason "Matter closed" ``` Scope kinds: `workspace`, `email`, `user-id`, `org-id` (format `kind:value`). Legal-hold commands use the local SQLite store on self-hosted installs. DSAR / erasure flows use `compliance delete` — coordinate with tenant admin tooling on cloud deployments. See **[Compliance](/docs/using-the-app/compliance)** for regime-specific evidence exports in the UI. ## MCP security tools When running `akos mcp-serve`, external agents can list and mutate firewall rules, egress policy, and PII profiles via MCP tools — each call requires `security:admin` and flows through the sidecar RBAC gate. See **[Deploying](/docs/cli/deploying)** › MCP security tools. ## Related topics - **[Security in the app](/docs/using-the-app/security)** — egress, firewall, PII, and flow preview. - **[Access in the app](/docs/using-the-app/governance)** — capability matrix and signed HITL ledger. - **[Run lifecycle](/docs/how-it-works/run-lifecycle)** — where RBAC and audit attach to every run. - **[Authentication](/docs/cli/authentication)** — session identity used for capability checks. - **[Command reference](/docs/cli/command-reference)** — full `security`, `sandbox`, `audit`, and `compliance` tables. Source: /raw/cli/security-governance.mdx ### cli/triggers.mdx --- title: Triggers description: Add, list, remove, and test flow triggers from the command line, and browse built-in trigger presets. --- Triggers define when and how a flow starts: on a schedule, in response to a webhook, when a file appears, or on a platform event. The `triggers` and `trigger preset` commands manage triggers in your workspace config and interact with the running sidecar. ## Listing trigger kinds To see all supported trigger kinds and their required parameters: ```bash akos triggers kinds ``` ## Listing triggers in a config ```bash akos triggers list ``` By default this reads `akos.config.yaml` in the current directory. Pass a different path with `--config `. ## Adding a trigger ```bash akos triggers add \ --flow \ --kind \ [kind-specific options] ``` For example, to add a cron trigger that fires every day at 09:00: ```bash akos triggers add \ --flow daily-report \ --kind cron \ --cron "0 9 * * *" ``` To add an inbound webhook trigger: ```bash akos triggers add \ --flow inbound-webhook \ --kind webhook ``` Check `akos triggers add --help` for the full list of kind-specific flags. ## Removing a trigger ```bash akos triggers remove ``` Pass `--config ` to target a specific config file. ## Testing a trigger Sends a synthetic event through the sidecar to verify a trigger is wired correctly: ```bash akos triggers test ``` ## Viewing trigger run history List recent executions for a trigger: ```bash akos triggers runs ``` ## Getting the inbound URL for a webhook trigger ```bash akos triggers url ``` Prints the inbound URL that external systems should POST to. ## Enabling or disabling a trigger ```bash # Disable a trigger akos triggers toggle --disable # Re-enable it akos triggers toggle --enable ``` ## Listing trigger contracts To list every registered trigger contract (the trigger kinds the sidecar knows how to dispatch) via the running sidecar: ```bash akos triggers contracts ``` Add `--json` for structured output. This requires the sidecar (`akos serve`). --- ## Trigger presets AKOS ships curated trigger presets — ready-to-copy configurations for common scenarios. Presets are read-only reference material; use them as a starting point when adding triggers. ### List presets ```bash akos trigger preset list ``` Output as JSON: ```bash akos trigger preset list --json ``` ### Show a preset ```bash akos trigger preset show webhook/inbound-generic ``` The command prints the preset's title, description, and the full trigger configuration block you can copy into your config. Output as JSON: ```bash akos trigger preset show webhook/inbound-generic --json ``` --- ## Making your workspace reachable for webhooks By default the sidecar binds its webhook listener to `127.0.0.1` (loopback only). To receive webhooks from external systems, start the sidecar with `--public`: ```bash akos serve --public ``` Pin the webhook port: ```bash akos serve --public --webhook-port 4242 ``` When `--public` is used, the CLI prints a security warning. Run behind a firewall or trusted tunnel and ensure every webhook trigger verifies its signature. ## Related topics - **[Automations in the app](/docs/using-the-app/triggers)** — trigger list, webhook server banner, inline editor. - **[Public automation API](/docs/using-the-app/public-automation-api)** — scoped API keys for external dispatch. - **[Workflows in the app](/docs/using-the-app/flows)** — bind triggers to flow graphs. - **[Flows and Runs](/docs/cli/flows-and-runs)** — execute and inspect runs started by triggers. Source: /raw/cli/triggers.mdx ### concepts/access-control.mdx --- title: Access control description: How AKOS decides who can do what — roles map to capabilities, and sensitive actions like approving a human-in-the-loop step require a specific capability. --- AKOS controls every significant action with role-based access control (RBAC). The model is simple: **people are assigned roles, roles grant capabilities, and each capability unlocks a specific kind of action.** Sensitive actions — approving a paused run, deciding a release gate, granting emergency access, or reading the audit log — require the matching capability, so they can only be performed by someone whose role allows it. ## Roles map to capabilities A **role** is a named bundle of **capabilities**. A capability is a fine-grained permission, such as "approve a human-in-the-loop step" or "read the audit ledger". When you assign someone a role, they receive exactly the capabilities that role carries — nothing more. You manage roles and the capabilities they grant in the [Governance](/docs/using-the-app/governance) screen, using the capability matrix. New members receive the workspace's default role until an administrator assigns them a specific one. Typical roles and what they can do: | Role | Can do | | --- | --- | | **Viewer** | Read workspace data; cannot approve or change governed actions. | | **Editor** | Build and run agents, flows, and processes. | | **Reviewer** | Approve or reject human-in-the-loop steps and release gates. | | **Auditor** | Read the signed audit ledger. | | **Admin** | Manage roles and members, grant break-glass access, and perform every governed action. | Your workspace may define additional or renamed roles — the capability matrix in Governance is the source of truth for your setup. ## Sensitive actions require a capability Some actions are gated because they carry weight: approving them resumes work, releases code, or grants access. AKOS checks the calling person's capability **before** the action runs, and denies it if they lack the matching capability. Examples: - **Approving a human-in-the-loop step** (resuming a paused run) requires the *decide HITL* capability — typically held by **Reviewer** and **Admin**. - **Deciding a release gate** (passing or blocking an SDLC gate) requires the gate-decide capability — typically **Reviewer** and **Admin**. - **Requesting break-glass access** (temporary elevated access for an urgent action) requires the break-glass capability — typically **Admin** only. - **Reading the audit ledger** requires the audit-read capability — typically **Auditor** and **Admin**. A denied action returns a clear authorization error and is itself recorded, so attempts are visible in the [Governance](/docs/using-the-app/governance) history. ## Enforcement applies everywhere Capability checks run at the boundary where every action is dispatched, so they apply consistently across all three surfaces — the desktop app, the managed cloud, and the CLI. A request that bypasses the web sign-in layer (for example, a direct or automated client) still passes through the same capability check, so there is no back door around the access model. ## Single-user and local-first On a single-user, local-first install — the desktop app on your own machine, or a self-hosted sidecar without a separate identity store wired in — there is no team to govern. In that case AKOS resolves you as the **local administrator**, who holds every capability. You get the full product with no setup friction, and the same enforcement seam is still in place: the moment a real identity store is connected (for a team or the managed cloud), the role-to-capability rules take effect automatically. ## Where to go next - [Governance](/docs/using-the-app/governance) — assign roles, edit the capability matrix, manage members, and review the signed audit trail. - [Workspaces](/docs/using-the-app/workspaces) — invite members, choose their role, and configure break-glass access. Source: /raw/concepts/access-control.mdx ### concepts/agents.mdx --- title: Agents description: Anatomy of an AKOS agent — model, instructions, tools, context, and governed identity. --- An agent in AKOS is not just a prompt. It is a small, typed, configured worker — and every part of it is inspectable and governed at runtime. ## Anatomy ``` ┌─────────────────────────────────────────────────┐ │ Agent │ │ ┌──────────┐ ┌──────────────┐ ┌───────────┐ │ │ │ Model │ │ Instructions │ │ Tools │ │ │ │ (any of │ │ system │ │ allowlist │ │ │ │ 30+ LLM │ │ prompt + │ │ │ │ │ │ adapters)│ │ role │ └───────────┘ │ │ └──────────┘ └──────────────┘ │ │ ┌──────────────────┐ ┌────────────────────┐ │ │ │ Context (RAG) │ │ Identity + │ │ │ │ scoped knowledge│ │ permissions (DID) │ │ │ └──────────────────┘ └────────────────────┘ │ └─────────────────────────────────────────────────┘ ``` ### Model Any of 30+ LLM adapters inherited from the AgentsKit upstream: Anthropic, OpenAI, Gemini, Bedrock, Azure, Mistral, Groq, vLLM, Ollama, and more. The model is a per-agent config value — swap providers without rewriting the agent or the flow it belongs to. Ollama and vLLM run fully local, enabling air-gapped deployments that never call a cloud API. ### Instructions A system prompt plus a role description. This is the agent's persistent context — what it knows about itself, its task, and the constraints it should follow. ### Tools An explicit allowlist of capabilities the agent may call. An agent cannot call a tool that is not on its list. Tool kinds include: - **Search** — web search or knowledge-base lookup - **HTTP** — outbound API calls (subject to the workspace egress allowlist) - **File IO** — read or write files within the sandbox boundary - **Code execution** — run code inside the isolated sandbox - **RAG** — retrieve from the agent's knowledge sources - **SaaS connectors** — Slack, GitHub, Linear, Stripe, and others (require a connected OAuth integration) ### Context (RAG) Each agent carries a set of knowledge sources it can retrieve from. Retrieval is permission-scoped: an agent only retrieves content its principal's role is allowed to see. The built-in RAG pipeline includes a chunker, embedders, a vector store (pgvector in cloud mode, in-process SIMD in local mode), and a reranker. ### Identity and permissions Every agent has a **signed identity** — a Decentralized Identifier (DID). It never acts as itself; it always acts **on behalf of a principal** (a human user or a service account). Every action is checked against the principal's role and capability set via RBAC before the handler runs. Every action is written to the signed audit ledger with the principal as the subject, so accountability is always traceable. ## Everything is data An agent definition is a typed config object. You can edit it three ways — all equivalent, never diverging: | Mode | Who uses it | |---|---| | GUI in the desktop app | Operators and builders | | YAML file | Version control workflows | | Code (TypeScript) | Developers extending the system | ## What an agent cannot do - Call a tool not on its allowlist. - Access knowledge outside its RAG scope. - Make a network call to a host not on the workspace egress allowlist. - Bypass the capability check that guards every RPC handler. - Leave the sandbox boundary when running code or shell commands. These constraints are enforced at the runtime layer — they are not advisory rules. ## Related topics - **[Agents in the app](/docs/using-the-app/agents)** — registry, lifecycle states, sandbox test, version history. - **[Flows](./flows)** — how agents are invoked inside workflow nodes. - **[Access control](./access-control)** — roles, capabilities, and signed identity. - **[Model catalog](/docs/using-the-app/model-catalog)** — choosing models in agent forms. Source: /raw/concepts/agents.mdx ### concepts/architecture.mdx --- title: Architecture description: The two-layer split (AgentsKit upstream + AKOS OS layer), 50+ packages, and the design principles that make them navigable. --- > This page is the conceptual entry point to how AKOS is structured — layers, packages, and design principles. ## Two layers AKOS is not written from scratch. It stands on **AgentsKit** — a permissively-licensed (MIT) open-source agent runtime. ``` ┌─────────────────────────────────────────────────────────┐ │ AKOS — the OS layer (this repo) │ │ Governance · audit · RBAC · visual flow editor · │ │ processes · verticals · white-label · multi-tenant · │ │ marketplace · desktop app │ │ Packages named os-* │ └────────────────────────┬────────────────────────────────┘ │ peerDependency ┌────────────────────────┴────────────────────────────────┐ │ AgentsKit — open-source upstream (MIT) │ │ LLM adapters · reasoning & durable runtime · │ │ memory backends · tools · skills · RAG primitives · │ │ sandbox · evaluation │ │ Packages named @agentskit/* │ └─────────────────────────────────────────────────────────┘ ``` **Rule of thumb:** a package starting `os-` lives in this repo; one starting `@agentskit/` comes from [AgentsKit](https://www.agentskit.io) upstream. The hard rule (ADR-0002): never re-implement an upstream primitive — depend on it. Every community improvement to [AgentsKit](https://www.agentskit.io) flows into AKOS for free. ## Five layers, 50+ packages The codebase is stacked. Each layer may only depend on layers below it — never sideways, never upward. This keeps the runtime, security, UI, and vendor bindings replaceable instead of tangled together. | Layer | What it contains | |---|---| | ① Product & Distribution | Desktop app · white-label engine · marketplace · OEM tenancy — `os-ui`, `os-desktop`, `os-marketplace`, `os-whitelabel`, `os-tenant-config` | | ② AI Features | RAG · copilot · agent orchestration · dev orchestrator · MCP bridge — `os-rag`, `os-copilot`, `os-coding-agents`, `os-dev-orchestrator`, `os-mcp-bridge` | | ③ Runtime & Flow | Flow engine (DAG) · triggers · processes · sandbox · sidecar transport · storage bindings — `os-runtime`, `os-flow`, `os-triggers`, `os-sandbox`, `os-headless`, `os-store-postgres`, `os-rag-pgvector`, `os-sandbox-vercel`, `os-egress-hosted` | | ④ Security & Compliance | RBAC · signed audit ledger · vault · observability · licensing · email · PDF — `os-security`, `os-audit`, `os-observability`, `os-license`, `os-cloud-sync`, `os-telemetry`, `os-errors`, `os-email`, `os-pdf` | | ⑤ Contracts & Core | Schema layer · error model · dispatcher — `os-core`, `os-contracts`, `os-log`, `os-storage` | `os-core` is the hub: it defines every typed schema used across the monorepo, is consumed by 60+ packages, and is kept under 25 KB gzipped with zero LLM or UI dependencies (ADR-0013). ## The four design principles These principles shape every line of code and are documented in full in [Philosophy](/docs/concepts/philosophy). ### Contract-first A Zod schema validates every boundary — every HTTP call, every JSON-RPC message, every file read. Bad data is rejected at the door. If a contract changes unexpectedly, the build fails. You can trust the types: if the code declares a value is a `FlowConfig`, it was parsed at the boundary and really is one. ### Governed by design A signed audit ledger, role-based access, sandboxing, an egress allowlist, and human-approval gates live **inside** the runtime — not bolted on as an afterthought. The dispatcher enforces RBAC on every RPC handler before the handler runs. There is no back door. ### Hexagonal / port-first 50+ packages, each structured as a port (interface) + a swappable binding (implementation). Postgres, S3, Vercel Sandbox, Vault, Resend — each is a binding you can replace. Vendor-specific details stay behind those bindings, so there is no lock-in by construction. ### Decisions are documented Every architectural choice is an Architecture Decision Record (ADR). 98+ ADRs are on file. Changing the architecture requires writing an ADR first. Nothing is folklore. ## The request path Every action — a click, a webhook, an agent calling a tool — becomes one typed RPC call and takes the same governed path: ``` Caller (UI / webhook / agent) ↓ Schema parse ← Zod validates input ↓ Capability check ← RBAC: may caller do this? ↓ Handler runs ← the actual logic ↓ Audit + respond ← logged to ledger; typed result returned ``` 321 handler entries. 0 unmarked stubs. All reachable over both `stdio` and HTTP transport (parity matrix CI-verified). ## Deployment modes The same sidecar ships in three modes using the same typed protocol: | Mode | Transport | Storage | |---|---|---| | **Desktop** (Tauri) | stdio IPC | SQLite + local FS | | **Web** (Next.js) | HTTP/WS + JWT | Postgres + pgvector + S3 + Vault | | **Cloud** (k8s pod) | HTTP + sync gateway WS | Postgres + pgvector + S3 + Vault | Same flow, same agent, same governance — on a laptop, in a browser, or in a Kubernetes pod. ## Where to go deeper - [Access control](/docs/concepts/access-control) — how identity, roles, and capability checks work. - [Philosophy](/docs/concepts/philosophy) — the values and trade-offs behind every design choice. - [Run lifecycle](/docs/how-it-works/run-lifecycle) — the governed path from trigger to signed audit ledger. - [Using the App](/docs/using-the-app) — screen-by-screen operator guide (Activity, Governance, Security, Connections). - [CLI Guide](/docs/cli) — automate runs, triggers, imports, and workspace operations from the terminal. Source: /raw/concepts/architecture.mdx ### concepts/flows.mdx --- title: Flows description: Anatomy of a flow — a DAG of nodes that drives agents to a goal. --- A **flow** is a DAG (directed acyclic graph) of steps that drives one or more agents toward a goal. `@agentskit/os-flow` executes flows; `@agentskit/os-core` defines the schema. ## Key properties - **DAG, not a chain.** Cycles are detected at compile time. Branches are first-class citizens. - **Durable.** Every node writes a checkpoint before executing. A flow can resume after a crash, a redeploy, or a HITL pause — from exactly the point it paused. - **Run-mode-aware.** Every node respects the `--mode` flag — sandbox, simulate, or live. - **Time-travel debuggable.** Pick any historical checkpoint and re-execute from that point forward with new inputs or a different agent. - **Pre-flight cost estimation.** `--estimate` projects token spend and dollar cost before any LLM call is made. ## Node kinds A flow is composed of nodes. AKOS ships 14+ node kinds: | Kind | Icon | Description | |---|---|---| | `trigger` | ⚡ | Where the flow starts. Connects to the trigger system. | | `agent` | 🤖 | Runs a configured agent — the primary compute node. | | `tool` | 🔧 | Calls a single tool directly, without a reasoning step. | | `condition` | ◆ | Evaluates an expression and routes to one of two branches. | | `parallel` | ⇉ | Fans out to multiple branches that run concurrently. | | `human-gate` | ⏸ | Pauses the run until a human approves or rejects. | | `rag` | 📚 | Retrieves context from a knowledge source and injects it forward. | | `output` | ⏹ | Ends the flow and saves the artifact. | ## Anatomy of a flow A real example: a request-triage flow. ``` ⚡ Trigger ↓ 🤖 Agent: classify request ↓ ◆ Condition: which path? ↙ ↘ 🤖 Agent: 🤖 Agent: standard escalate ↘ ↙ ⏸ Human gate: approve ↓ ⏹ Output: artifact saved ``` A trigger fires → an agent classifies → a condition branches → the appropriate agent runs → a human approves → the run completes and an artifact is saved. ## Data flow between nodes Each node receives a typed input and produces a typed output. Downstream nodes declare which upstream outputs they consume via JSONPath selectors. The schema is validated at build time — wiring a node to an incompatible output fails fast. ## Authoring modes Because a flow is typed data, three editors are interchangeable views of the same underlying contract: | Mode | Who uses it | |---|---| | **GUI** — visual drag-and-drop canvas | Operators and builders | | **YAML** — committed to version control | Config-driven and GitOps workflows | | **Code** — TypeScript objects | Developers extending the system | Switch freely between modes. They never diverge. ## Live execution When a flow is running: - The canvas lights up node-by-node as each step executes. - Token cost is tracked per node in real time. - Every node write is checkpointed — the run is pausable and resumable. - A HITL gate sends a notification to the configured approvers and holds the run until they act. ## Related topics - **[Workflows in the app](/docs/using-the-app/flows)** — visual editor, snapshots, and import wizard. - **[Triggers](./triggers)** — the 14 GA event sources that start a flow. - **[Processes](./pipelines)** — chain multiple flows into ordered, multi-phase work. - **[Quality checks (Evals)](/docs/using-the-app/evals)** — regression-test flows before promotion. - **[Run lifecycle](/docs/how-it-works/run-lifecycle)** — the full path from trigger to audit ledger. Source: /raw/concepts/flows.mdx ### concepts/index.mdx --- title: Concepts description: The twelve core terms that unlock every screen, doc, and package name in AKOS. --- AKOS is built around a small vocabulary. Learn these twelve words and every screen, doc, and package name starts to make sense. Each term links to its dedicated page for deeper coverage. ## The big picture A person owns a process. AKOS turns that process into a **flow**. The flow drives **agents**. Agents use **tools**. Tools touch real systems. Everything in the middle is governed — identity, permissions, sandbox, egress allowlist, cost tracking, signed audit ledger. ``` Operator → Flow → Agents → Tools → Systems ↕ Governance ``` ## Twelve-term glossary | Term | Definition | |---|---| | **Agent** | An AI worker — a model + instructions + tools that performs one task. | | **Tool** | A capability an agent can call: search, HTTP request, file IO, run code. | | **Flow** | A graph of nodes — agents, tools, conditions, gates — wired together as a DAG. | | **Node** | One step in a flow. 14+ kinds exist (agent, condition, parallel, human gate, RAG, output, and more). | | **Process** | A flow of flows: ordered phases, each phase's output feeding the next via JSONPath mapping. | | **Run** | One execution of a flow or process — traced, costed, and audited from start to finish. | | **Trigger** | An event that starts a flow: a schedule, a webhook, a file change, a SaaS event, and more. | | **HITL gate** | A human-in-the-loop pause — the run waits for a person to approve before proceeding. | | **Vertical** | An industry preset (finance, legal, healthcare, …) — product name, theme, terminology, role defaults, and security posture, all in config data, no new code. | | **Sidecar** | The background process that actually executes agents, isolated from the UI. Same typed protocol whether running locally, in a browser shell, or in a Kubernetes pod. | | **RAG** | Retrieval-Augmented Generation — grounding an agent in your real documents and data via a built-in chunker, embedder, vector store, and reranker pipeline. | | **Artifact** | A saved output of a run — the result, kept and inspectable after the run completes. | ## Where to go next - **[Why AKOS](./philosophy)** — works in any industry, builds on what you already have, brings your automations with you. - **[Agents](./agents)** — model, instructions, tools, context, and governed identity in detail. - **[Flows](./flows)** — DAG structure, node kinds, authoring modes (GUI / YAML / code). - **[Processes](./pipelines)** — multi-phase flows with data handoff and approval gates. - **[Triggers](./triggers)** — all 14 GA trigger kinds and OAuth-once auto-registration. - **[Architecture](./architecture)** — the two-layer split between AgentsKit upstream and the AKOS operating layer, plus the maintained package map. For the run lifecycle — how a single execution moves from trigger to audit ledger — see **[Run lifecycle](/docs/how-it-works/run-lifecycle)**. For screen-by-screen product guidance (nav rail, section rails, and operator workflows), start at **[Using the App](/docs/using-the-app)**. Source: /raw/concepts/index.mdx ### concepts/philosophy.mdx --- title: Why AKOS description: The principles behind AKOS — works in any industry, builds on what you already have, and lets you bring your existing automations with you. --- AKOS is the operating system for AI agents in production. Three principles shape every part of it. ## Works in any industry AKOS is not built for one vertical. The same engine — agents, flows, processes, governance — runs finance, legal, healthcare, marketing, support, operations, software, and more. Wherever a person owns a process, AKOS can turn that process into governed automation. An **industry vertical** in AKOS is config data, not new code: a product name, theme, terminology, role defaults, security posture, and a set of templates. Switching or adding a vertical does not require a different build — the same platform adapts to the language and rules of the work. - Templates, the marketplace, and assets are all filtered by your active vertical, so you see what is relevant to your field. - The `custom` process phase accepts any flow, which is what makes processes usable in any vertical. See **[Concepts overview](/docs/concepts)** for how verticals are modeled. ## Use what you already have AKOS is designed to sit on top of your existing stack, not replace it. - **Your own models.** Run cloud models or local ones — Ollama and other local providers are first-class, so models can run on your own hardware with no outbound traffic. - **Your own keys.** Authentication always references a vault key, never a plaintext token. Bring your own provider keys and store them in the keychain or your secrets backend. - **Your existing tools.** Connect the services you already use — Slack, GitHub, Linear, Discord, Stripe, Twilio, Sentry, PagerDuty, and more — once, then both react to their events and call back out to them from a flow. - **Your own infrastructure.** Run the multi-tenant cloud, or self-host the desktop app — including fully air-gapped — when data must never leave your network. See **[Connections](/docs/using-the-app/connections)** and **[CLI authentication](/docs/cli/authentication)** for how providers and secrets are wired. ## Bring your automations with you You should not have to rebuild what already works. AKOS can import workflows from other tools — **n8n, LangChain, LangGraph, Langflow, Flowise, and Dify** — and translate them into AKOS agents and flows. And when you move from a local deployment to the cloud, your data and run history come with you. See **[Migrating to AKOS](/docs/cli/migrating)** for the `akos import` and `akos migrate-to-cloud` workflows. ## Related topics - **[Getting Started](/docs/getting-started)** — the three ways to run AKOS. - **[Concepts](/docs/concepts)** — agents, flows, processes, triggers, and architecture. Source: /raw/concepts/philosophy.mdx ### concepts/pipelines.mdx --- title: Processes description: Chain flows into ordered, multi-phase processes with automatic data handoff and approval gates. --- A **process** is the layer above a flow. Where a flow is a DAG of steps inside one agent session, a process is an ordered sequence of **phases** — each phase runs a complete flow, and the output of one phase feeds the input of the next. > For phase types and `inputMapping` syntax, see [Phase templates](#phase-templates) below. ## Why processes exist One flow automates one job. A process chains several flows into a supervised, multi-phase line of work — the output of a whole team, as one auditable run. An operator supervising a process board sees every phase of every run at a glance. ## Example: a content production process ``` 📥 Intake flow A ↓ 🔎 Research flow B ↓ ✍️ Draft flow C ↓ ⏸ Review — human gate ↓ ✅ Approve flow D ↓ 🚀 Deliver flow E ``` Each phase is a full, independently durable flow. If the review gate pauses the run, flows A–C are not re-executed when a reviewer approves. ## Three core mechanisms ### Data handoff Each phase's output feeds the next via a **JSONPath mapping** you configure in the process definition — no glue code, no manual copy-paste. The `outputKey` of a phase is the root for downstream `inputMapping` selectors. The schema is validated at process compile time. ### Approval anywhere Any phase can carry `requireApproval: true`. When the phase completes, the run pauses and the configured reviewers are notified. The run resumes only after a reviewer approves (or rejects, sending it to the configured fallback). ### Kanban supervision The process board shows every phase of every run as a card in a kanban view. One operator can supervise what used to require a full team — intake is queued, drafts are in progress, reviews are waiting, deliveries are done. ## Phase templates AKOS ships built-in phase templates (`prd`, `issues`, `dev`, `review`, `qa`, `security`, `custom`) plus the full `inputMapping` / `outputKey` schema. The `custom` phase type accepts any flow template, making processes usable in any industry vertical. ## Related topics - **[Flows](./flows)** — the building block of every process phase. - **[Processes in the app](/docs/using-the-app/pipelines)** — kanban board, chain view, and process run bar. - **[HITL gates](./flows#node-kinds)** — how human approval works inside a flow node. - **[Inbox](/docs/using-the-app/inbox)** — where approval tasks land when a phase requires human sign-off. - **[Run lifecycle](/docs/how-it-works/run-lifecycle)** — how a process run is traced and audited end to end. Source: /raw/concepts/pipelines.mdx ### concepts/triggers.mdx --- title: Triggers description: The 14 GA trigger kinds that connect a flow to the real world — schedules, webhooks, SaaS events, and more. --- A **trigger** connects a flow to the real world, so the flow starts on its own when something happens. Without a trigger, someone must press a button every time. All 14 trigger kinds listed here are generally available — shipped, typed, and CI-verified in every release. ## All 14 GA trigger kinds | Trigger | Description | |---|---| | **Schedule** | Run on a cron schedule — every night, every hour, every Monday. | | **Webhook** | An external system sends an HTTP POST and the flow fires. | | **File** | A new or changed file in a watched location starts the flow. | | **Email** | An inbound email to a configured address triggers the flow. | | **Postgres CDC** | A change data capture event from a Postgres table triggers the flow. | | **MySQL CDC** | A change data capture event from a MySQL table triggers the flow. | | **S3** | A new or modified object in a watched S3 bucket triggers the flow. | | **Slack** | A Slack event (message, reaction, mention) triggers the flow. | | **GitHub** | A GitHub event (push, PR, issue, release) triggers the flow. | | **Linear** | A Linear event (issue created, status changed) triggers the flow. | | **Discord** | A Discord message or event triggers the flow. | | **Twilio** | An inbound SMS or call via Twilio triggers the flow. | | **Sentry** | A Sentry alert or issue event triggers the flow. | | **PagerDuty** | A PagerDuty incident event triggers the flow. | | **Stripe** | A Stripe subscription or payment event triggers the flow. | The eight SaaS providers — Slack, GitHub, Linear, Discord, Twilio, Sentry, PagerDuty, and Stripe — each ship with **both** a trigger node and a tool node driven by the same OAuth connection. Connect a provider once in Integrations, and flows can both react to its events and call back out to it. ## OAuth-once auto-registration For SaaS providers, you do not paste a webhook URL or configure the provider manually. Connect the provider in the **Integrations** screen and AKOS registers the webhook with the provider on your behalf — automatically, typed, and verified. ## On-demand runs A button still works. Any flow can be started on demand from the desktop app by an operator, regardless of whether it has a trigger attached. ## How triggers work inside a flow A trigger is the first node in a flow — a `trigger` node. Its output is the event payload, typed against the trigger's Zod schema, which becomes the initial input to the next node in the DAG. The type is enforced at flow compile time: wiring a Slack trigger output to a node expecting a GitHub payload fails the build. ## Related topics - **[Automations in the app](/docs/using-the-app/triggers)** — cron, file watch, webhook server, and inline trigger editor. - **[Flows](./flows)** — how a trigger node fits into a flow DAG. - **[Connections](/docs/using-the-app/connections)** — how to connect SaaS providers that power trigger and tool nodes. - **[Public automation API](/docs/using-the-app/public-automation-api)** — scoped API keys for external dispatch. - **[Run lifecycle](/docs/how-it-works/run-lifecycle)** — what happens after a trigger fires. Source: /raw/concepts/triggers.mdx ### getting-started/build-to-operate.mdx --- title: Build to operate description: The verified journey from building an agent with AgentsKit to running it with governance, audit, cost, and HITL on AgentsKit OS. --- AgentsKit OS is the production destination in the AgentsKit ecosystem. Use this journey when you already know how to build an agent and need to run it with real controls. ## Journey 1. **Build** with [AgentsKit](https://www.agentskit.io/docs) — define tools, adapters, and agent behavior on the foundation library. 2. **Start faster** from the [Registry](https://registry.agentskit.io) when a ready agent matches the problem, then own and adapt the source. 3. **Ship the experience** with [AgentsChat](https://github.com/AgentsKit-io/agentskit-chat) when users need a conversational interface across clients. 4. **Guide ownership** with [Doc Bridge](https://agentskit-io.github.io/doc-bridge/) so agents and contributors land on the correct edit roots and checks. 5. **Apply discipline** with the [Playbook](https://playbook.agentskit.io) before merging agent-produced changes. 6. **Operate** on AgentsKit OS — permissions, egress, audit ledger, cost budgets, HITL approvals, and deployment modes (managed cloud, self-hosted desktop, terminal/CLI). ## Clean quickstart proof ```bash # 1) Read the public docs entry point open https://akos.agentskit.io/docs/getting-started # 2) Install the CLI (see the CLI guide for the current package name and channel) akos --help # 3) Confirm the authentication and health commands are available # The verified help surface lists both `auth status` and `status`. akos --help ``` ## What “operate” means here | Control | Why it matters | |---|---| | Identity + RBAC | Only authorized principals run or approve agent actions | | Egress allowlists | Agents only call approved tools and destinations | | HITL gates | Risky steps pause for a human decision | | Signed audit | Every material action is reconstructible later | | Cost budgets | Spend is visible and policy-bound | | Deployment modes | Same contracts for managed cloud and self-hosted | ## Maturity honesty - Released public docs and CLI surfaces are what this journey covers. - Experimental package APIs may change; treat them as internal operator knowledge unless a release notes them as stable. - If a capability is planned or unavailable, the assistant and docs must say so rather than inventing a path. ## Next steps - [Getting Started](/docs/getting-started) — web, desktop, and CLI entry. - [How a run works](/docs/how-it-works/run-lifecycle) — trigger to signed audit ledger. - [CLI command reference](/docs/cli/command-reference) — verbs and capabilities. - [Using the app](/docs/using-the-app) — screen-by-screen operator guide. Source: /raw/getting-started/build-to-operate.mdx ### getting-started/cli.mdx --- title: Using the CLI description: Authenticate the akos command line and scaffold your first workspace. --- The `akos` command line operates AKOS from your terminal and CI — authenticate, scaffold a workspace, run flows, manage triggers, and deploy. ## Authenticate The CLI signs in with a device-code grant and stores your credentials securely on your machine: ```bash akos auth login ``` Useful related commands: ```bash akos auth whoami # show the signed-in identity akos auth status # check your session akos tenant list # list accessible tenants akos tenant use # local/self-host tenant switch akos auth logout # end the session ``` ## Scaffold a workspace Create a new workspace configuration with sensible defaults: ```bash akos init ``` You can start from a starter template to get a working agent immediately, then edit it in the app or in your config. ## Operate from the terminal Common first commands after `akos init`: ```bash akos doctor --creds # verify provider keys are present akos connections guide slack # read setup steps from the registry akos flows list --json # inspect inline flows (sidecar required) akos run akos.config.yaml # dry-run your first flow ``` ## Next steps - Topic walkthroughs: **[CLI Guide](/docs/cli)** (authentication, connections, flows, pipelines, knowledge, security, costs). - Full command table: **[Command reference](/docs/cli/command-reference)**. - Prefer a visual interface? Open the **[web app](/docs/getting-started/web)** instead. The CLI authenticates to the same workspace as the web and desktop apps. Anything you create from the CLI shows up in the app, governed and audited the same way. Source: /raw/getting-started/cli.mdx ### getting-started/desktop.mdx --- title: Using the Desktop App description: Run AKOS self-hosted with the desktop app — private and air-gap capable, for regulated environments. --- The AKOS desktop app runs the full product **self-hosted** on infrastructure you control. It is the right choice when data must never leave your network — regulated industries, air-gapped environments, or strict data-residency requirements. ## What you get - The same interface as the [web app](/docs/getting-started/web): agents, flows, processes, triggers, connections, governance, observability, and cost. - **Private by default** — runs on your machines; outbound network access passes an egress allowlist you control. - **Air-gap capable** — operate with local models and no outbound calls when required. ## Getting set up The desktop app is provisioned through your AKOS enterprise plan. Your administrator installs it and connects it to your workspace. Once it is running, sign in and you are in the same workspace model described in **[Using the App](/docs/using-the-app)**. For core terminology, see **[Concepts](/docs/concepts)**. Need to automate or operate the self-hosted instance from a terminal or CI? Use the [CLI](/docs/getting-started/cli). Source: /raw/getting-started/desktop.mdx ### getting-started/index.mdx --- title: Getting Started description: What AKOS is and the three ways to use it — the multi-tenant web app, the self-hosted desktop app, and the akos CLI. --- AKOS is the operating system for AI agents in production. It lets your team add governed AI agents to any business process — finance, legal, healthcare, marketing, support, operations — and run them supervised, permissioned, and fully audited. Wherever a person owns a process, AKOS turns that process into a **flow**, the flow drives **agents**, the agents call **tools**, and everything in between is governed: identity, permissions, sandboxing, an egress allowlist, cost tracking, and a signed audit trail. Three principles shape the product: - **Works in any industry.** The same engine runs finance, legal, healthcare, marketing, support, operations, and more — each industry is config data (terminology, roles, templates), not a separate build. - **Use what you already have.** Bring your own models (including local ones via Ollama), your own provider keys, and your existing tools (Slack, GitHub, Stripe, and more). Run it on your own infrastructure if you need to. - **Bring your automations with you.** Import existing workflows from n8n, LangChain, LangGraph, Langflow, Flowise, and Dify instead of rebuilding them. See **[Why AKOS](/docs/concepts/philosophy)** for the full philosophy. ## Three ways to use AKOS AKOS is one product with three surfaces. They share the same workspace, agents, flows, and governance. | Surface | Best for | How you get in | |---|---|---| | **[Web app](/docs/getting-started/web)** | Teams who want nothing to install | Multi-tenant cloud — sign in to your workspace URL | | **[Desktop app](/docs/getting-started/desktop)** | Private / regulated / air-gapped deployments | Self-hosted desktop application | | **[CLI](/docs/getting-started/cli)** | Automation, CI, and power users | `akos` command line | Not sure which to start with? Most teams begin in the **web app** to build and supervise their first flow, then add the **CLI** to automate runs from CI. Regulated environments that require data never to leave their network run the **desktop app** self-hosted. ## Where to go next - New to the vocabulary? Read **[Concepts](/docs/concepts)** (agents, flows, processes, triggers, architecture). - Ready to use the product UI? Start with **[Using the App](/docs/using-the-app)**. - Follow a run end to end? See **[Run lifecycle](/docs/how-it-works/run-lifecycle)**. - Automating from your terminal or CI? See the **[CLI Guide](/docs/cli)**. - Coming from another tool? See **[Migrating to AKOS](/docs/cli/migrating)**. Source: /raw/getting-started/index.mdx ### getting-started/web.mdx --- title: Using the Web App description: Sign in to the AKOS multi-tenant web app and open your workspace — nothing to install. --- The AKOS web app is a multi-tenant cloud service. There is nothing to install — you sign in to your organization's workspace in the browser. ## Sign in 1. Open your organization's AKOS workspace URL (provided by your administrator). 2. Sign in with your organization credentials. 3. You land in your **workspace** — the container for your agents, flows, connections, and audit history. If you belong to more than one workspace, switch between them from the workspace menu. ## What you can do Once signed in, you have the full AKOS app in the browser: - Build and configure **agents**, **flows**, and **processes**. - Connect external systems and manage secrets under **Connections**. - Schedule and trigger runs, and supervise them live. - Review the **audit log**, costs, and traces for every run. See **[Using the App](/docs/using-the-app)** for a screen-by-screen guide. For the underlying vocabulary (agent, flow, process, trigger), start with **[Concepts](/docs/concepts)**. The web app and the [desktop app](/docs/getting-started/desktop) share the same interface. Anything you learn in one applies to the other. Source: /raw/getting-started/web.mdx ### how-it-works/run-lifecycle.mdx --- title: Run lifecycle description: Follow one run from trigger to audit ledger — five steps, fully governed at every stage. --- A **run** is one execution of a flow or process. This is the single most important path in AKOS — every governance feature plugs into it somewhere. Understanding it makes every other screen, metric, and error message legible. ## The five steps ``` 01 · START Trigger fires schedule / webhook / button press 02 · CHECK Permission + schema RBAC capability check · input validated against Zod schema 03 · EXECUTE Sidecar runs nodes agents reason · tools fire · data passes between nodes 04 · PAUSE Human gate (if any) run holds · reviewer is notified · resumes on their decision 05 · FINISH Artifact + audit result saved as artifact · audit ledger entry signed ``` Every step of the way: **sandboxed · token-cost tracked · OpenTelemetry traced · written to the signed audit ledger**. ## Step-by-step detail ### 01 · START A trigger fires — a cron schedule hits, a webhook arrives, a SaaS event is received, or an operator presses Run. The trigger payload is parsed against the trigger's Zod schema. If the payload does not match, the run is rejected before reaching step 02. ### 02 · CHECK Two gates before any agent executes: 1. **RBAC capability check** — the dispatcher verifies the caller's principal has the capability required for the flow's entry handler. No capability, no call. 2. **Input schema validation** — the flow's input schema is validated against the (now-typed) trigger payload. Mismatches are rejected with a typed `AgentsKitError`. There is no path that reaches step 03 without passing both gates. ### 03 · EXECUTE The sidecar process runs the flow's nodes in DAG order. Key properties during execution: - **Sandboxed** — agent code and shell commands run in an isolated sandbox. No ambient access to the host, the filesystem, or the network beyond what is explicitly granted. - **Egress-controlled** — every outbound network call is checked against the workspace egress allowlist before it leaves the process. Silent data exfiltration is structurally impossible. - **Cost-tracked** — token spend is measured per node and per run. The running total is visible in the UI in real time. - **OpenTelemetry-traced** — every node execution emits a span. Traces are queryable from the Observability screen and sink to Grafana or any compatible backend. - **Checkpointed** — every node writes a checkpoint before running. If the process crashes or is redeployed, the run resumes from the last checkpoint. ### 04 · PAUSE (if applicable) If the flow contains a `human-gate` node, the run pauses at that point. Configured reviewers receive a notification. The run holds its checkpoint indefinitely. On approval, execution resumes from the gate. On rejection, the flow routes to the configured fallback branch (or terminates, if none is configured). ### 05 · FINISH When the final output node executes: 1. The result is saved as an **artifact** — a typed, inspectable snapshot of the run's output, retained and queryable from the Runs screen. 2. A ledger entry is appended to the **signed audit ledger** — Ed25519-signed, append-only, tamper-evident. The entry records the principal, the action, the outcome, and the timestamp. It cannot be altered after the fact. ## Governance guarantees | Guarantee | Mechanism | |---|---| | Every run is authorized | RBAC capability check at step 02 | | Every run is sandboxed | Isolated execution at step 03 | | Every run has a cost record | Per-node token tracking at step 03 | | Every run is observable | OpenTelemetry spans at step 03 | | Every run is replayable | Checkpoints at step 03; time-travel from any checkpoint | | Every run is audited | Signed ledger entry at step 05 | A run is never a black box. It is authorized, observed, costed, and recorded at every stage. ## What happens when a run fails If a node throws an unhandled error: - The failure is recorded in the run's trace with the full error context. - A Sentry adapter captures the error (if configured). - The run moves to the `failed` state. - The checkpoint from the last successful node is preserved. An operator can replay the run from that checkpoint after fixing the underlying issue. - The audit ledger records the failure — including which node failed and on whose behalf. ## Related topics - **[Flows](../concepts/flows)** — how a run's DAG of nodes is structured. - **[Triggers](../concepts/triggers)** — the events that fire step 01. - **[Inbox](/docs/using-the-app/inbox)** — where human-gate tasks land at step 04. - **[Results](/docs/using-the-app/assets)** — artifacts saved at step 05. - **[Governance](/docs/using-the-app/governance)** — the audit ledger and access controls written at step 05 in detail. - **[Security](/docs/using-the-app/security)** — sandbox, egress, and firewall policy enforced at step 03. - **[Runs and observability](/docs/using-the-app/runs-and-observability)** — OpenTelemetry tracing and the Grafana sink. Source: /raw/how-it-works/run-lifecycle.mdx ### index.mdx --- title: AKOS Documentation description: Learn how to use AKOS — the operating system for AI agents in production. Guides for the web app, desktop app, and the akos CLI. --- AKOS lets your team add governed AI agents to any business process — built, supervised, and audited by the people who own the work. Looking for a walkthrough of a specific screen? Most screens in the app link directly to the matching page here. ## Machine-readable documentation - [llms.txt](/llms.txt) is the concise discovery map. - [llms-full.txt](/llms-full.txt) contains the public, for-agents, and runtime capability corpus. - Every page exposes its canonical source under `/raw`. Improving documentation or ownership handoffs? Validate the repository with [Doc Bridge](https://agentskit-io.github.io/doc-bridge/). Source: /raw/index.mdx ### using-the-app/agents.mdx --- title: Agents description: Create, configure, version, and manage the lifecycle of AI agents in AKOS. --- The Agents screen is where you define the AI assistants that power your workflows. Every agent has an identity, a model, a prompt, tools, skills, memory settings, and a lifecycle state. ## Agent registry The registry lists all agents in the workspace. You can switch between **card view** and **list view** using the toggle in the toolbar. Use the search box and the filter menu to narrow the list by name, ID, or lifecycle state. ### Lifecycle states Each agent moves through a controlled lifecycle enforced by the governance engine: | State | Meaning | |---|---| | **Draft** | In development; not used by live flows. | | **Review** | Submitted for review; pending approval. | | **Approved** | Cleared for staging; governance gates satisfied. | | **Staged** | In a pre-production environment; final verification. | | **Production** | Live and available to flows and triggers. | | **Deprecated** | Scheduled for removal; still runs existing flows. | | **Retired** | Decommissioned; preserved for audit. | To move an agent to the next state, click the **Promote** action on its row. A confirmation dialog explains which governance gates must be satisfied. Unsatisfied gates are listed with actionable hints. You can also demote or retire an agent from the same menu. ## Creating an agent Click **New agent** in the toolbar. You have four starting options: - **Blank** — fill in all fields yourself. - **Template** — choose a pre-built template for your vertical (finance, healthcare, legal, etc.). - **Natural language** — describe the agent in plain English; AKOS generates a draft you can edit. - **Import** — import from a YAML/JSON file or a URL. ### Agent form tabs The new-agent form has two modes: **Simple** (fewer fields) and **Advanced** (all fields). Use the toggle in the form header to switch. The form is split into steps: **Basic** - **ID** — unique slug (lowercase, digits, dashes). **Auto-generated from the name** as you type, so you rarely set it by hand. Use the **Advanced** disclosure to override it on creation. Locked after creation. - **Name** — display name. Required. - **Description** — short summary shown in cards and lists. - **Role** — optional role to inherit capabilities and a default model from. - **Risk tier** — classification used by governance policies. **Model** Override the LLM provider and model for this agent, or leave blank to inherit from the assigned role. The model field is a **searchable catalog picker** backed by the live model catalog — over 5,000 models across 140+ providers. Start typing a provider or model name and the dropdown narrows as you type; each result shows the provider, model id, and capability tags such as `reasoning` and `tools`. See [Model catalog](/docs/using-the-app/model-catalog) for how the catalog works and how to pick the right model. **Prompt** The agent's **system prompt** — the standing instructions given to the model at the start of every run. Required. **Skills & Tools** - **Skills** — high-level named capabilities (for example, `web.search`, `doc.summarize`). You can type a custom skill slug if needed. - **Tools** — low-level primitives the agent may invoke (for example, HTTP calls, SQL queries, notification sends). Tools are grouped by their integration provider. **Memory** Choose how the agent maintains conversation history: | Mode | Behaviour | |---|---| | **None** | No per-agent memory; uses the workspace default if configured. | | **Ref** | Points to a named workspace memory slot. | | **Inline** | Defines its own memory backend (file, SQLite, Redis, vector store). | For inline memory, fill in the backend-specific fields (path, Redis URL, vector provider, collection, dimensions, embeddings model). **Advanced** Additional settings for timeouts, retry policy, and output schema (available in Advanced mode). Click **Create draft** to save the agent in draft state. You can review and submit from any step using **Next** / **Back**. ## Editing an agent Click **Edit** on any agent row or card. The same multi-step form opens with the agent's current values. The **ID** field is locked because changing an agent's ID would break all references to it. ## Testing an agent (sandbox) Click **Test** on an agent to open the **Sandbox drawer**. Enter a test prompt and run the agent in isolation. The result panel shows the model's response, tool calls made, and cost. ## Version history Click **Versions** on an agent to open the **Version history drawer**. This shows every saved snapshot of the agent, with timestamps and the actor who made each change. - Select a version in the left panel to see a **diff** against the current live version in the right panel. - To roll back, click **Rollback** next to the version you want. You will be asked to enter an optional reason. The rollback mints a new version pointing back at the selected snapshot — no history is lost. ## Bulk operations Check multiple agents in list view to activate the **bulk toolbar**. You can promote or retire a selection of agents at once, or delete a set of drafts. ## Related screens | Need | Go to | |---|---| | Use agents in flows | [Workflows](/docs/using-the-app/flows) | | Regression testing | [Quality checks (Evals)](/docs/using-the-app/evals) | | Coding agents | [Coding](/docs/using-the-app/coding) | | Multi-agent layouts | [Route-only screens](/docs/using-the-app/route-only-screens) (`topologies`) | | Model selection | [Model catalog](/docs/using-the-app/model-catalog) | Source: /raw/using-the-app/agents.mdx ### using-the-app/assets.mdx --- title: Assets description: Browse, preview, and manage every output produced by your workflow runs across all verticals. --- The Assets screen is the output gallery for your workspace. Every document, code file, image, or structured data file produced by a workflow run is stored here. ## Filter bar At the top of the screen, a filter bar lets you narrow the visible assets: - **Vertical** — filter by which vertical produced the asset (finance, healthcare, legal, coding, or all). - **Kind** — filter by asset type (document, code, image, data, etc.). - **Search** — free-text search against file names and metadata. - **Run filter** — when you navigate here from a specific run's detail panel, a banner shows which run is being filtered. Click **Clear** to remove the run filter. ## Asset grid Assets are shown in a responsive grid. Each card shows a thumbnail (or file-type icon), the asset name, kind badge, vertical, and the run that produced it. - Click an asset card to select it and preview it in the right-hand preview panel. - Check multiple cards to activate the **bulk toolbar** (see below). ## Preview panel The right-hand panel shows the full content of the selected asset: - **Documents** — rendered text or markdown. - **Code files** — syntax-highlighted source code. - **Images** — inline image preview. - **Data files** — formatted JSON or CSV table. The preview panel also shows version history for the selected asset. Click a previous version to see its content, or use the diff view to compare two versions side by side. ## Bulk toolbar Select multiple assets to activate the bulk toolbar. Available actions: - **Export** — download all selected assets as a ZIP archive. - **Delete** — permanently delete the selected assets. - **Clear selection** — deselect all. ## Version history Click **Versions** on any asset to open the version history drawer. It lists every version with its timestamp and size. Select a version to diff it against the current version. This is useful when a workflow produces iterative drafts of a document and you want to see what changed between runs. ## Related screens | Need | Go to | |---|---| | Source run | [Activity](/docs/using-the-app/runs-and-observability) | | Workflow that produced output | [Workflows](/docs/using-the-app/flows) | | Coding-agent artifacts | [Coding](/docs/using-the-app/coding) | Source: /raw/using-the-app/assets.mdx ### using-the-app/coding.mdx --- title: Coding Agents description: Compose programming tasks, run them with AI coding agents, preview artifacts, and hand off to reviewers. --- The Coding screen is a specialised interface for AI-assisted software development tasks. Use it to write code, run automated code reviews, and hand off results to workflows or human reviewers. ## Layout The screen is split into two columns: - **Left column** — task composer and recent runs list. - **Right column** — run panel, output artifacts, follow-up actions, provider status, and conformance. ## Composer The Composer is where you define a coding task: - **Task description** — describe what you want the agent to do (for example, "Add pagination to the user list endpoint"). - **Provider** — select which coding agent provider to use from the dropdown. - **Profile** — choose a saved profile that pre-configures the provider, model, and constraints. - **Working directory** — the local folder the agent will read from and write to. On the desktop app, click the folder icon to browse for a directory. - **Dry run** — run without writing any files; useful for previewing what changes would be made. Click **Run** to start the task. ## Recent runs Below the composer, a list of recent coding runs shows each run's task description, provider, and status. Click any recent run to reload its result in the right panel. Click **Clear** to remove the history. ## Run panel While a task is running, the run panel shows: - A progress indicator and elapsed time. - The current phase (planning, writing, testing, etc.). - A **Cancel** button to stop the run. When the run completes, the panel shows the final status and a summary. ## Artifact tabs After a run, the artifact tabs show everything the agent produced: - **Diff** — a unified diff view of all file changes the agent made. - **Files** — individual file previews (new files, modified files). - **Shell** — terminal output from any commands the agent ran. - **Timeline** — a chronological log of tool calls made during the run. ## Follow-up actions Below the artifact tabs, follow-up action buttons let you: - **Re-run** — re-run the task with the same inputs. - **Open in flow** — send the task result as input to a workflow. - **Request review** — create a review task in the Inbox for a human reviewer. ## Provider grid The provider grid shows all configured coding agent providers and their availability status. Providers that are not connected show a **Set up** link that navigates to **Connections > Coding agents** — the central place to configure all coding agent provider credentials. ## Conformance panel The conformance panel runs automated checks against the agent's output to verify it meets configured standards (for example, code style rules, security scanning, test coverage thresholds). Each check shows a pass/fail badge and any findings. ## Profile manager Profiles save a set of provider, model, and constraint settings so you can switch between configurations quickly. Click **+ New profile** to create one, or edit an existing profile by clicking its name. ## Related screens | Need | Go to | |---|---| | Provider credentials | [Connections](/docs/using-the-app/connections) › Coding agents | | Route-only screen (`coding`) | [Route-only screens](/docs/using-the-app/route-only-screens) | | Human review handoff | [Inbox](/docs/using-the-app/inbox) | | Send output to a workflow | [Workflows](/docs/using-the-app/flows) | | Model selection | [Model catalog](/docs/using-the-app/model-catalog) | Source: /raw/using-the-app/coding.mdx ### using-the-app/compliance.mdx --- title: Compliance description: Export signed evidence bundles, manage legal holds, and queue DSAR requests. --- The **Compliance** screen (Governance pillar) is the in-product compliance workspace. It is a thin UI over existing `compliance.*` RPC handlers — no separate backend. ## Evidence export wizard Generate signed, regime-specific evidence bundles from the audit ledger between a `from` / `to` date range. Supported regimes: **SOC 2**, **HIPAA**, **GDPR**, **CCPA**, and **ISO 27001**. The result card shows bundle summary, manifest download, and verification hints. Exports are suitable for auditor handoff when your retention and legal-hold posture is current. ## Legal holds - **List** active holds (`compliance.legalHold.list`). - **Place** a hold on a scope (`compliance.legalHold.put`). - **Release** when preservation is no longer required (`compliance.legalHold.release`). Holds affect retention pruning — check **Prune status** before assuming old data was removed. ## DSAR queue List and create data-subject access or erasure requests (`compliance.dsar.list`, `compliance.dsar.create`). Erasure cascades are coordinated with tenant admin tooling on cloud deployments. ## Retention and GC status **Prune status** and **GC status** show whether retention executors and cloud garbage collection are wired and when they last ran. These are read-only indicators for operators. ## Related screens | Need | Go to | |---|---| | Raw audit entries | [Governance](/docs/using-the-app/governance) › Audit | | Security posture | [Security](/docs/using-the-app/security) | | Quality / benchmark evidence | [Quality checks (Evals)](/docs/using-the-app/evals) | | OEM admin compliance ops | Admin app `/compliance` (operator console) | Source: /raw/using-the-app/compliance.mdx ### using-the-app/connections.mdx --- title: Connections description: Configure LLM providers, OAuth integrations, secrets, SQL connections, output sinks, and workspace sync. --- The Connections screen (labelled **Integrations** in the navigation) centralises every external system that AKOS talks to. For assistant-guided or registry-backed setup steps (OAuth scopes, bot installs, health checks), see **[Integration setup](/docs/using-the-app/integration-setup)**. Sections are organised into three groups in the left-hand section rail: ## Inbound ### Providers LLM providers that agents can use to run inference. Each provider card shows: - Provider name and logo. - Connection state: **Connected** (key verified), **Configured** (key saved but not verified), or **Not connected**. - A **Verify** button to test the key. - A **Configure** button to add or update the API key. Only connected or configured providers appear in the agent model picker. Supported provider types include cloud AI services and local providers (for example, Ollama running on the same machine). ### External integrations OAuth-based connections to third-party SaaS applications. Each card shows the provider, its connection state, and a **Connect** button that launches the OAuth flow. Connected integrations can be used by agent tools and trigger webhooks. Open the **External apps** catalog entry to manage scoped automation API keys: - Create org-scoped keys limited to one or more automation ids (`automations:run`, `runs:read` scopes). - Copy the raw secret **once** at creation — AKOS stores only a hash afterward. - Revoke keys when an external integration rotates credentials. Use these keys from server-side code only. See **[Public automation API](/docs/using-the-app/public-automation-api)** for `/v1/automations/*` request shapes and security notes. ### Coding agents Configuration hub for AI coding agent providers (for example, Claude, GitHub Copilot, or a locally-hosted model). Each provider card shows its connection state and a **Configure** button to set the API key or endpoint. Provider settings entered here appear automatically in the Coding screen's provider dropdown. > The coding agent provider list is managed in the Connections screen so that all external integrations live in one place. Use the Coding screen for running tasks; use this tab to add or rotate credentials. ### Knowledge sources A read-only summary of RAG knowledge sources configured for this workspace. This tab shows which sources are indexed and their current status. To add, remove, or rebuild sources, navigate to the **[Knowledge](/docs/using-the-app/knowledge)** screen. > This tab was added so that all inbound data integrations — LLM providers, OAuth apps, coding agents, and RAG sources — are visible together in Connections. ## Outbound ### Output sinks Destinations where AKOS sends workflow outputs (for example, a Slack channel, an email address, or a custom HTTP endpoint). Click **Add sink** to configure a new destination, choosing the channel type and its settings. ### Exporters Telemetry exporters that forward AKOS observability data to external monitoring systems (for example, OpenTelemetry collectors, Datadog, or custom NDJSON sinks). This section is only available in deployments with the observability cluster enabled. ## Workspace ### External secrets References to secrets stored in an external vault (for example, HashiCorp Vault, AWS Secrets Manager). Instead of storing a raw API key in AKOS, you store a vault reference (`vault://path/to/secret`). AKOS resolves the reference at runtime. To add an external secret reference: 1. Click **Add secret**. 2. Enter a local alias (the name agents and flows will use to look up the secret). 3. Enter the vault URI. 4. Save. ### SQL connections Named database connections that agents with SQL tools can use. Click **Add connection** to fill in the connection form: - **Name** — the identifier used in SQL tool calls. - **Driver** — PostgreSQL, MySQL, SQLite, or other supported drivers. - **Connection string** — the database URL. For sensitive credentials, use an external secret reference instead of a raw password. Click **Test** to verify the connection before saving. ### Cloud sync Sync workspace configuration and agent data to a cloud storage backend (for example, an S3-compatible bucket). When enabled, the workspace can be restored from the cloud backup on a new machine. Configure the bucket URL, credentials, and sync interval. ### Collab Real-time collaboration settings — connect your workspace to a shared CRDT-based sync server so multiple team members can edit flows simultaneously. Enter the server URL and any authentication tokens required. ## Related screens | Need | Go to | |---|---| | Guided setup flows | [Integration setup](/docs/using-the-app/integration-setup) | | Knowledge OAuth sources | [Knowledge](/docs/using-the-app/knowledge) | | External automation keys | [Public automation API](/docs/using-the-app/public-automation-api) | | Coding agent providers | [Coding](/docs/using-the-app/coding) | | Evaluation providers | [Quality checks (Evals)](/docs/using-the-app/evals) | Source: /raw/using-the-app/connections.mdx ### using-the-app/copilot.mdx --- title: Home (Assistant) description: The full-page assistant chat — onboarding, slash commands, mentions, and in-product guidance. --- **Home** (nav id `copilot`) is the assistant-first entry point. Use it to ask questions about your workspace, draft workflows and agents, get setup guidance, and navigate to the right screen without memorising the sidebar. ## First-run onboarding When `copilot.config.get` reports `onboardingComplete=false`, Home renders **assistant-first onboarding** inside the conversation instead of an empty state: 1. **Display name** — collected as a short text reply. 2. **Assistant name** — collected as a short text reply. 3. **Vertical** — inline `VerticalStep` card (law, healthcare, marketing, coding, or other). 4. **Tool selection** — inline `ToolSelectionStep` card listing integrations and MCP tools for your vertical. 5. **Configuration plan** — inline `ConfigurationPlanStep` card with per-tool setup status and configure actions. 6. **Provider setup** — inline cards for LLM (`LlmProviderCard`), OAuth connectors (`OAuthProviderCard`), or API keys (`ProviderConfigModal`). Progress is persisted through `onboarding.session.upsert`. Web first-access completion waits until the assistant flow reaches `done`. ## Everyday chat After onboarding, Home is a full-page chat grounded by workspace RAG (when knowledge sources are indexed — see [Knowledge](/docs/using-the-app/knowledge)). - **Slash commands** — type `/` to open the slash palette (`copilot.slash.list` / `copilot.slash.parse`). - **@-mentions** — reference agents, flows, or tools inline (`copilot.mention.parse`). - **Proactive cards** — system events can surface action cards (`copilot.proactive.fromEvent`). - **Tool proposals** — destructive actions escalate to the [Inbox](/docs/using-the-app/inbox) for human approval. ## Inline UI in chat The assistant can render registered inline components (link cards, button groups, run summaries, workflow validation reports, provider setup cards, and onboarding steps). When you ask "show me options" or "where do I configure X", expect an inline card or a navigation button — not instructions to edit files by hand. ## Command palette shortcuts Press `Cmd K` / `Ctrl K` and search for `copilot`, `assistant`, `chat`, or `help` to jump back to Home from any screen. ## Related screens | Need | Go to | |---|---| | Configure knowledge sources | [Knowledge](/docs/using-the-app/knowledge) | | Connect OAuth / API keys | [Integrations](/docs/using-the-app/connections) | | Registry-backed setup steps | [Integration setup](/docs/using-the-app/integration-setup) | | Approve a risky action | [Inbox](/docs/using-the-app/inbox) | | See run output | [Activity](/docs/using-the-app/runs-and-observability) | | Terminal copilot | [Chat (CLI)](/docs/cli/chat) | Source: /raw/using-the-app/copilot.mdx ### using-the-app/cost.mdx --- title: Cost description: Spend rollups, budgets, alerts, and billing context for your workspace. --- **Cost** (nav label; screen title "Budgets, quotas & usage") is the **Cost Guard** cockpit. It shows live and historical LLM spend, per-provider breakdowns, budget configuration, and — on cloud workspaces — plan and invoice context. ## Layout The screen uses a tabbed layout: - **Overview** — top-card totals, sparkline (today / week / month), and provider breakdown table. - **Budgets** — create, edit, and evaluate spend budgets with alert channels. - **Alerts** — muted and active budget alerts. - **Billing** — plan tier, invoices, and backend-computed usage state (cloud only; deep-link via `tab=billing`). ## Budgets and alerts Each budget defines a spend cap and evaluation window. **Evaluate** runs synchronously against the cost tracker; in-flight runs may not yet be reflected — the UI shows "as of" timestamps from `cost.updatedAt`. **Reset counters** is destructive: it requires confirmation, writes an audit entry, and should only be used after operator review. ## Cloud vs self-hosted On self-hosted desktop installs, billing tabs may show a disconnected state honestly — the UI does not synthesize plan or invoice data. Usage limits on cloud tenants come from `usage.state.get` (backend-computed; do not recalculate limits in the UI). ## Deep links Commercial notifications can open Cost directly on the Billing tab (`tab=billing`). The screen consumes one-shot navigation params after mount. ## Related screens | Need | Go to | |---|---| | Per-run cost | [Activity](/docs/using-the-app/runs-and-observability) run detail | | Access / RBAC for cost exports | [Governance](/docs/using-the-app/governance) | | Dashboard spend summary | [Dashboard](/docs/using-the-app/dashboard) | Source: /raw/using-the-app/cost.mdx ### using-the-app/dashboard.mdx --- title: Dashboard description: The AKOS home screen — live KPI stats, activity feed, and quick-access cards for every major feature. --- The Dashboard is the first screen you see after signing in. It gives you a real-time overview of what is happening in your workspace. ## Layout The dashboard is divided into four rows: 1. **Hero** — workspace name, sidecar / runtime status, and a run-mode toggle (live vs paused). 2. **Stats grid** — key numbers (active agents, flows run today, open inbox tasks, cost this period). 3. **Next actions** — a short checklist of setup steps that still need to be completed. 4. **Hub grid** — independent cards for each operational area (see below). 5. **Metrics charts** — aggregate time-series charts for runs, cost, and token usage. 6. **Activity feed** — a live stream of events from the current session. You can pause the feed or clear it. ## Hub cards Each card in the hub grid shows a live summary. Click any card header or its embedded button to navigate to the full screen. | Card | What it shows | |---|---| | **Orchestration** | Recent runs with status badges; links to the Runs screen. | | **Cost summary** | Spend this period, budget usage, and a trend indicator. | | **Inbox approvals** | Count of open human-in-the-loop tasks awaiting your decision. | | **Active flows** | Flows currently running or paused, with run counts. | | **Triggers** | Live cron and file-watch triggers with their next-fire times. | | **Agents** | Count of registered agents by lifecycle state (draft/active/retired). | | **Governance posture** | Current security mode — sandbox, egress rules, firewall, RBAC, audit. | | **Integrations** | Connected external providers; links to the Connections screen. | ## Activity feed The activity feed at the bottom of the dashboard is a **live event stream**, styled like a terminal, that shows system events as they happen. Each line includes a timestamp, event type, and a short description. New events append at the bottom in real time as runs progress, agents act, and triggers fire. Click any run event to jump to that run's detail in the Runs screen. To pause or resume the stream, click the **Pause / Resume** toggle above the feed. To clear the current session's events, click **Clear**. ## Knowing when something is running You don't have to stay on the dashboard to see that work is in progress. While any run is in flight, AKOS surfaces it everywhere in the app: - **Top-bar indicator** — a pulsing pill in the app toolbar shows the number of active runs. Click it to jump straight to the Activity (Runs) screen. It disappears when everything is idle. - **Sidebar badge** — the **Activity** nav item shows a live count of in-flight runs, and both **Activity** and **Workflows** pulse while runs are executing. - **Toasts** — important outcomes (a run finishing, an approval needed, an export ready) raise a brief app notification. All of these read the same live source, so the count is always consistent no matter where you look. See [Runs & Observability](/docs/using-the-app/runs-and-observability) for the per-run detail. ## Related screens | Need | Go to | |---|---| | Run detail | [Activity](/docs/using-the-app/runs-and-observability) | | Pending approvals | [Inbox](/docs/using-the-app/inbox) | | Spend and budgets | [Cost](/docs/using-the-app/cost) | | Access policy | [Access](/docs/using-the-app/governance) | | Integrations | [Connections](/docs/using-the-app/connections) | | Agent registry | [Agents](/docs/using-the-app/agents) | | Workflow library | [Workflows](/docs/using-the-app/flows) | | Scheduled automations | [Automations](/docs/using-the-app/triggers) | Source: /raw/using-the-app/dashboard.mdx ### using-the-app/evals.mdx --- title: Evals description: Run structured test suites against your workflows and track pass rates over time. --- The Evals screen lets you define test cases for your **[Workflows](/docs/using-the-app/flows)**, run them on demand, and review the results. Use evals to catch regressions before promoting a flow to production. The screen has three sections in the section rail: **Suites**, **Results**, and **Benchmarks**. ## Suites A **suite** is a named collection of test cases for a specific workflow. Each test case defines an input and an expected output (or assertion criteria). **Suite list** Each row shows: - Suite name and ID. - The workflow it is bound to. - The number of test cases in the suite. - **Run** — execute all cases in the suite against the current workflow version. - **Delete** — remove the suite. If no suites exist, an empty state links to the **Config** editor (route-only screen — see **[Route-only screens](/docs/using-the-app/route-only-screens)**) where you can define them. **Creating a suite** Suites are defined in the workspace configuration file (Config editor). Each suite specifies: - `flowId` — the ID of the workflow to test. - `cases` — an array of test cases, each with an `input` object and optionally an `expected` object or assertion expression. ## Results The Results section shows the outcomes of suite runs. Each row shows: - The suite ID and the time the run started. - Pass/fail counts and a percentage badge (green for 100% pass, red for any failures). Click a result to expand the per-case breakdown, showing which cases passed, which failed, and the actual vs expected output for each failure. If no results exist yet, an empty state prompts you to go to Suites and run one. ## Benchmarks The Benchmarks section shows standardised benchmark scores for your agents and workflows. Benchmarks measure performance on pre-defined industry datasets or task sets. Each benchmark row shows: - The benchmark name and provider. - The agent or workflow being measured. - The score and the date it was last run. - A **Run** button to run the benchmark again. > Benchmarks require a connected evaluation provider. Configure the provider in the **[Connections](/docs/using-the-app/connections)** screen. ## Related screens | Need | Go to | |---|---| | Workflow under test | [Workflows](/docs/using-the-app/flows) | | Multi-phase processes | [Processes](/docs/using-the-app/pipelines) | | Evaluation providers | [Connections](/docs/using-the-app/connections) | | Suite definitions (Config) | [Route-only screens](/docs/using-the-app/route-only-screens) (`config`) | | Roles, audit, policy | [Access](/docs/using-the-app/governance) | | Evidence exports | [Compliance](/docs/using-the-app/compliance) | Source: /raw/using-the-app/evals.mdx ### using-the-app/flows.mdx --- title: Workflows description: Design, run, and version multi-step AI workflows using the visual flow editor. --- The Workflows screen is the primary place to design and manage your automation flows. A flow is a directed graph of nodes — each node performs one step (run an agent, branch on a condition, call a tool, wait for a human, etc.). To chain multiple flows into phased business processes (kanban board, approvals, data handoff), use **[Processes](/docs/using-the-app/pipelines)**. To regression-test a flow before promotion, use **[Quality checks (Evals)](/docs/using-the-app/evals)**. ## Workflow library The screen has two sections accessible from the **section rail**: - **Workflows** — the editor and the list of saved flows in your workspace. - **Templates** — pre-built flow templates filtered to your active vertical. ### Workflows section The editor and the list of saved flows share the main area. To see all saved flows, click the **Workflows** drawer button in the toolbar. A slide-over panel opens with a searchable list. Click any flow to load it into the editor. From the toolbar you can also: - **New workflow** — create a blank flow. Its ID is **auto-generated** from the name you give it (a lowercase, dashed slug), so you don't invent one by hand. - **Import** — open the migration wizard to import a flow from JSON or YAML. - **Run** — run the currently selected flow. - **Save** — save the current editor state. - **Delete** — delete the selected flow after confirmation. ### Templates section Template cards show the template name, category tag, and description. Click **Use template** to load it into the editor. Templates are filtered to the active vertical (for example, only finance templates appear if your workspace vertical is set to finance). You can see all templates by changing the filter. ## Auto-generated IDs Across AKOS, anything you create — a workflow, an agent, a connection, a secret provider — gets a stable **ID** derived automatically from the name you type. The ID is a lowercase, dashed slug (for example, *Daily Report* becomes `daily-report`). You'll see it previewed as `ID: …` while you fill in the form. You almost never set it by hand. When you do need a specific value (to match an external reference, say), open the **Advanced** disclosure on the create form and type an override. Once a record is created its ID is **locked** — changing it would break everything that references it — so the override is only available at creation time. ## Visual flow editor The editor is a canvas with a **Palette** on the left, a **main canvas** in the centre, and an **Inspector panel** on the right (appears when a node is selected). ### Palette The palette lists all available node types, grouped by category. Use the search box to find a specific node. Drag any item from the palette onto the canvas to add it. ### Canvas controls | Control | Action | |---|---| | **Undo / Redo** | Reverse or replay the last canvas change. | | **Align** | Auto-layout all nodes (`Cmd Shift L`). | | **Trace** | Toggle the last-run trace overlay (shows per-node status, duration, and cost). | | **Versions** | Open the snapshots drawer to save or restore named canvas versions. | A minimap and zoom controls appear in the canvas corners. ### Connecting nodes Drag from a node's output handle to another node's input handle to create an edge. Branch nodes have separate `true` and `false` output handles. ### Node types **Basic** | Node | Purpose | |---|---| | **Trigger** | The flow's entry point. Configure the trigger kind (cron, webhook, file watch, or inline). | | **Agent** | Run a registered agent. Pick the Agent ID from your registry; optionally override the system prompt for this node only. | | **Tool** | Call a specific tool primitive directly, without an agent. | | **Notify** | Send a notification (email, Slack, webhook) with a message template. | | **Note** | A sticky note for documenting the canvas (no runtime effect). | **Control flow** | Node | Purpose | |---|---| | **Branch** | Evaluate a condition; route to the `true` or `false` edge. | | **Parallel** | Fan out to multiple branches that run concurrently. | | **Loop** | Repeat a sub-graph a fixed number of times or until a condition is met. | | **Human** | Pause the flow and send an approval request to human reviewers. | **Multi-agent** | Node | Purpose | |---|---| | **Multi-agent** | Run multiple agents with a coordination strategy: Auction, Blackboard, Compare, Debate, or Vote. | **Knowledge** | Node | Purpose | |---|---| | **RAG** | Retrieve relevant context from a knowledge source and pass it to the next node. | ### Inspector panel When you click a node, the inspector opens on the right. The fields shown depend on the node type. **Human node inspector** Configure who must approve: - **Approvers** — a list of users, roles, email addresses, or capability strings. - **Quorum** — the minimum number of approvals required before the flow continues. - **Escalate on timeout** — if checked, set a timeout in minutes and an escalation target; if no one approves in time, the task is reassigned. ### Governance banner A floating strip along the top of the canvas shows the current governance posture for this flow: sandbox mode, egress rule count, firewall status, audit state, and whether cost metering is active. Click any chip for details. ## Running a flow Click **Run** in the toolbar. A dialog appears showing the flow name and any declared input fields. Fill in any required inputs and click **Run now**. The dialog closes and a status indicator appears. When the run completes, a **Last run** panel shows the final status, duration, and cost. ## Snapshots (versioning) Click **Versions** on the canvas toolbar to open the snapshots drawer. You can: - **Save snapshot** — give the current canvas state a name and save it. - **Restore** — load a saved snapshot back into the editor. Snapshots are per-workspace and are separate from the run history. ## Importing existing workflows Click **Import** in the toolbar to open the migration wizard and bring a workflow over from another tool. Paste or upload the exported definition and AKOS converts it into a native flow. Supported sources: - **n8n** - **LangChain** - **LangGraph** - **Langflow** - **Flowise** - **Dify** An import produces three things: - **A flow** — the converted node graph, ready to open in the editor. - **Agents** — agent definitions detected in the source are materialized into your registry. LangGraph imports now materialize agents from the graph's LLM/agent nodes, so they arrive as first-class agents rather than opaque steps. - **Warnings** — a list of anything that could not be mapped cleanly (unsupported nodes, conditional routes that need review, missing credentials). Review the warnings, fix what's flagged, then save the flow. Conversion is best-effort and lossy in places, so always review the imported flow and its warnings before running it. ## Related screens | Need | Go to | |---|---| | Multi-phase processes | [Processes](/docs/using-the-app/pipelines) | | Regression testing | [Quality checks (Evals)](/docs/using-the-app/evals) | | Scheduled / webhook starts | [Automations](/docs/using-the-app/triggers) | | Agent registry | [Agents](/docs/using-the-app/agents) | | Starter templates | [Marketplace](/docs/using-the-app/templates-and-marketplace) | | Full-page editor (`flow-editor`) | [Route-only screens](/docs/using-the-app/route-only-screens) | Source: /raw/using-the-app/flows.mdx ### using-the-app/governance.mdx --- title: Governance description: Manage roles, access policies, team membership, and the full audit trail for your workspace. --- The Governance screen is where workspace administrators control who can do what, review every access decision, and maintain a tamper-evident record of all significant events. The screen is divided into three groups in the left-hand section rail: ## Access control > For how roles, capabilities, and capability-gated actions fit together, see [Access control](/docs/concepts/access-control). Sensitive actions — approving a human-in-the-loop step, deciding a release gate, granting break-glass access, and reading the audit ledger — require the matching capability and are denied for roles that lack it. ### Roles The Roles section shows the RBAC (role-based access control) configuration for your workspace. A role is a named set of capabilities. **Capability matrix** A table lists every role in the workspace as a column, and every registered capability as a row. Check or uncheck a checkbox to grant or revoke a capability for that role. Changes are staged locally; click **Save** to persist them. **Default role** A dropdown at the top selects the default role assigned to new members. Users who have not been explicitly assigned a role receive the capabilities of the default role. **Role management** - **Create role** — enter a name and click **Create**. - **Delete role** — click the delete button on a role column header. Deleting a role removes all assignments to it. ### Policies The Policies section shows two things: **Operator roles table** A read-only view of the canonical surfaces (screens) and actions (RPC methods) each system role is allowed to access. This is driven by the system configuration and cannot be edited here. **Workspace isolation profiles** For each workspace, you can set an isolation level: - **None** — no isolation applied; the workspace shares resources freely. - **Standard** — default. Network and resource isolation between workspaces. - **Strict** — maximum isolation; additional constraints on cross-workspace data access. Change a workspace's isolation level using the dropdown in the table row. Changes take effect immediately. **Egress allow-list** The egress allow-list editor is located at **Tools > Egress** (linked from this section). Click the link to jump there to manage outbound network allow/deny rules. ## Membership User and team CRUD moved to the dedicated **[Teams](/docs/using-the-app/teams)** screen (Settings › Teams). Use Teams to invite members, assign roles, and manage team membership. **Access** (this screen) remains the policy overview — capability matrix, isolation profiles, audit, and break-glass. ## Audit trail ### Audit The Audit section is a **signed HITL ledger** — an append-only log of every human approval, rejection, and escalation in the workspace. Each entry is chained with a SHA hash and signed with an ed25519 key, making the log tamper-evident. **Filters** - **Actor** — filter by the user or system that performed the action. - **Actor type** — human or system. - **Kind** — filter by event type (approval, rejection, escalation, etc.). - **Date range** — restrict to a time window. - **Signed only** — show only entries that have a valid chain signature. **Toolbar actions** - **Verify chain** — run the integrity check on the current ledger. A banner reports whether all chain links and signatures are valid. - **Export CSV / NDJSON** — download the visible entries (requires `audit:export` permission). - **Export signed batch** — download a cryptographically signed export bundle suitable for submission to compliance reviewers. - **Verify exported file** — upload a previously exported signed batch file to verify its integrity offline. - **Print** — browser print of the visible log. ### History The History section shows governance-specific events filtered from the broader audit ledger: - RBAC role changes (`rbac.roles.set`) - Access denials (`rbac.denied`) - Workspace isolation changes - Break-glass grants, revocations, and expirations Each row shows the sequence number, timestamp, actor, event kind, workspace, subject, and a summary of the payload. Click **Open in Audit** to jump to the full audit entry. ## Governance posture card A **Governance posture** summary card on the Dashboard shows the current live security mode at a glance: - **Sandbox** — whether agent tool calls are sandboxed. - **Egress N** — number of active egress rules. - **Firewall** — whether the network firewall is active. - **Audit** — audit logging status. - **Cost-metered** — whether cost limits are enforced. Each chip is a shortcut to the relevant configuration screen. ## Break-glass access In situations where normal RBAC would block an urgent action, an administrator with `access.breakGlass` permission can grant temporary elevated access. Break-glass events are recorded in the History section and automatically expire after the configured duration. See [Workspaces](/docs/using-the-app/workspaces) for break-glass configuration. ## Self-heal Self-heal lets the runtime propose a recovery action when a flow node fails, instead of simply stopping the run. - **Off by default.** Self-heal is strictly opt-in. Enable it in **Settings → Orchestration**. - **Recovery proposals.** When a node fails, the runtime proposes a recovery action — for example, **retry** the node or **switch model** — based on the failure. - **Require approval.** Optionally require a human to approve a recovery verdict before it is applied. When approval is required, nothing is auto-applied until a reviewer signs off. - **Max auto-retries.** Cap how many times the runtime may auto-retry a node before it gives up and escalates. ## Compliance and consent Compliance is a first-class nav item under Governance. Data-subject **consent** records (GDPR Article 6 basis tracking) remain in workspace privacy settings (`config` › Privacy). ### Activation and retention metrics Activation and retention metrics are strict opt-in. Nothing is collected until the workspace owner consents in **Settings → Privacy**. While consent is unset or disabled, every metric event is dropped. When enabled, only stable categorical fields (ids, event kinds, bucketed timings, provider categories) are captured. No prompts, secrets, code contents, or PII/PHI are ever recorded. ## Related screens | Need | Go to | |---|---| | Evidence exports, legal holds, DSAR | [Compliance](/docs/using-the-app/compliance) | | Workflow test suites | [Quality checks (Evals)](/docs/using-the-app/evals) | | Egress allow-list editor | [Tools](/docs/using-the-app/tools) | | Firewall and sandbox policy | [Security](/docs/using-the-app/security) | | Member invites and roles | [Teams](/docs/using-the-app/teams) | | Spend limits | [Cost](/docs/using-the-app/cost) | | Workspace privacy / consent | [General](/docs/using-the-app/workspaces) | Source: /raw/using-the-app/governance.mdx ### using-the-app/inbox.mdx --- title: Inbox description: Review and act on human-in-the-loop tasks — approve, reject, reassign, or modify paused workflow steps. --- The Inbox is where workflows come to you for a human decision. When a flow reaches a **Human** node, it pauses and creates a task in the Inbox. Nothing in that flow continues until someone takes an action. The header badge shows live counts: **open**, **approved**, and **rejected** tasks. ## Sections The Inbox has three sections in the section rail: ### Tasks The Tasks section lists all human-in-the-loop decision requests. Use the status pills at the top to filter by `open`, `all`, `approved`, or `rejected`. Use the search box to find tasks by prompt text, task ID, or tag. **Task card** Each task shows: - The task prompt or description. - The flow and node that generated it. - The time the task was created and any configured timeout. - A **notes** field — type a note before approving or rejecting; it is recorded in the audit ledger. **Actions** - **Approve** — allows the flow to continue. - **Reject** — marks the task as rejected; the flow routes to the rejection path (if configured) or stops. - **Reassign** — reassign the task to another user or role. - **Modify** — propose a modification to the task's payload (for tasks that accept a structured response). Navigate between tasks with keyboard shortcuts `j` (down) and `k` (up). ### Escalations The Escalations section shows tasks that have timed out and been escalated to a different approver or role. Each escalation card shows the original task, who it was escalated to, and the reason. ### Approvals The Approvals section shows a chronological view of all completed approvals (approved and rejected) for this session. Use this to confirm that actions you took were recorded correctly before closing the browser. ## Configuring Human nodes Human nodes in a flow are configured in the **flow editor Inspector panel** when the Human node is selected. Key settings: - **Approvers** — who should receive this task (by user, role, email, or capability). - **Quorum** — how many approvals are required. - **Escalate on timeout** — whether to escalate to a fallback approver after a timeout. See [Workflows](/docs/using-the-app/flows) for details on the Human node inspector. ## Related screens | Need | Go to | |---|---| | Flow design | [Workflows](/docs/using-the-app/flows) | | Process approvals | [Processes](/docs/using-the-app/pipelines) | | Access policy | [Access](/docs/using-the-app/governance) | | Run history | [Activity](/docs/using-the-app/runs-and-observability) | Source: /raw/using-the-app/inbox.mdx ### using-the-app/index.mdx --- title: Using the App description: A screen-by-screen guide to the AKOS web and desktop application. --- AKOS is available as a **web application** (multi-tenant SaaS, runs in any modern browser) and as a **desktop application** (self-hosted, runs on your own machine or private cloud). Both surfaces share the same UI — this guide applies to both unless noted. ## App layout The app is organised around a left-hand **navigation rail** that groups every screen into sections. Within each screen, a secondary **section rail** (left sidebar or top tabs depending on screen width) lets you switch between sub-sections without leaving the page. Every screen has a consistent header: a kicker label, a title, an optional subtitle with live counts, and an actions bar on the right. Content appears in the main area below. ## Navigation sections Nav groups match `packages/os-desktop/src/app-nav.ts` (`NAV_GROUPS` / `NAV_ITEMS`): | Section | Sidebar screens | Notes | |---|---|---| | **Home** | [Home (Assistant)](/docs/using-the-app/copilot), [Dashboard](/docs/using-the-app/dashboard) | Assistant-first onboarding lives on Home | | **Build** | [Agents](/docs/using-the-app/agents), [Workflows](/docs/using-the-app/flows), [Processes](/docs/using-the-app/pipelines), [Automations](/docs/using-the-app/triggers) | Topologies reachable from Agents | | **Run** | [Activity](/docs/using-the-app/runs-and-observability), [Inbox](/docs/using-the-app/inbox), [Results](/docs/using-the-app/assets) | Activity replaces separate Runs/Traces/Observability nav items | | **Workspace** | [General](/docs/using-the-app/workspaces), [Integrations](/docs/using-the-app/connections), [Knowledge](/docs/using-the-app/knowledge), [Marketplace](/docs/using-the-app/templates-and-marketplace) | Config via top-bar settings; plugins via Marketplace › Installed | | **Governance** | [Cost](/docs/using-the-app/cost), [Security](/docs/using-the-app/security), [Quality checks](/docs/using-the-app/evals), [Compliance](/docs/using-the-app/compliance) | Former "Operations" spend/risk surfaces | | **Settings** | [Access](/docs/using-the-app/governance), [Teams](/docs/using-the-app/teams), [Brand & licensing](/docs/using-the-app/route-only-screens#brand--licensing-oem) | Audit and break-glass live under Access | **Route-only screens** (deep-linkable, not in the sidebar): `config`, `plugins`, `bundles`, `topologies`, `tools`, `sandbox`, `coding`, `templates`, `oem`, `flow-editor`. See **[Route-only screens](/docs/using-the-app/route-only-screens)** for the full reachability table. ## Web vs desktop | | Web | Desktop | |---|---|---| | Authentication | SSO / email sign-in | Workspace config file | | Workspace | Cloud-managed | Local or private server | | LLM tokens | Stored in the cloud vault | Stored on the local machine | | Multi-workspace | Yes — switch in the top bar | Yes — open multiple workspace files | ## Workspaces A **workspace** is the top-level unit of isolation. Every agent, flow, trigger, secret, and audit entry belongs to exactly one workspace. On the web, you are invited to a workspace by an admin. On the desktop, you open or create a workspace file. The current workspace name is shown in the top bar. To switch workspaces, use the workspace switcher in the top bar. ## Command palette Press `Cmd K` (Mac) or `Ctrl K` (Windows / Linux) from any screen to open the command palette. You can jump to any screen or trigger any registered action without using the navigation. Screen keywords from the nav config (for example `copilot`, `processes`, `activity`) are searchable even when the sidebar label differs. ## Feature guides (not sidebar screens) These guides cover cross-cutting setup flows that do not map 1:1 to a sidebar item: | Guide | When to read | |---|---| | [Integration setup](/docs/using-the-app/integration-setup) | OAuth, app installs, and connection credentials | | [Public automation API](/docs/using-the-app/public-automation-api) | External webhooks and API keys that dispatch workflows | | [Model catalog](/docs/using-the-app/model-catalog) | Choosing models in agent and flow forms | | [Knowledge](/docs/using-the-app/knowledge) | Indexing docs for the in-app assistant | ## Documentation map | Audience | Start here | |---|---| | End users (this section) | Screen guides linked above | | Core vocabulary | [Concepts](/docs/concepts) | | Run path (trigger → audit) | [Run lifecycle](/docs/how-it-works/run-lifecycle) | | Operators / CLI | [CLI command reference](/docs/cli/command-reference) | | Contributors & IDE agents | Internal agent guides and the docs query CLI (see repository `CONTRIBUTING.md`) | Source: /raw/using-the-app/index.mdx ### using-the-app/integration-setup.mdx --- title: Integration setup description: Use AKOS setup guidance to connect OAuth apps, bot installations, API keys, webhooks, MCP servers, and LLM providers. --- AKOS keeps provider-specific setup instructions in the integration setup registry. The assistant, Connections screen, and CLI read that registry instead of duplicating setup steps in static docs. Use **[Home (Assistant)](/docs/using-the-app/copilot)** when you want guided setup in conversation. It can explain what happens inside AKOS, what you must complete in the external service, which permissions are requested, and which health check confirms the connection. Use the CLI when you need the same setup data for automation or review: ```bash agentskit-os connections guide slack agentskit-os connections guide discord --json agentskit-os connections guide --category llm --implemented-only ``` Each guide can include: - The preferred setup mode: OAuth, app or bot installation, guided secret, platform-managed setup, or fallback. - The setup CTA and summary shown in product surfaces. - Required scopes or permissions. - External credential links when a provider needs an API key. - The health-check method AKOS should run after setup. - Assistant instructions for safe wording and redaction. For tenant setup, prefer OAuth or app installation when available. Ask for API keys only when the registry says a guided secret is the right path. Never paste raw secrets into chat output; store them through Connections or the vault-backed CLI flow. The **[Connections](/docs/using-the-app/connections)** screen is still the main place to connect, verify, rotate, and remove provider credentials. For OAuth-protected **[Knowledge](/docs/using-the-app/knowledge)** sources, complete the provider connection here first, then add the source in the Knowledge screen. For scoped keys that let external apps call `/v1/automations/*`, use **[Connections](/docs/using-the-app/connections)** › **External apps** and read **[Public automation API](/docs/using-the-app/public-automation-api)**. ## Provider setup checklist Use the registry guide first, then prepare the provider-side object that matches its setup mode: | Setup mode | Provider-side setup | AKOS setup | |---|---|---| | OAuth | Create an OAuth app, add the AKOS callback URL, select the registry scopes, and keep client credentials in the operator vault. | Connect from **Connections** or the assistant; verify with the provider health check. | | App or bot installation | Create/install the provider app for the target workspace, org, guild, or site; grant only the registry permissions. | Complete the installation flow and confirm the connected account/workspace metadata. | | Guided secret or API key | Create a scoped key for a service account, rotateable bot user, or sandbox tenant. | Store the key through Connections or the vault-backed CLI flow; never paste it into chat. | | MCP server | Configure the MCP server URL/command, auth policy, and egress allowlist. | Register the MCP connection, then run a tool-list/read-only smoke before enabling write actions. | | DB connection | Create a least-privilege DB user, network allowlist, TLS settings, and read/write role according to the workflow. | Store the DSN/parts as a secret and run a metadata/readiness check before any mutation workflow. | When the setup is ambiguous, the assistant should ask which tenant/workspace, environment, provider account, and permission level to use before it renders a connect action. ## Live validation Use the provider health check in **Connections** after setup. Health checks record only provider, status, and safe proof metadata; tokens, client secrets, API keys, and private keys are redacted from reports and logs. ## Related screens | Need | Go to | |---|---| | Connect / verify credentials | [Connections](/docs/using-the-app/connections) | | Guided setup in chat | [Home (Assistant)](/docs/using-the-app/copilot) | | OAuth knowledge sources | [Knowledge](/docs/using-the-app/knowledge) | | External automation keys | [Public automation API](/docs/using-the-app/public-automation-api) | | CLI reference | [Command reference](/docs/cli/command-reference) | Source: /raw/using-the-app/integration-setup.mdx ### using-the-app/knowledge.mdx --- title: Knowledge description: Add document sources that agents can search using retrieval-augmented generation (RAG). --- The Knowledge screen manages the document collections that your agents can retrieve information from. When an agent or flow contains a RAG node, AKOS searches the relevant knowledge sources and injects the results into the agent's context. > If your installation does not have a knowledge indexer or vector store configured, the screen will show a "Knowledge subsystem not configured" message. Contact your administrator to enable this feature. ## Source list Each row in the source list shows: - **Source name and kind** — the display name and the source type (folder, URL, database, etc.). - **Status** — one of: `indexed`, `indexing`, `failed`, or `needs rebuild`. - **Document count and size** — the number of documents currently indexed and their total size. - **Agent usage** — how many agents currently reference this source. - **Rebuild** and **Remove** action buttons. The header shows aggregate stats: total sources, how many are currently indexing, how many have failed, total document count, and total indexed size. ## Adding a source Click **+ Add source** to open the add-source form. Fill in: - **ID** — a unique slug for this source (used in RAG node configuration). - **Name** — a display name. - **Kind** — the type of source: - `folder` — a local folder of files (PDF, Markdown, plain text, etc.). - `url` — a web page or sitemap. - `database` — a SQL query result. - Others may be available depending on your installation. - **Location** — the path, URL, or connection details for the source. - **Embeddings provider** — the LLM provider used to generate vector embeddings. Must be a connected provider from the **[Connections](/docs/using-the-app/connections)** screen. - **Embeddings model** — the specific model to use for embeddings. For sources that require authentication (for example, a private web page or a database), the form shows additional authentication fields. For OAuth-protected sources, a **Connect** button launches the OAuth flow. Click **Add** to save and begin indexing. ## Rebuilding a source To re-index an existing source (for example, after the underlying documents have changed), click **Rebuild** on the source row. Indexing happens in the background; the status badge updates when complete. To rebuild all sources at once, open the command palette (`Cmd K`) and run **Rebuild all sources**. ## Using knowledge in flows To use a knowledge source in a workflow, add a **RAG** node to your flow in the flow editor. The RAG node inspector lets you select the source by ID and configure the query and retrieval settings. The retrieved context is passed automatically to the next node in the flow. To assign a knowledge source to an agent directly (so it is always available without a dedicated RAG node), configure the agent's knowledge settings in the **[Agents](/docs/using-the-app/agents)** form. ## Indexing product documentation for the assistant Workspace **document sources** (above) power flow RAG nodes. Separately, operators can index the **shipped documentation corpus** so the in-app assistant retrieves repo docs: ```bash agentskit-os prod seed --target assistant-knowledge --dry-run agentskit-os prod seed --target assistant-knowledge --apply agentskit-os knowledge rebuild assistant-knowledge-for-agents agentskit-os knowledge rebuild assistant-knowledge-user-docs ``` This registers the internal agent docs, product docs, demo docs, and runbooks as folder sources. Until rebuild completes, fumadocs pages are not in assistant RAG — the contract catalog in the system prompt is always on, but folder search requires this operator path. See the [CLI command reference](/docs/cli/command-reference) (`prod seed`, `knowledge rebuild`) and the [Using the App](/docs/using-the-app) guide index for related operator flows. ## Related screens | Need | Go to | |---|---| | OAuth provider setup | [Connections](/docs/using-the-app/connections) | | Guided integration steps | [Integration setup](/docs/using-the-app/integration-setup) | | Use sources in flows | [Workflows](/docs/using-the-app/flows) | | Assistant chat | [Home (Assistant)](/docs/using-the-app/copilot) | Source: /raw/using-the-app/knowledge.mdx ### using-the-app/model-catalog.mdx --- title: Model catalog description: Pick from a live catalog of 5,000+ models across 140+ providers wherever AKOS asks for a model. --- Wherever AKOS asks you to choose an LLM — an agent's model, an agent node in a flow, a multi-agent strategy, or an eval — you pick from a **live model catalog**, not a hand-typed string. ## What's in the catalog The catalog is a continuously refreshed snapshot covering **140+ providers and over 5,000 models** — OpenAI, Anthropic, Google, Mistral, Meta, and many more, including the models you reach through your own provider connections. Because it is the real catalog rather than a fixed list baked into the app, new models appear without an app update. ## Searching The model field is a searchable combobox: 1. Click the field and start typing a **provider** or **model name** (for example, `claude`, `gpt`, or `gemini`). 2. The dropdown narrows as you type. Search runs against the full catalog, so you never scroll thousands of rows — keep typing to narrow further. 3. Each result shows the **model name**, the **provider · model id**, and capability tags. When a search returns more matches than fit on screen, the dropdown tells you how many of the total it is showing (for example, *Showing 60 of 312 — keep typing to narrow*). ## Capability tags Results are tagged so you can pick a model that fits the job: | Tag | Meaning | |---|---| | **reasoning** | The model supports extended reasoning / thinking. | | **tools** | The model can call tools (function calling), required for agents that use tools. | If your agent uses tools, choose a model with the **tools** tag. For complex multi-step tasks, a **reasoning** model is usually a better fit. ## Where you'll see it The catalog picker appears everywhere a model is selected, including: - The **Model** step of the agent create/edit form (see [Agents](/docs/using-the-app/agents)). - **Agent** nodes in the visual flow editor (see [Workflows](/docs/using-the-app/flows)). - **Multi-agent** node members. - Eval runners that compare models. Leaving a model blank inherits the model from the agent's assigned role (or the provider default), so you only set a model when you want to override. ## Related screens | Need | Go to | |---|---| | Agent model step | [Agents](/docs/using-the-app/agents) | | Flow agent nodes | [Workflows](/docs/using-the-app/flows) | | LLM provider connections | [Connections](/docs/using-the-app/connections) | | Benchmark comparisons | [Quality checks (Evals)](/docs/using-the-app/evals) | Source: /raw/using-the-app/model-catalog.mdx ### using-the-app/pipelines.mdx --- title: Processes description: Chain flows into multi-phase processes and track work across columns on a kanban board. --- The Processes screen lets you group related **[Workflows](/docs/using-the-app/flows)** into a structured **process** — a sequence of phases, each mapped to a flow. This is useful when a business process spans multiple steps that should each be tracked and governed separately. Phases that require human approval surface in the **[Inbox](/docs/using-the-app/inbox)**. ## Process workspace The top of the screen has a **process selector** (a dropdown listing all processes in the workspace) and a **view toggle** to switch between two views: - **Board** — a kanban-style column view showing current work items moving through phases. - **Chain** — a visual map of all phases and their connections, rendered as a node graph. ### Board view The board shows one column per process phase. Each card in a column represents a unit of work. You can: - Move cards between columns by drag-and-drop. - Click a card to see its details, including the bound flow and latest run status. - Use the **Run bar** at the top to trigger a full process run. Each column has a **settings** panel where you can configure: - The flow bound to this phase. - Execution mode (sequential, parallel). - Input/output key mappings that pass data between phases. - A CDC (change-data-capture) source if the phase listens to database events. - Whether human approval is required before advancing. ### Chain view The chain view renders the end-to-end phase sequence as a visual graph. Phases are nodes; arrows show the data flow between them. This is a read-only map — to edit bindings, go back to the Board view column settings. ## Creating a process If no processes exist, the screen shows an empty state with a **Create process** button. Click it to open the create dialog, give the process a name, and confirm. The new process appears in the selector with a single default column. Add more phases from the Board view. ## Process run bar A persistent run bar appears below the selector bar whenever a process is selected. It shows the latest process-level run status and provides a **Run process** button to start a fresh end-to-end execution. ## Related screens | Need | Go to | |---|---| | Flow design | [Workflows](/docs/using-the-app/flows) | | Regression testing | [Quality checks (Evals)](/docs/using-the-app/evals) | | Human approvals | [Inbox](/docs/using-the-app/inbox) | | Run history | [Activity](/docs/using-the-app/runs-and-observability) | Source: /raw/using-the-app/pipelines.mdx ### using-the-app/public-automation-api.mdx --- title: Public automation API description: Trigger approved automations from Lovable, v0, Next, Vercel, and other external apps with scoped API keys or hosted webhook URLs. --- Use the public automation API when an external app needs to start an approved AKOS automation without exposing the internal JSON-RPC surface. Create scoped keys in **[Connections](/docs/using-the-app/connections)** › **External apps**. For workspace-internal webhook triggers (sidecar paths, not hosted automation URLs), see **[Triggers](/docs/using-the-app/triggers)**. ## Choose a path | Path | Use it when | Secret handling | |---|---|---| | **API key run** | Your app has a server route, server action, edge function, or backend job. | Keep the API key in server-side environment variables only. | | **Hosted webhook** | You want a stable automation URL generated from Triggers. | Current hosted ingress uses the same server-side API key auth. | Never put `AGENTSKIT_API_KEY` in browser code, public `.env` files, client components, or generated frontend snippets. ## Create an API key 1. Open **Connections**. 2. Select **External apps**. 3. Create a scoped key with the automations it may run. 4. Copy the raw key once and store it in your server environment as `AGENTSKIT_API_KEY`. Keys are stored by hash. AKOS shows the raw secret only when the key is created. ## Server-side run ```ts export async function POST(req: Request) { const input = await req.json() const res = await fetch(`${process.env.AGENTSKIT_API_URL}/v1/automations/run`, { method: 'POST', headers: { 'content-type': 'application/json', authorization: `Bearer ${process.env.AGENTSKIT_API_KEY}`, 'idempotency-key': input.id ?? crypto.randomUUID(), }, body: JSON.stringify({ automationId: 'lead-intake', input, mode: 'real', }), }) if (!res.ok) return Response.json({ error: 'automation_failed' }, { status: 502 }) return Response.json(await res.json()) } ``` Use this from Lovable, v0, Next, Vercel, or any app builder by calling your own server endpoint. The app builder should never receive the AKOS key. ## Hosted webhook Create or edit a webhook trigger in **Automations > Triggers**. The form shows the hosted endpoint: ```http POST https://your-akos-host/v1/automations/webhooks/lead-intake Authorization: Bearer ak_live_... Content-Type: application/json Idempotency-Key: lead-form-123 ``` Example: ```bash curl -X POST 'https://your-akos-host/v1/automations/webhooks/lead-intake' \ -H 'content-type: application/json' \ -H 'authorization: Bearer ' \ -H 'idempotency-key: lead-form-123' \ -d '{"email":"ana@acme.com","message":"hello"}' ``` The request body becomes the automation input. ## Read run status ```bash curl 'https://your-akos-host/v1/automation-runs/pipe_123' \ -H 'authorization: Bearer ' ``` Status reads are scoped to runs created by the calling key. ## Security notes - Keys are org-scoped and may be limited to specific automation ids. - Revoked keys stop before reaching the runner. - `/rpc` remains internal-only; external apps only use `/v1/automations/*`. - Use `Idempotency-Key` for form submissions and retries. - Hosted webhook HMAC secrets are not part of this first version. Use API key auth until a dedicated webhook signing secret is available. ## Related screens | Need | Go to | |---|---| | Create / revoke API keys | [Connections](/docs/using-the-app/connections) › External apps | | Workspace webhook paths | [Automations](/docs/using-the-app/triggers) | | Target workflows | [Workflows](/docs/using-the-app/flows) | | Run history | [Activity](/docs/using-the-app/runs-and-observability) | Source: /raw/using-the-app/public-automation-api.mdx ### using-the-app/route-only-screens.mdx --- title: Route-only screens description: Deep-linkable screens that are not in the sidebar — how to reach them from their owner surfaces. --- Some screens stay **routable** (command palette, deep links, notifications) but were removed from the sidebar once their owner surface shipped (issue #3897). They are not hidden — assistants and the palette can still navigate to them by id. ## How to open any screen Press `Cmd K` / `Ctrl K` and type the screen id or a keyword (for example `plugins`, `config`, `coding`). ## Screen index | Screen id | Label / purpose | Reach from | |---|---|---| | `config` | Workspace settings (copilot, orchestration, privacy, export/import) | Top-bar **Settings** button | | `plugins` | Installed plugin lifecycle | [Marketplace](/docs/using-the-app/templates-and-marketplace) › Installed › Manage plugins | | `bundles` | Bundle import/export history | [General](/docs/using-the-app/workspaces) › Export/Import › Full bundle history | | `topologies` | Multi-agent collaboration templates | [Agents](/docs/using-the-app/agents) › How agents collaborate | | `tools` | Runtime tools registry sections | [General](/docs/using-the-app/workspaces) runtime sections, or [Tools](/docs/using-the-app/tools) | | `sandbox` | Sandbox policy shortcuts | [Security](/docs/using-the-app/security) or [General](/docs/using-the-app/workspaces) runtime sections | | `coding` | Coding-agent providers and runTask | [Agents](/docs/using-the-app/agents) or [Coding](/docs/using-the-app/coding) guide | | `templates` | Starter flow templates browser | [Workflows](/docs/using-the-app/flows) template picker, or palette `templates` | | `oem` | Brand & licensing (OEM entitlement) | Settings › Brand & licensing (when entitled) | | `flow-editor` | Full-page flow editor | [Workflows](/docs/using-the-app/flows) — open a flow | ## Brand & licensing (`oem`) Available when your workspace has the OEM entitlement. Open via **Settings › Brand & licensing** or the command palette (`oem`). Typical tabs: | Area | What you do | |---|---| | **License** | Import a signed license envelope and review validity / grace state. | | **Tenants** | Issue, suspend, or revoke tenant licenses (operator workflows). | | **Brand kit** | Edit tokens, logos, and white-label runtime projection. | | **Vertical packs** | Browse and apply OEM vertical YAML packs to the workspace. | | **Marketplace publish** | Export/import bundles for the marketplace catalog (publisher permissions). | Cloud-hosted OEM operators also use the separate **admin** console (`apps/admin/`) for tenant-wide control; desktop `oem` is the workspace-local brand + licensing surface. ## Aliases (also not sidebar items) | Screen id | Lands on | |---|---| | `runs`, `traces`, `observability` | [Activity](/docs/using-the-app/runs-and-observability) (or Traces / Observability standalone) | | `audit`, `break-glass` | [Access](/docs/using-the-app/governance) (Governance pillar) | ## Related screens | Need | Go to | |---|---| | Owner surfaces (flows, agents, workspace) | [Using the App index](/docs/using-the-app) | | Sandbox / egress policy detail | [Security](/docs/using-the-app/security) | | MCP and egress editor | [Tools](/docs/using-the-app/tools) | | Marketplace plugins | [Marketplace](/docs/using-the-app/templates-and-marketplace) | ## For contributors Route-only screens also have agent implementation guides in the repository contributor docs. Use the internal docs query CLI from a dev checkout (`pnpm docs:internal:query screen --agent`). Source: /raw/using-the-app/route-only-screens.mdx ### using-the-app/runs-and-observability.mdx --- title: Activity & Observability description: Monitor workflow executions, inspect traces, and track operational health from the unified Activity surface. --- AKOS captures detailed telemetry for every execution. The sidebar **Activity** screen (nav id `observe`) is the primary entry point for run monitoring. **Traces** and **Observability** remain separate routable screens for span-level and aggregate health views. ## Watching a run live AKOS shows you what's happening *while* a run executes, not only after it finishes. - **Live event feed** — the [Dashboard](/docs/using-the-app/dashboard) terminal-style activity feed streams events as they happen. Click any run event to open that run's detail. - **Running-node pulse on the canvas** — open a flow in the editor and run it: the executing node **pulses** on the canvas with a status bar naming the step in progress. - **Global run indicators** — a pulsing **top-bar pill** and a **sidebar badge** on Activity show in-flight run counts; Activity and Workflows nav items pulse while work is running. Click the pill to jump to Activity. - **Toasts** — brief notifications for run completion, approvals needed, or exports ready. These indicators read the same live run count everywhere. ## Activity screen (Runs) The Activity screen renders the **Runs** monitor (nav ids `observe` and `runs` both land here). ### Run list Each row shows: - Run ID and task description. - Status: `running`, `completed`, `failed`, `paused` (HITL), or `cancelled`. - Duration, cost (USD), and token count. - Trigger name (cron, webhook, manual, etc.). Use **search** to filter by task or run ID. Overflow actions include compare runs, CSV/NDJSON export (requires `runs:export`), signed batch export, and print. Filter chips appear when the list is scoped to a trigger or agent. ### Run detail Click a run to open the detail panel: - **Header** — status, share link, artifact viewer toggle, stop/retry controls. - **Metrics** — duration, cost, tokens, trigger. - **Assurance** — egress, firewall, sandbox decisions. - **Agents / tools / evals** — participants and invocations. - **Artifacts** — outputs linked to [Results](/docs/using-the-app/assets). ## Traces screen Open via command palette (`traces`) or deep-link alias. Shows OpenTelemetry-compatible distributed traces — one span per agent call, tool invocation, or sub-flow. Use Traces for latency diagnosis at span level. ## Observability screen Open via command palette (`observability`) or deep-link alias. Aggregate views: - **Health** — sidecar, storage, and configured service checks. - **Metrics** — run volume, error rates, latency, cost trends. - **Incidents** — anomaly and incident records linked to runs. ## Cost in run context Per-run cost appears in Activity detail and rollups on [Cost](/docs/using-the-app/cost). The Activity screen does not duplicate budget editing. ## Legacy deep links Older URLs and notifications may use `runs`, `traces`, or `observability` as screen ids. These remain valid `ActiveScreen` aliases — they route to Activity (runs) or the standalone Traces / Observability screens respectively. Audit moved to [Governance](/docs/using-the-app/governance) › Audit (no longer an Activity tab). ## Related screens | Need | Go to | |---|---| | Live overview | [Dashboard](/docs/using-the-app/dashboard) | | Workflow design | [Workflows](/docs/using-the-app/flows) | | Human approvals | [Inbox](/docs/using-the-app/inbox) | | Run outputs | [Results](/docs/using-the-app/assets) | | Spend per run | [Cost](/docs/using-the-app/cost) | | Sandbox / egress decisions | [Security](/docs/using-the-app/security) | Source: /raw/using-the-app/runs-and-observability.mdx ### using-the-app/security.mdx --- title: Security description: Sandbox policy, egress allowlists, prompt firewall, PII profiles, and break-glass elevation. --- The **Security** screen is where operators control execution boundaries: what code can run, what network destinations are allowed, how prompts are filtered, and when temporary elevation is granted. ## Sections ### Sandbox - **Level** — none, process, container, or stronger isolation modes (container requires Docker on PATH; probe via `runtime.status` before offering the option). - **Policy** — read/write path allowlists, environment allowlist, and network policy snapshot. - **Denials** — recent sandbox decisions that blocked an action. - **Flow preview** — hypothetical decision for a flow/agent combination before dispatch. The route-only **`sandbox`** screen (see **[Route-only screens](/docs/using-the-app/route-only-screens)**) exposes the same policy shortcuts from workspace runtime sections. ### Egress - **Policy** — domain allowlist and block-by-default mode (toggle is guarded when the allowlist is empty). - **Decisions log** — allowed and denied outbound requests. ### Firewall and PII Prompt firewall rules and custom PII redaction profiles are edited here. Changes take effect for subsequent runs without redeploying agents. ### Break-glass Time-boxed elevation requests (`access.breakGlass`) for emergencies. Grants and revokes append to the signed audit ledger. Use [Governance](/docs/using-the-app/governance) › Audit for verification. ## MCP operators External agents connected via `agentskit-os mcp-serve` can read and update firewall, egress, and PII profiles at runtime through MCP security tools — see the [CLI command reference](/docs/cli/command-reference). ## Related screens | Need | Go to | |---|---| | Signed audit trail | [Governance](/docs/using-the-app/governance) | | Compliance evidence export | [Compliance](/docs/using-the-app/compliance) | | Tool egress from flows | [Workflows](/docs/using-the-app/flows) run assurance panel | Source: /raw/using-the-app/security.mdx ### using-the-app/teams.mdx --- title: Teams description: Manage workspace users, teams, memberships, and role assignments. --- **Teams** (Settings section) is the canonical editing surface for workspace membership. [Governance](/docs/using-the-app/governance) shows policy overview and audit context; **Teams** is where you create users, invite members, assign roles, and manage team membership. ## Users - List principals in the workspace. - Invite by email with a selected role. - Update or revoke access for individual users. - Bulk-assign a role to multiple selected members. Backed by `users.*` RPC methods with RBAC enforcement on every mutation. ## Teams - Create, rename, or delete teams (`teams.*`). - Add or remove members from a team. - Assign team-scoped roles where your plan supports it. ## Relationship to Access (Governance) | Surface | Purpose | |---|---| | **Teams** | CRUD for users, teams, memberships, role assignment | | **Governance › Access** | Capability matrix, isolation profiles, operator role tables | When the assistant helps with "give someone access", clarify the target user or team and intended role before proposing a change — role mutations are security-sensitive. ## Related screens | Need | Go to | |---|---| | Role / capability matrix | [Governance](/docs/using-the-app/governance) | | Break-glass elevation | [Governance](/docs/using-the-app/governance) or [Security](/docs/using-the-app/security) | | Cloud tenant members (OEM) | Admin app `/members` | Source: /raw/using-the-app/teams.mdx ### using-the-app/templates-and-marketplace.mdx --- title: Templates & Marketplace description: Start workflows from pre-built templates, install vertical packs, and manage published bundles. --- AKOS provides two ways to accelerate setup: **Templates** (workflow starters built into the app) and the **Marketplace** (installable packs, integrations, and OEM bundles). ## Templates The Templates screen is a **three-step wizard** for creating a new workflow from a pre-built starting point. ### Step 1: Pick a template The picker page shows: - **Persona filter** — buttons to narrow templates by your role (for example, "Operations", "Finance", "Legal"). Selecting a persona hides templates not tagged for that audience. - **Template grid** — cards showing each template's name, category badge, and description. Click a card to select it. - **Start blank** bar — a text field where you can describe what you want in plain English. AKOS generates a blank flow pre-named from your description. Click **Start blank** or press Enter. If you select a template, you advance automatically to the Configure step. ### Step 2: Configure Fill in: - **Flow ID** — the unique identifier for your new workflow. - **Flow name** — a human-readable name. - **Run on save** — optionally toggle this to run the workflow immediately after saving. Click **Next** to proceed or **Back** to return to the picker. ### Step 3: Review Confirms your selections. Click **Save** to create the workflow, or **Save & Edit** to save and open it immediately in the flow editor. A step-dots indicator in the header shows your progress through the three steps. --- ## Marketplace The Marketplace screen lets you browse, install, and manage the AKOS catalog — vertical packs, integrations, and OEM-published bundles. > **Alpha (early access).** The Marketplace ships as a minimal, demo-scoped surface and is marked **Alpha** in the app. The data is real, but the catalog, publishing flow, and management tools are still early and will change. Treat it as a preview while we expand coverage. The screen is organised into three sections in the section rail: **Browse**, **Installed**, and **Manage**. ### Browse The Browse pane shows: - **Stats bar** — total listings, categories, and a count of installed items. - **Featured** — highlighted items, often vertically relevant to your active vertical. - **Filters** — narrow by vertical (finance, healthcare, legal, coding, etc.), capability tags, and a text search. - **Listings grid** — cards for each listing. Each card shows the name, author, category, short description, compatibility tags, and an **Install** button. **Domain packs** appear at the top of the browse results. Clicking **Apply** on a domain pack writes a set of starter agents and flows to your workspace configuration. Click any listing card to open the **Listing detail drawer**, which shows the full description, changelog, version, and screenshots. From the drawer you can also install the listing. After installing a listing, a confirmation banner appears with quick links to open the installed agents, flows, or templates in their respective screens. ### Installed The Installed pane lists every listing currently installed in this workspace. Each item shows its name, version, and an **Uninstall** button. If nothing is installed yet, an empty state prompts you to go to Browse. ### Manage The Manage pane is for workspace owners and OEM operators. It includes: - **Publisher keys** — manage the signing keys used to verify listings you publish. - **Private library** — upload or register private listings available only to your organisation. - **Connection suggester** — a tool that analyses your installed agents and suggests integrations you might want to configure. - **Report** — flag a public listing for review if it violates policies. > The **Publish** tab (for OEM operators publishing bundles to the marketplace) is only visible if your account has publisher permissions. ## Related screens | Need | Go to | |---|---| | Open created workflows | [Workflows](/docs/using-the-app/flows) | | Agent registry after install | [Agents](/docs/using-the-app/agents) | | Post-install integrations | [Connections](/docs/using-the-app/connections) | | Plugin lifecycle (`plugins`) | [Route-only screens](/docs/using-the-app/route-only-screens) | | Starter templates (`templates`) | [Route-only screens](/docs/using-the-app/route-only-screens) | | OEM publish / brand kit | [Route-only screens](/docs/using-the-app/route-only-screens#brand--licensing-oem) | Source: /raw/using-the-app/templates-and-marketplace.mdx ### using-the-app/tools.mdx --- title: Tools description: Configure sandbox guardrails, manage the egress allow-list, view tool call activity, and connect MCP servers. --- The Tools screen brings together every runtime policy and activity feed related to tool execution. It is split into two groups in the section rail: **Guardrails** (configuration) and **Activity** (live logs). ## Guardrails ### Sandbox The Sandbox section controls how agent tool calls are isolated at runtime: - **Sandbox mode** — enable or disable the sandbox for tool execution. When enabled, tool calls run in an isolated environment that restricts access to the host system. - **Network policy** — whether sandboxed tools can make outbound network calls. - **Filesystem policy** — which directories sandboxed tools may read from or write to. - **Resource limits** — CPU time and memory limits for sandboxed executions. Changes here affect all subsequent tool calls in the workspace. ### Egress The Egress section is the outbound network allow-list editor. When egress enforcement is enabled (configured in the workspace security settings), every outbound HTTP/HTTPS call an agent makes is checked against this list. **Rules list** Each rule shows: - A **pattern** (exact host or glob, for example `*.openai.com`). - The **action**: `allow` or `deny`. - An optional **label** for documentation purposes. - A **decision feed** showing recent egress decisions matched against this rule. **Adding a rule** Click **Add rule**, enter the host pattern, choose `allow` or `deny`, and save. Rules are evaluated top-to-bottom; the first matching rule wins. **Decision feed** Below the rules list, a live feed shows recent egress decisions: the URL requested, the rule that matched, and whether it was allowed or blocked. ## Activity ### Tool calls The Tool calls section shows a chronological log of every tool invocation in the workspace. Each row shows: - The tool ID (for example, `http.get`, `sql.query`, `slack.send`). - The agent and run that made the call. - Input and output summaries. - Duration and status (success / error). Click a row to expand the full input/output payload. ### MCP The MCP (Model Context Protocol) section shows connected MCP servers. AKOS can expose its tool catalog to external MCP clients, and can also connect to external MCP servers to use their tools. **AKOS as an MCP server** AKOS exposes a built-in MCP server at `akos mcp-serve` (CLI) or via the configured stdio transport. The server exposes all registered tools and agents as MCP tools. Connected external MCP clients see the full tool catalog. **External MCP servers** Add external MCP server endpoints here. Registered servers are available as tool sources for agents and flows. Each entry shows the server URL, connection status, and the tools it exposes. ## Related screens | Need | Go to | |---|---| | Firewall and PII policy | [Security](/docs/using-the-app/security) | | Route-only screen (`tools`) | [Route-only screens](/docs/using-the-app/route-only-screens) | | Workspace runtime sections | [General](/docs/using-the-app/workspaces) | | MCP connection setup | [Connections](/docs/using-the-app/connections) | | Agent tool bindings | [Agents](/docs/using-the-app/agents) | Source: /raw/using-the-app/tools.mdx ### using-the-app/triggers.mdx --- title: Triggers description: Schedule workflows on a cron, watch for file changes, or receive inbound webhooks to start flows automatically. --- The Triggers screen lets you configure automations that start workflows without manual intervention. Triggers are loaded from your workspace configuration and polled live every 5 seconds. ## Trigger types | Type | Description | |---|---| | **Cron** | Runs a workflow on a schedule using a cron expression (e.g. every night at midnight). | | **File watch** | Runs a workflow when a file or folder changes on disk. | | **Webhook** | Runs a workflow when an HTTP POST arrives at the AKOS webhook endpoint. | | **Inline** | Defined directly inside a flow's Trigger node (configured from the flow editor). | ## Trigger list The screen shows three panels: - **Cron** — lists all active cron triggers with their ID, kind, and time until the next fire. - **File watchers** — lists all active file-watch triggers. - **Inline triggers** — a table of triggers defined inside flows, editable from this screen. Each row has a **Runs** button that jumps to the Runs screen pre-filtered to runs started by that trigger. ## Webhook server If any webhook triggers are active, a banner at the top of the screen shows the current webhook server address and the registered paths. Example: ``` Webhook server live at http://0.0.0.0:8080; paths: /webhook/github, /webhook/stripe ``` To make the webhook server reachable from the internet, start AKOS with the `--public` flag or set `AKOS_WEBHOOK_HOST=0.0.0.0` in your environment. For external apps (Lovable, v0, hosted backends) that need scoped API keys or stable automation URLs instead of workspace webhook paths, see **[Public automation API](/docs/using-the-app/public-automation-api)**. ## Adding a trigger To add a trigger quickly, open the command palette (`Cmd K`) and search for: - **Add cron trigger** - **Add webhook trigger** - **Add file watcher** These commands open the trigger editor pre-filled with the selected kind. ## Trigger editor (inline triggers) The inline trigger editor is embedded at the bottom of the Triggers screen. It lists all inline triggers (those defined inside flow Trigger nodes) and lets you edit them without opening the flow editor. ### Cron fields - **ID** — unique identifier for this trigger. - **Cron expression** — standard 5-field cron syntax. - **Flow** — the workflow to run when the trigger fires. - **Input** — optional static JSON to pass as the flow's input. ### File-watch fields - **Path** — the file or directory to watch. - **Events** — which events to watch for (create, modify, delete). - **Flow** — the workflow to run. ### Webhook fields - **Path** — the URL path for this webhook (e.g. `/webhook/github`). - **Provider** — the webhook provider; AKOS verifies the request signature automatically for supported providers (GitHub, Stripe, Slack, PagerDuty, Sentry, Linear, Twilio). - **Flow** — the workflow to run. - **Copy URL** — copies the full inbound URL for this webhook to the clipboard. ## Related screens | Need | Go to | |---|---| | Flow design | [Workflows](/docs/using-the-app/flows) | | External API dispatch | [Public automation API](/docs/using-the-app/public-automation-api) | | Run history | [Activity](/docs/using-the-app/runs-and-observability) | Source: /raw/using-the-app/triggers.mdx ### using-the-app/workspaces.mdx --- title: Workspaces description: Configure workspace identity, secrets, team access, cost limits, cloud sync, and isolation settings. --- The Workspaces screen lets workspace owners and admins manage every aspect of a workspace's configuration. Select a workspace from the list on the left, then use the section rail to navigate between configuration areas. ## Identity The Identity section shows and lets you edit the workspace's basic properties: - **Name** — the display name shown in the top bar. - **ID** — the read-only unique identifier. - **Description** — an optional summary. - **Vertical** — the active vertical (finance, healthcare, legal, coding, etc.) that drives template filtering and marketplace ranking. - **Active / Inactive toggle** — deactivate a workspace without deleting it. Click **Save** to persist changes. ## Secrets The Secrets section is the local secrets vault. Store API keys and credentials here so agents and flows can reference them by name rather than embedding raw values in configuration. - Each secret has a **name** (the reference key used in configuration) and an **encrypted value**. - Click **Add secret** to create a new entry. - Click the eye icon to temporarily reveal a value. - Click **Delete** to remove a secret. For secrets stored in an external vault, use the Connections screen (External secrets tab) to configure vault references. ## Agents The Agents section shows agents that have been defined inline in this workspace's configuration file (as opposed to agents created through the Agent registry UI). These are read-only here; edit them directly in the Config editor or through the Agents screen. ## Cost The Cost section lets you set budget limits and alerts for this workspace: - **Monthly budget** — the maximum spend allowed per month. Flows and agents that would exceed this limit are blocked. - **Alert threshold** — a percentage of the budget at which an alert notification is sent. - **Hard limit** — whether to block all runs when the budget is exhausted, or only warn. Changes take effect for the next billing period. ## Team The Team section shows the current seats on this workspace and lets you invite new members. - **Seats list** — each member's email address and role. - **Remove** — revoke a member's access. - **Invite form** — enter an email address, choose a role (`viewer`, `editor`, `admin`, or `owner`), and click **Invite**. Roles and their capabilities are managed in the [Governance](/docs/using-the-app/governance) screen. ## Cloud sync Configure a cloud storage backend for this workspace. When cloud sync is enabled: - Workspace configuration, agents, flows, and secrets are replicated to the configured bucket. - The workspace can be restored on a new machine by pointing at the same bucket. Fields: bucket URL, access credentials, sync interval, and encryption key. **Persistent sync state.** Sync state is persisted, so it survives a restart — the workspace resumes from where it left off instead of re-syncing from scratch or losing its audit trail. **Pause and resume.** You can pause the sync loop at any time and resume it later. The paused state persists across restart, so a paused workspace stays paused until you explicitly resume it. **Sync history.** A paginated history records every sync event so you can audit what happened and when. Entries are one of: `sync`, `pause`, `resume`, or `conflict-resolved`, each with a timestamp and outcome. ## Isolation The Isolation section controls how strictly this workspace is isolated from others on the same AKOS installation. Three levels are available: - **None** — shared resources; no network isolation. - **Standard** — default. Isolated storage and network namespaces. - **Strict** — maximum isolation; additional constraints on cross-workspace access and shared caches. Changes are reflected immediately on the Governance > Policies screen. ## Export / Import The Export / Import section lets you: - **Export workspace** — download a YAML/JSON snapshot of the entire workspace (agents, flows, triggers, secrets metadata — not secret values) for backup or migration. - **Import workspace** — upload a previously exported file to restore or clone a workspace. ## Choosing files and folders Anywhere AKOS needs a file or folder on disk — a SQLite database path for a connection, a file-backed agent memory store, a knowledge source folder, or a local artifact location — the field uses a **native picker** rather than asking you to type a raw path. On the **desktop app**, click **Browse…** to open your operating system's standard file or directory dialog. The chosen path is filled in for you and shown read-only, so there are no typos or invalid paths. File pickers are filtered to the relevant extensions where it makes sense (for example, only database files when choosing a SQLite path). In the **web console**, the native OS dialog is not available, so the field shows a standard file chooser instead. For paths that may be relative or contain glob patterns, an **Advanced: type manually** link reveals an editable field. ## Danger zone The Danger zone section (visible to workspace owners only) contains destructive actions: - **Rename workspace** — changes the name and slug. - **Delete workspace** — permanently deletes the workspace and all its data. This action requires you to type the workspace name to confirm. It is not reversible. > The Delete button is only enabled if another workspace exists to switch to, preventing you from accidentally deleting your only workspace. ## Related screens | Need | Go to | |---|---| | Integrations | [Connections](/docs/using-the-app/connections) | | Workspace settings (`config`) | [Route-only screens](/docs/using-the-app/route-only-screens) | | Bundle history (`bundles`) | [Route-only screens](/docs/using-the-app/route-only-screens) | | Access policy | [Access](/docs/using-the-app/governance) | Source: /raw/using-the-app/workspaces.mdx ## for-agents index ### for-agents/AGENT-MERGE-RULES.md # AGENT MERGE RULES Mandatory protocol for any agent resolving merge conflicts, rebasing, or otherwise touching another agent's work. Implements ADR-0039. ## Prime directive > Merges SUM work. They never silently subtract. If you are about to make another agent's exports, files, or behavior disappear, STOP and verify it is explicitly acknowledged. ## Allowed actions - Take the union of two independent additive changes. - Reconcile two refactors by merging the stronger parts of each, then explain the choice in the commit body. - Reorder imports / fix formatting on the merged result. ## Forbidden actions - `git checkout --theirs ` or `git checkout --ours ` without a `merge-override: ` annotation in the commit body. - Bulk-resolving conflicts by re-creating a file from scratch. - `git reset --hard` to skip the resolution. - Squashing a branch in a way that drops a co-author's commits without `Co-authored-by:` + acknowledgement. ## Required record-keeping When the resolution chooses one side over another, OR removes any exported symbol, file, or feature: 1. Add to the commit body: ``` removes: - ``` 2. Optionally update `.github/pr-intent.yaml` with the same entry. 3. If the removal is API-facing, ensure it traversed a `@deprecated` lifecycle in a prior release. ## How to verify locally before pushing ```bash node scripts/check-no-silent-deletion.mjs ``` This compares exported symbols between BASE_REF (default `main`) and HEAD, plus removed files, plus net deletions. It validates that every disappearance is acknowledged. To check the manifest shape: ```bash node scripts/check-pr-intent.mjs ``` ## When in doubt Abort. `git rebase --abort` or `git merge --abort`. Open a discussion with the human reviewer. Losing the work of another agent is worse than losing time. ## What CI does CI runs `check-no-silent-deletion` and `check-pr-intent` on every PR. A failing gate blocks merge until the missing acknowledgement is added or the resolution is corrected. Source: /raw/for-agents/AGENT-MERGE-RULES.md ### for-agents/INDEX.md # for-agents INDEX One-page jump table for the deep package + screen + flow guides. Read [`README.md`](./README.md) for layout + indexing; read [`conventions.md`](./conventions.md) for workspace-wide code conventions before editing any package. For assistant-discoverable screens/catalogs, use [`assistant-linkable-metadata.md`](./assistant-linkable-metadata.md). For broader internal onboarding, the generated package atlas, documentation map, and historical references, start at [`../internal/README.md`](../internal/README.md). If a package you need isn't listed here, it doesn't exist yet — check `packages/` on disk before assuming. ## Packages (one doc each, six fixed sections) ### Contracts + foundation - [os-core](./packages/os-core.md) — Zod schemas + event bus + error model (<25 KB gz). - [os-contracts](./packages/os-contracts.md) — JSON-RPC contract registry + dispatcher. - [os-log](./packages/os-log.md) — Logger + transports + structured fields. - [os-capabilities](./packages/os-capabilities.md) — Abstract capability catalog for onboarding/vendor resolution. - [os-control-plane](./packages/os-control-plane.md) — Pure control-plane context, entitlement, and policy resolvers. ### Runtime + flow - [os-flow](./packages/os-flow.md) — DAG walker, HITL gates, run events. - [os-runtime](./packages/os-runtime.md) — Handlers (agent/tool/human/condition/parallel), state machine, adapters. - [os-runtime-agentskit](./packages/os-runtime-agentskit.md) — Adapter into the AgentsKit upstream provider/tools. - [os-sandbox](./packages/os-sandbox.md) — Spawner + registry for code-exec sandboxes. - [os-headless](./packages/os-headless.md) — Sidecar entrypoint + JSON-RPC transport. - [os-cdc](./packages/os-cdc.md) — CDC trigger adapters, watermarks, and daemon primitives. - [os-pipeline](./packages/os-pipeline.md) — Process/pipeline phase engine, approval gates, and bundles. ### Storage + observability - [os-storage](./packages/os-storage.md) — SQLite + in-memory stores for every persistent surface. - [os-audit](./packages/os-audit.md) — Append-only audit ledger. - [os-observability](./packages/os-observability.md) — OTEL spans/metrics + incident model. - [os-cost](./packages/os-cost.md) — Cost metering, budgets, spend policy, and alerts. - [os-onboarding-telemetry](./packages/os-onboarding-telemetry.md) — Privacy-safe onboarding telemetry events. ### Security + collaboration - [os-security](./packages/os-security.md) — Egress allowlist, RBAC, vault, firewall, PII. - [os-collab](./packages/os-collab.md) — CRDT collab + sync gateway. - [os-cloud-sync](./packages/os-cloud-sync.md) — Vault sync, share bundles, CRDT root. - [os-license](./packages/os-license.md) — Envelope sign/verify + billing adapters. - [os-tenant-config](./packages/os-tenant-config.md) — Tenant config + plan entitlements. - [os-vault](./packages/os-vault.md) — Encrypted secret vault document, persistence, and backend dispatch. - [os-oauth](./packages/os-oauth.md) — OAuth provider registry, PKCE lifecycle, tokens, and refresh scheduling. ### Knowledge + intelligence - [os-rag](./packages/os-rag.md) — Loaders, embedder, reranker, vector store. - [os-rag-adapters](./packages/os-rag-adapters.md) — Concrete RAG embedders, loaders, vector stores, and rerankers. - [os-mcp-bridge](./packages/os-mcp-bridge.md) — MCP client manager. - [os-copilot](./packages/os-copilot.md) — Copilot bootstrap + slash + mentions + session. - [os-statechart](./packages/os-statechart.md) — Conversational state-machine primitive (assistant domain flows, ADR-0163). - [os-coding-agents](./packages/os-coding-agents.md) — CLI coding-agent provider abstraction. - [os-generative](./packages/os-generative.md) — Spec → flow draft generator. - [os-command-palette](./packages/os-command-palette.md) — Cmd+K ranked search registry and handler factory. ### Workflow integrations - [os-triggers](./packages/os-triggers.md) — Cron, webhook, CDC, file, integration triggers ([deep ref](./os-triggers.md)). - [os-import](./packages/os-import.md) — LangChain/LangGraph/Flowise/Langflow/Dify/n8n importers. - [os-marketplace](./packages/os-marketplace.md) — Bundle scanner, publish, install, signing. - [os-dev-orchestrator](./packages/os-dev-orchestrator.md) — PRD→PR pipeline executor. - [os-connectors](./packages/os-connectors.md) — Concrete outbound connection sender adapters. - [os-integrations](./packages/os-integrations.md) — Upstream integration catalog projections into OS contracts. ### UI + product - [os-ui](./packages/os-ui.md) — Reusable primitives (Button, Badge, Select, EmptyState, …). - [os-desktop](./packages/os-desktop.md) — Facade/aggregate for the desktop-* cluster; hosts `App`, `hasTauri()`, telemetry sink. - [os-notifications](./packages/os-notifications.md) — Notification store + routing + sidecar-event classifier + error-doc resolver (React glue at `/react`). - [os-templates](./packages/os-templates.md) — Workspace templates + verticals. - [os-whitelabel](./packages/os-whitelabel.md) — Brand kit + plan presets. - [os-cli](./packages/os-cli.md) — `akos` (alias `agentskit-os`) terminal entry point; full cockpit command surface. - [os-for-agents](./packages/os-for-agents.md) — In-app docs index for copilot retrieval. - [os-oem](./packages/os-oem.md) — OEM tenants, brand kits, license verification, and domain packs. - [os-flags-posthog](./packages/os-flags-posthog.md) — PostHog binding for feature flag evaluation. ### Desktop / web screen cluster (ADR-0108) All `desktop-*` packages are framework-agnostic React. `apps/desktop` (Tauri) and `apps/console` (Vite browser host, ADR-0117) both render them — one screen codebase, two runtimes. - [desktop-shell](./packages/desktop-shell.md) — App bootstrap: App root, AppShell, screens-registry, IoC wirers. Thin facade over os-desktop. - [desktop-components](./packages/desktop-components.md) — Shared UI component layer wrapping os-ui primitives. - [desktop-sidecar-bridge](./packages/desktop-sidecar-bridge.md) — Tauri JSON-RPC transport, sidecar request wrappers, Zustand stores, hooks (L2 binding, private). - [desktop-platform-admin](./packages/desktop-platform-admin.md) — Dashboard, observe, traces, governance, compliance, security, oem, cost, pipelines, workspaces, break-glass, consent, config screens. - [desktop-data-infra](./packages/desktop-data-infra.md) — Runs, assets, audit ledger, knowledge surfaces. - [desktop-operations](./packages/desktop-operations.md) — Connections, marketplace, inbox, tools surfaces. - [desktop-agent-workspace](./packages/desktop-agent-workspace.md) — Agents, coding, evals, copilot screens. - [desktop-workflow-builder](./packages/desktop-workflow-builder.md) — FlowEditor, Flows, Triggers, Templates screens. - [desktop-test-setup](./packages/desktop-test-setup.md) — Shared jsdom polyfills for desktop package tests. #### Shared form components (`@agentskit/desktop-components`) Cross-screen pickers used by the create/edit forms. Each is backed by a specific RPC or pure derivation. Every component doc includes a `## Human guide` pointing at the end-user screen that best explains where the control appears. - [model-catalog-combobox](./components/model-catalog-combobox.md) — live 5244-model picker, server-side search via `models.catalog.list`. - [catalog-combobox](./components/catalog-combobox.md) — generic listing-RPC typeahead with free-type fallback (secrets/flows/workspaces/connections). - [file-path-input](./components/file-path-input.md) — native Tauri file/directory picker with browser `FileInput` fallback. - [id-field](./components/id-field.md) — auto-generated slug ID preview + Advanced override (`autoGenerateId` / `useAutoId`). #### Copilot inline render frames (`desktop-agent-workspace`) Registered in `advisory-inline-components.tsx` and mirrored in `packages/os-copilot/src/prompt.ts` (`RENDER_FRAME_GUIDE`). - [tool-selection-step](./components/tool-selection-step.md) — onboarding tool/MCP picker (`ToolSelectionStep`). - [configuration-plan-step](./components/configuration-plan-step.md) — per-tool setup plan after selection (`ConfigurationPlanStep`). ### Enterprise GA v1 — storage + infrastructure - [os-store-postgres](./packages/os-store-postgres.md) — Postgres `RelationalDriver` + RLS migrations + `storeForOrg`. - [os-rag-pgvector](./packages/os-rag-pgvector.md) — pgvector `VectorStore` with HNSW ANN index + org_id scoping. - [os-sandbox-vercel](./packages/os-sandbox-vercel.md) — Vercel Firecracker µVM provider + caps-resolver + caps-enforcer + warm-pool + run-meter. - [os-blob](./packages/os-blob.md) — `BlobStore` port re-export + `LocalFsDriver` (desktop/dev). - [os-blob-s3](./packages/os-blob-s3.md) — AWS S3 `BlobStore` adapter + presigned URLs. - [os-telemetry](./packages/os-telemetry.md) — Vendor-neutral OTel SDK wrapper + `initOtel` + `withScope`. - [os-otel-grafana](./packages/os-otel-grafana.md) — Grafana Cloud OTLP exporter adapter. - [os-email](./packages/os-email.md) — `EmailSender` port + template registry + console dev sink. - [os-email-resend](./packages/os-email-resend.md) — Resend + React Email adapter. - [os-pdf](./packages/os-pdf.md) — `PdfRenderer` port + `PdfDocument` tree + pdfkit adapter. - [os-errors](./packages/os-errors.md) — `ErrorReporter` port + no-op / console / `RedactingReporter`. - [os-errors-sentry](./packages/os-errors-sentry.md) — Sentry `ErrorReporter` adapter (PII-safe). - [os-sealer-vault](./packages/os-sealer-vault.md) — HashiCorp Vault Transit `AsyncKeyRingSealer`. - [os-egress-guard](./packages/os-egress-guard.md) — Per-org egress policy + hosted enforcer. - [os-bot-signal](./packages/os-bot-signal.md) — `BotSignalPort` (bot/IP-reputation) + no-op adapter; vendor pluggable later. ### Contracts + structured outputs - [agent-contracts](./packages/agent-contracts.md) — Versioned registry of Zod schemas for structured agent outputs. ### Vertical packs - [pack-loader](./packages/pack-loader.md) — Runtime YAML parsing, schema validation, and materialisation of packs into sidecar stores. - [os-vertical-store](./packages/os-vertical-store.md) — The one adapter bridging os-storage's vertical row store to os-whitelabel's typed registry port; shared by the sidecar and OEM admin. - [pack-fixtures-reference](./packages/pack-fixtures-reference.md) — Reference YAML fixture packs for 5 verticals (coding, finance, healthcare, law, marketing). Data-only. - [pkw-test-fixtures](./packages/pkw-test-fixtures.md) — Dev-only fixtures for pipeline/workflow confidence tests. ## Screens (desktop renderer) - [agents](./screens/agents.md) · [assets](./screens/assets.md) · [audit](./screens/audit.md) · [break-glass](./screens/break-glass.md) · [bundles](./screens/bundles.md) · [coding](./screens/coding.md) · [compliance](./screens/compliance.md) · [config](./screens/config.md) · [connections](./screens/connections.md) · [copilot](./screens/copilot.md) · [cost](./screens/cost.md) · [dashboard](./screens/dashboard.md) · [evals](./screens/evals.md) · [flow-editor](./screens/flow-editor.md) · [flows](./screens/flows.md) · [governance](./screens/governance.md) · [inbox](./screens/inbox.md) · [knowledge](./screens/knowledge.md) · [marketplace](./screens/marketplace.md) · [mcp](./screens/mcp.md) · [observability](./screens/observability.md) · [observe](./screens/observe.md) · [oem](./screens/oem.md) · [pipelines-board](./screens/pipelines-board.md) · [plugins](./screens/plugins.md) · [runs](./screens/runs.md) · [sandbox](./screens/sandbox.md) · [sdlc](./screens/sdlc.md) · [security](./screens/security.md) · [teams](./screens/teams.md) · [templates](./screens/templates.md) · [tools](./screens/tools.md) · [topologies](./screens/topologies.md) · [traces](./screens/traces.md) · [triggers](./screens/triggers.md) · [whitelabel](./screens/whitelabel.md) · [workspaces](./screens/workspaces.md) ### Admin screens (Enterprise GA v1 — `apps/admin/`) Overview: [admin-app](./screens/admin-app.md) — OEM control plane entry, nav groups, `surface-registry.ts`. - [admin-dashboard](./screens/admin-dashboard.md) · [admin-tenants](./screens/admin-tenants.md) · [admin-tenant-detail](./screens/admin-tenant-detail.md) · [admin-catalogs](./screens/admin-catalogs.md) · [admin-onboarding](./screens/admin-onboarding.md) · [admin-onboarding-insights](./screens/admin-onboarding-insights.md) · [admin-license](./screens/admin-license.md) · [admin-members](./screens/admin-members.md) · [admin-brand](./screens/admin-brand.md) · [admin-whitelabel](./screens/admin-whitelabel.md) · [admin-verticals](./screens/admin-verticals.md) · [admin-pages-rbac](./screens/admin-pages-rbac.md) · [admin-rbac](./screens/admin-rbac.md) · [admin-governance](./screens/admin-governance.md) · [admin-distribution](./screens/admin-distribution.md) · [admin-audit](./screens/admin-audit.md) · [admin-compliance](./screens/admin-compliance.md) · [admin-compliance-telemetry](./screens/admin-compliance-telemetry.md) · [admin-scim-oversight](./screens/admin-scim-oversight.md) · [admin-billing-oversight](./screens/admin-billing-oversight.md) · [admin-preview-as](./screens/admin-preview-as.md) · [admin-sign-in](./screens/admin-sign-in.md) ## Apps (deployable surfaces) Six deliverables under `apps/`. Each consumes packages but is not itself a published package — no for-agents doc; edits go straight in `apps//`. | App | Path | Purpose | |---|---|---| | **admin** | `apps/admin/` | OEM tenancy console (whitelabel admins manage their tenants). | | **console** | `apps/console/` | Vite + React 19 web console (ADR-0117). Mounts the *same* desktop app shell (`App` from `desktop-shell`/`os-desktop`) in the browser — no Tauri runtime, so the shared `sidecarRequest` transport resolves to the headless HTTP path (`/api/rpc`, overridable via `VITE_SIDECAR_URL`); `WEB_HOST_CAPABILITIES` hides desktop-only affordances via the `HostCapabilities` seam. The desktop UI is the single source of truth. | | **cloud** | `apps/cloud/` | Control-plane HTTP server (vault, share bundles, sync gateway, license issuance bridge). Tenant-mutating routes derive `orgId` from a verified session via `resolveAuthContext` (api/request-context.ts, ENT-2 #1711) — never from request body; prod fails closed without `opts.auth`. Cloud-wide abuse controls via `api/rate-limit-middleware.ts` (ENT-4) — see `apps/cloud/README.md#abuse-controls-ent-4`. | | **desktop** | `apps/desktop/` | Tauri shell that hosts the `os-desktop` renderer + spawns the headless sidecar. | | **license-service** | `apps/license-service/` | Issues + verifies signed license envelopes for offline-capable installs. Admin routes use scoped, rotatable, expiring tokens with structured audit (#1712 — see app README). | | **web** | `apps/web/` | Public marketing/docs plus authenticated multi-tenant web entry (`app.agentskit.io`, `*.app.agentskit.io`). Uses shared desktop/console surfaces where applicable; host/tenant parsing consumes `os-core` tenancy contracts and identity decisions come from cloud/control-plane, not UI state. | Web deploy safety: use [`../web/authenticated-app-deploy-checklist.md`](../web/authenticated-app-deploy-checklist.md) before promoting the authenticated app. `akos.agentskit.io` stays public marketing/docs; `app.agentskit.io` and `*.app.agentskit.io` are the product app. Use [`../web/runtime-modes.md`](../web/runtime-modes.md) before treating Vite/5173 standalone, desktop local, hosted web, or self-host evidence as equivalent. ## Flow recipes All 14 flows map a `humanDoc` path in `pnpm docs:internal:query flow --agent`. - [prd-to-pr](./flows/prd-to-pr.md) — Killer demo: PRD bundle → drafted PR with HITL gate. Human: [`pipelines.mdx`](../../apps/web/content/docs/using-the-app/pipelines.mdx). - [eval-suite](./flows/eval-suite.md) — Run an eval suite end-to-end. Human: [`evals.mdx`](../../apps/web/content/docs/using-the-app/evals.mdx). - [trigger-to-run](./flows/trigger-to-run.md) — Webhook/cron → run dispatch. Human: [`triggers.mdx`](../../apps/web/content/docs/using-the-app/triggers.mdx). - [install-marketplace-plugin](./flows/install-marketplace-plugin.md) — Marketplace install pipeline. Human: [`templates-and-marketplace.mdx`](../../apps/web/content/docs/using-the-app/templates-and-marketplace.mdx). - [integration-setup-assistant](./flows/integration-setup-assistant.md) — Assistant-guided OAuth/app-install/secret setup. Human: [`integration-setup.mdx`](../../apps/web/content/docs/using-the-app/integration-setup.mdx). - [public-automation-api](./flows/public-automation-api.md) — External webhooks/API keys → workflow dispatch. Human: [`public-automation-api.mdx`](../../apps/web/content/docs/using-the-app/public-automation-api.mdx). - [assistant-knowledge-seed](./flows/assistant-knowledge-seed.md) — Ledger + rebuild path for assistant RAG. Human: [`knowledge.mdx`](../../apps/web/content/docs/using-the-app/knowledge.mdx). - [control-plane-resolve](./flows/control-plane-resolve.md) — Canonical `ControlPlaneContext` before mutating work. Human: [`architecture-overview.md`](../enterprise-final/architecture-overview.md). ### Enterprise GA v1 cross-cutting flows - [storage-migration](./flows/storage-migration.md) — Local SQLiteFs → cloud Postgres + S3. Human: [`migrating.mdx`](../../apps/web/content/docs/cli/migrating.mdx). - [brand-publish](./flows/brand-publish.md) — Admin whitelabel editor → 4 sinks → web hot-load ≤ 60 s. Human: [`apps/admin/README.md`](../../apps/admin/README.md). - [license-lifecycle](./flows/license-lifecycle.md) — Stripe checkout → provisioning → renewal → revoke. Human: [`renewal.md`](../enterprise-final/renewal.md). - [dr-rehearsal](./flows/dr-rehearsal.md) — Quarterly DR drill. Human: [`runbook-dr.md`](../enterprise-final/runbook-dr.md). - [hosted-sandbox-run](./flows/hosted-sandbox-run.md) — Vercel sandbox run + metering. Human: [`run-lifecycle.mdx`](../../apps/web/content/docs/how-it-works/run-lifecycle.mdx). - [customer-onboarding](./flows/customer-onboarding.md) — Marketing CTA → first run → audit. Human: [`customer-onboarding-walkthrough.md`](../enterprise-final/customer-onboarding-walkthrough.md). ## Operations - [backup-dr](./backup-dr.md) — full-state backup, encryption, offsite, restore drill (ENT-5 #1714). - [ecosystem-maintenance](./ecosystem-maintenance.md) — CI/script inventory, cross-cutting ownership map, stale-doc rule, and package-addition checklist. ## Anchor files (outside this directory) - [`../../AGENTS.md`](../../AGENTS.md) — package routing table (start here when you don't know which package to touch). - [`../internal/README.md`](../internal/README.md) — generated internal docs hub, package atlas, docs map, DevEx guide, architecture map, and historical index. - [`../content-catalog.generated.md`](../content-catalog.generated.md) — generated catalog of every tracked Markdown, MDX, and HTML documentation file. - [`../../CLAUDE.md`](../../CLAUDE.md) — non-negotiables mirror. - [`../../MANIFESTO.md`](../../MANIFESTO.md) — philosophy + the four rules. - [`../adr/`](../adr/) — accepted architecture decisions; source of truth. - [`../rfc/`](../rfc/) — in-flight RFCs. ## When to read what | Task | Read first | |---|---| | Map a change to a package | [`../../AGENTS.md`](../../AGENTS.md) → routing table | | Find any doc (agent or human) | `pnpm docs:internal:query search --agent` → `screen` / `flow` / `component` / `package` handoff | | Write code for a specific package | this INDEX → that package's `for-agents` doc | | Touch a desktop screen | `pnpm docs:internal:query screen --agent` or this INDEX → screen doc | | End-user guide for a screen | `apps/web/content/docs/using-the-app/.mdx` (indexed when assistant-knowledge is seeded) | | Reuse a workflow recipe | `pnpm docs:internal:query flow --agent` or flows section above | | End-user guide for a flow | All 14 flows return `humanDoc` in `flow --agent` handoff (see flows section above) | | Touch a shared form component | `pnpm docs:internal:query component --agent` or components section above | | Add a new method / contract | [os-contracts](./packages/os-contracts.md) + the consumer package's doc | | Add a new schema or error code | [os-core](./packages/os-core.md) | | Persist new state | [os-storage](./packages/os-storage.md) | | Backup / restore / DR | [backup-dr](./backup-dr.md) | | Anything cross-cutting | [`conventions.md`](./conventions.md) | Source: /raw/for-agents/INDEX.md ### for-agents/README.md # AgentsKitOS — Documentation for Agents This directory exists so the in-OS copilot has reliable context when indexing the workspace knowledge base. The folder structure mirrors the shipped package + screen layout so RAG retrieval surfaces the right chunk for the right task. ## Layout ``` docs/for-agents/ packages/ # one markdown per packages/os-* package os-core.md os-headless.md … screens/ # one markdown per desktop screen flows.md runs.md … flows/ # canonical workflow recipes (14; each maps a human guide) prd-to-pr.md eval-suite.md … components/ # shared desktop form/copilot frames (6) catalog-combobox.md … contracts/ # JSON-RPC method reference, indexed by name ``` ## Conventions For workspace-wide code conventions (file size targets, function size targets, sub-path layout after RFC-0017, navigation rules), see [`conventions.md`](./conventions.md). Read this first if you're touching any package. For monorepo-maintenance work (CI/script cleanup, cross-cutting package ownership, stale docs, or adding packages), see [`ecosystem-maintenance.md`](./ecosystem-maintenance.md). Every package doc has the same six sections so the copilot can extract predictable answers: 1. **Purpose** — one-paragraph what the package does. 2. **Public exports** — entry points + key types. 3. **Wired stores** — persistence dependencies. 4. **Calls** — JSON-RPC methods the package implements. 5. **Calls** — methods the package consumes. 6. **Common questions** — recipe-shaped Q&A pairs the copilot can quote. Screen docs are shorter (four sections when a human guide exists): human guide (optional), purpose, wired methods, edge cases. Flow recipes and component docs follow the same pattern. Human-guide mappings consumed by `pnpm docs:internal:query`: | Mapping file | Covers | |---|---| | `scripts/lib/human-screen-docs.mjs` | Desktop + admin screen ids → MDX / operator README | | `scripts/lib/human-flow-docs.mjs` | 14 flow recipes → MDX / enterprise guides | | `scripts/lib/human-component-docs.mjs` | 6 shared components → owner-screen MDX | | `scripts/sync-human-guide-links.mjs` | Adds resolvable relative links under `## Human guide` | After adding a screen, flow, or component doc, run `pnpm docs:sync-human-guides` and `pnpm check:human-guide-links` (also in `check:hygiene`). ## Indexing This corpus is **not** indexed into the assistant automatically at workspace creation. Two paths feed the in-OS copilot: 1. **Contract catalog (always on).** `packages/os-headless/src/copilot-bootstrap.ts` builds `llms.txt` from `@agentskit/os-contracts` and injects a truncated `INDEX.md` link summary into the system prompt via `for-agents-doc-summary.ts`. 2. **RAG folder sources (operator opt-in).** `prod.seed.*` handlers in `packages/os-headless/src/transport/handlers/prod-seed-handlers.ts` register four ledgered folder sources when you run `agentskit-os prod seed --target assistant-knowledge --apply`, then rebuild each source with `agentskit-os knowledge rebuild `: | Source id | Path | |---|---| | `assistant-knowledge-for-agents` | `docs/for-agents` | | `assistant-knowledge-user-docs` | `apps/web/content/docs` | | `assistant-knowledge-demo-docs` | `docs/demo` | | `assistant-knowledge-runbooks` | `docs/runbooks` | The chunker is markdown-aware so each section becomes its own retrieval target. Full operator steps: [`docs/demo-runbook.md`](../demo-runbook.md) (assistant-knowledge section). ## Finding docs (agents) | Need | Command | |---|---| | Search any doc, package, screen, or flow | `pnpm docs:internal:query search --agent` | | Desktop or admin screen guide | `pnpm docs:internal:query screen --agent` | | Workflow recipe (+ human doc when mapped) | `pnpm docs:internal:query flow --agent` | | Shared desktop component | `pnpm docs:internal:query component --agent` | | Package ownership + checks | `pnpm docs:internal:query ownership --agent` | | Curated reading path | `pnpm docs:internal:query intent find-documentation-for-agents-or-humans` | | Regenerate machine index | `pnpm docs:internal` | | Validate doc drift gates | `pnpm check:knowledge-map && pnpm check:contracts-doc && pnpm check:doc-code-accuracy` | Source: /raw/for-agents/README.md ### for-agents/THE-FIVE-RULES.md # THE FIVE RULES Agent-prompt-ready summary. If you touch shipped code, these are non-negotiable. Full rationale: ADR-0036 through ADR-0040. ## 1. UI = `@agentskit/os-ui` only - Banned in `packages/os-desktop/src/**`, `apps/**/src/**`, `packages/pack-*/src/**`: `