# Saphan Studio documentation > Documentation of implemented, code-backed behaviour of Saphan Studio, a self-hosted control plane that runs AI coding and DevOps agents under human approval. It describes what ships today; it carries no roadmap claims. - Full text of every page in one file: https://docs.saphan.ai/llms-full.txt - Product overview for AI systems: https://saphan.ai/llms.txt ## Pages - [Saphan Studio documentation](https://docs.saphan.ai/docs): Saphan Studio is a control plane for governed fleets of AI coding agents: install it, connect your agents, and run work that a human decides and the record can prove. - [Checks you can run yourself](https://docs.saphan.ai/docs/audit-and-compliance/checks-you-can-run-yourself): The verifications that do not depend on trusting the control plane, and the two ceremonies a human performs by hand. - [Audit and compliance](https://docs.saphan.ai/docs/audit-and-compliance): What the record proves, where the evidence lives, and what it does not prove. - [Limits of the signed record](https://docs.saphan.ai/docs/audit-and-compliance/limits-of-the-signed-record): What the signatures on orders, status, verdicts and gate decisions still do not establish, each limit stated as a limit. - [The questions a framework makes an auditor ask](https://docs.saphan.ai/docs/audit-and-compliance/questions-a-framework-asks): Each framework turns into a handful of concrete questions — here is where in this record each one is answered. - [What a third party can check](https://docs.saphan.ai/docs/audit-and-compliance/the-signed-record-statement): The statement this product makes about a change — five things checkable from your root public key alone — and the conditions under which each one holds. - [Tracing one change backward](https://docs.saphan.ai/docs/audit-and-compliance/tracing-one-change-backward): The walk-through — from a merged change back to the decision, the review, the order and the cost. - [Verify a change yourself](https://docs.saphan.ai/docs/audit-and-compliance/verify-a-change-yourself): Check one change on your own machine, with no Saphan store and no network, from three things you already trust and one folder someone hands you. - [What the record guarantees](https://docs.saphan.ai/docs/audit-and-compliance/what-the-record-guarantees): The properties that hold by construction, and the four kinds of record that carry four different strengths. - [What this does not prove](https://docs.saphan.ai/docs/audit-and-compliance/what-this-does-not-prove): The limits of the record and of the controls behind it, stated as limits. - [Where the evidence lives](https://docs.saphan.ai/docs/audit-and-compliance/where-the-evidence-lives): What is written down, which surfaces are only projections of it, and what you can read without our tooling. - [Built by itself, with receipts](https://docs.saphan.ai/docs/concepts/built-by-itself): Saphan Studio is developed under its own discipline, and what that does and does not tell you. - [How you work with it](https://docs.saphan.ai/docs/concepts/how-you-work-with-it): The working method end to end, from order to observed merge. - [Saphan Studio explained](https://docs.saphan.ai/docs/concepts): Why the product is shaped the way it is: the actor problem, the discipline underneath it, and the vocabulary the record uses. - [Security, enterprise and cost, in brief](https://docs.saphan.ai/docs/concepts/security-enterprise-cost): The three summaries, each pointing at the section that carries the detail. - [What "shipped" means on this site](https://docs.saphan.ai/docs/concepts/shipped-today): The word is used in one sense here, and this page is that sense: present tense means shipped and exercised, and a control that ships opt-in is never described as on. - [How you talk with the fleet](https://docs.saphan.ai/docs/concepts/the-surfaces): Five surfaces over one record - CLI, web console, client API, MCP, editor. - [What it is made of](https://docs.saphan.ai/docs/concepts/what-it-is-made-of): Seven components and one record: what each is, and where it is specified. - [When Saphan stops work, and why](https://docs.saphan.ai/docs/concepts/when-work-stops): Every limit an agent works inside, what happens when it reaches one, and what you can do next. - [Signing in](https://docs.saphan.ai/docs/console/admin-login): Setting the console's sign-in credential the first time, signing in day to day, and rotating it. - [Development](https://docs.saphan.ai/docs/console/development): Trains and their wagons, the runs, the source map, pull requests, the event log, the defects the fleet files about itself, the report plates and the prompt library. - [Rules, costs and the record](https://docs.saphan.ai/docs/console/govern): Rules, Costs, Documents and Audit — the rules a leg runs under, the money, and the signed documents and records behind every decision. - [The console](https://docs.saphan.ai/docs/console): The owner's view of the record: the screens, the small number of acts, and which of them are signed with your passkey. - [What the console does not protect against](https://docs.saphan.ai/docs/console/limits): The limits of the console's sign-in, stated as limits — including the one named cookie exception. - [The live terminal](https://docs.saphan.ai/docs/console/live-terminal): Opening a terminal on this host or on another seat, the wire beneath it, and what closing the tab does. - [Recording a decision from the console](https://docs.saphan.ai/docs/console/recording-a-decision): Why the previous console's decision form refuses every act, and where a gate decision is recorded instead. - [Roles](https://docs.saphan.ai/docs/console/roles): The three long-lived roles you talk to, what a role's screen shows, its sessions and seats, and what the console does not do there. - [Screens and routes](https://docs.saphan.ai/docs/console/screens-and-routes): Every screen, its address, its sidebar group, and where its data comes from. - [Settings](https://docs.saphan.ai/docs/console/settings): What is yours and saves immediately, what this screen shows of your seats and machines, and what is still an operator's act on the host. - [Signing in and finding your way](https://docs.saphan.ai/docs/console/signing-in-and-finding-your-way): An alias and a password to sign in, a passkey to sign acts, one sidebar in five groups, the Simple/Advanced switch, search, the bottom panel, and the anatomy every screen shares. - [The terminal console — saphan cli](https://docs.saphan.ai/docs/console/terminal-console): Open a live session of a role from your terminal, read what the session runs under in plain words, find its log, and reopen it later. - [The fleet](https://docs.saphan.ai/docs/console/the-fleet): Agents and Sessions: every seat with its occupancy and measured allowance, and every agent run with its redacted transcript. - [What the console is](https://docs.saphan.ai/docs/console/what-the-console-is): A reading surface with a small number of acts — which of them your passkey signs in place, and which it hands you as a line to run. - [When it refuses](https://docs.saphan.ai/docs/console/when-it-refuses): The previous console's four sign-in states and what each one means, the terminal endpoint's refusals, and the missing-string check. - [Today, Stuck and your notes](https://docs.saphan.ai/docs/console/yours): Today, Stuck, Ideas and Notepad — the screens that hold what waits for your hand. - [Back up, restore, and prove it](https://docs.saphan.ai/docs/deployment/backup-and-restore): Write a backup of the record, prove it restores with a drill, schedule it, and read the health line that tells you when backups have stopped. - [Central servers: saphan-server, saphan-gateway and saphan-oauth](https://docs.saphan.ai/docs/deployment/central-servers): What the central server programs are, what each one serves, which of them a delivery route carries, and what each needs from you. - [Run Studio as containers](https://docs.saphan.ai/docs/deployment/containers): Run the Studio server — gateway, launcher, console server and CouchDB — as container images on volumes: first start, upgrade, roll back, and rotate the CouchDB administrator. - [CouchDB: the databases Saphan Studio creates](https://docs.saphan.ai/docs/deployment/couchdb-first-node): Which databases the set-up creates on your CouchDB node, the access rule each one gets, which of them are the only copy of what they hold, and the setting that cannot be changed later. - [Editions and features](https://docs.saphan.ai/docs/deployment/editions): Which features your edition includes, how to see whether each one is active, and how to switch one off. - [First run: setting the machine up at /setup](https://docs.saphan.ai/docs/deployment/first-run-setup): A machine with no owner is set up in a browser at /setup, or from a terminal with saphan install: the window, the screens, and the key that is shown once. - [What the installer does](https://docs.saphan.ai/docs/deployment/fleet-bootstrap): What the one line fetches, what it verifies before anything lands, and the admission request it makes for this machine. - [The built-in git server, and choosing another forge](https://docs.saphan.ai/docs/deployment/git-server): Every Studio install brings its own git server, Gitea. Start it, serve it over TLS, or point Studio at your own Gitea or at GitHub instead. - [Deployment](https://docs.saphan.ai/docs/deployment): What an install is here: which programs a machine gets, which of them run centrally, and which route delivers each. - [Machines that are not in the same room](https://docs.saphan.ai/docs/deployment/machines-elsewhere): Running work on machines elsewhere, over a private overlay network between them: what joining gives a machine, what it does not give, and what the fleet can see about each one. - [macOS without a checkout (self-extracting installer)](https://docs.saphan.ai/docs/deployment/macos-installer): One file that verifies its own payload before extracting, for a Mac with no route to the internet. - [Air-gapped installation (Enterprise)](https://docs.saphan.ai/docs/deployment/packages): A package, installed system-wide on a host with no network path to anything — what it puts on the machine, and what still needs your hand afterwards. - [Data posture and deployment](https://docs.saphan.ai/docs/deployment/postures): Your machines, your record: what the product asks of your infrastructure, what runs centrally, and what it asks you to own. - [Per-user vs system-wide state (the --system flag)](https://docs.saphan.ai/docs/deployment/state-locations): Where the binaries go and where the state goes are separate decisions, and the state's is made by the installation's mode, not by the install directory. - [An install, end to end](https://docs.saphan.ai/docs/deployment/the-whole-install): One command, what it verifies before it writes anything, what it sets up, and the page it hands you — the whole path in the order you meet it. - [Uninstall](https://docs.saphan.ai/docs/deployment/uninstall): Each route removes what it put there, and none of them touch your identity, trust material, config or state. - [Updating a fleet that is already installed](https://docs.saphan.ai/docs/deployment/updating-a-fleet): The same delivery, repeated — and the traps that make it look like it worked when it did not. - [Verifying an install](https://docs.saphan.ai/docs/deployment/verifying-an-install): Why the version string is not the check, and the two cheap checks that are. - [The VS Code extension (saphan-code)](https://docs.saphan.ai/docs/deployment/vs-code): A read-only fleet view inside the editor — it needs no server and opens no port. - [Saphan Desktop (beta)](https://docs.saphan.ai/docs/desktop): What Saphan Desktop is, what the beta does today with the Claude desktop app, and what it does not do yet. - [For the auditor](https://docs.saphan.ai/docs/for/auditor): You need to know what was done, by whom, and whether the record can be trusted. - [For devops](https://docs.saphan.ai/docs/for/devops): You install it, run it, upgrade it, and get paged when it stops. - [For the finance controller](https://docs.saphan.ai/docs/for/finance): You are accountable for what this spends. You need to know who commits money, what stops a run, and whether the numbers can be defended. - [Who you are](https://docs.saphan.ai/docs/for): Five reading paths, one per job: what you own, what to read first, and the first task you can perform. - [For the owner](https://docs.saphan.ai/docs/for/owner): You decide whether Saphan Studio is deployed and what it is allowed to do. - [For the security officer](https://docs.saphan.ai/docs/for/security-officer): You need the boundary, the assumptions behind it, and the hardening you own. - [What an actor is](https://docs.saphan.ai/docs/identity/actors): Who can act at all, what has to be true before they can, and what an actor name in the record is worth. - [Identity](https://docs.saphan.ai/docs/identity): Who a user is, how they prove it, and what a session is allowed to do. - [A seat's credential to its AI provider](https://docs.saphan.ai/docs/identity/seat-credentials): The second thing the word seat means, why that credential dies, and the one failure it is most often confused with. - [How a person signs in](https://docs.saphan.ai/docs/identity/signing-in): The sign-in surface, the five acts of an account life, what each refusal means, and what is counted for billing. - [What a token carries, and how long it lives](https://docs.saphan.ai/docs/identity/tokens): What a program is given, the four lifetimes, the approval a person presses, and how a person takes it back. - [Trusting an issuer](https://docs.saphan.ai/docs/identity/trusting-an-issuer): The act performed by hand on the machine holding the root key, the four values it turns on, and the mistakes that surface months later. - [What identity does not establish](https://docs.saphan.ai/docs/identity/what-identity-does-not-establish): The limits of everything in this section, in one place, because each of them is a mistake somebody has already made. - [Cost: before, during, after](https://docs.saphan.ai/docs/getting-started/cost): Quote and cap before, the cap riding the run, actuals next to the quote after. - [Design principles](https://docs.saphan.ai/docs/getting-started/design-principles): Product invariants: a change that threatens one is escalated, never worked around. - [Gates: where humans decide](https://docs.saphan.ai/docs/getting-started/gates): One recorded human decision on one stream, the batch surface, and the verbs around it. - [Glossary](https://docs.saphan.ai/docs/getting-started/glossary): The vocabulary this section uses, defined once. - [Getting started](https://docs.saphan.ai/docs/getting-started): What Saphan Studio is, the four questions it answers, and where to go to install it. - [Install, found the fleet, run the first stream](https://docs.saphan.ai/docs/getting-started/install-and-first-stream): The one-time owner acts, giving a project its command deck, and the eight steps of a first stream. - [The fleet itself: machines and seats](https://docs.saphan.ai/docs/getting-started/machines-and-seats): Machines admitted by an owner act, seats with isolated profiles, and where credentials are repaired. - [Notes from a fleet that builds itself](https://docs.saphan.ai/docs/getting-started/notes-from-a-fleet): What dogfooding looks like in the record, with no number invented. - [Orders: how work is specified](https://docs.saphan.ai/docs/getting-started/orders): What a complete order carries, and a compact skeleton to start from. - [Acts that need the owner present](https://docs.saphan.ai/docs/getting-started/owner-presence): The verbs that refuse unless the owner is present, and a numbered runbook for each: what to run, what success prints, and what to do when one refuses. - [Placing a leg: from an order to a running agent](https://docs.saphan.ai/docs/getting-started/placing-a-leg): The operator's walk for starting one leg of work with a single command: print the order template, fill it, commit it, and place it on any free seat. - [Provisioning files into a run](https://docs.saphan.ai/docs/getting-started/provisioning): What --provision accepts, what travels, what the record says afterwards, and when a citation refuses. - [Returns and declaring the verification suite](https://docs.saphan.ai/docs/getting-started/returns-and-verification): The return manifest and the one direction it is not checked in; declaring which suite runs. - [Roles and the working rhythm](https://docs.saphan.ai/docs/getting-started/roles-and-the-rhythm): Master, executor, review, owner - and the channel files that are the wire between them. - [Supported agents, runtimes and integrations](https://docs.saphan.ai/docs/getting-started/the-agents-it-drives): Every agent backend, execution shape, notification sink, datastore and surface — each at the state the release actually proves, with what is therefore not proven. - [The shape of work](https://docs.saphan.ai/docs/getting-started/the-shape-of-work): Streams, trains, why parallel agents do not collide, claiming, the wave view, and the record. - [Certifying the local trunk](https://docs.saphan.ai/docs/getting-started/trunk-certification): What certification measures, what the pointer means, and the daemon that can own the ceremony. - [The VS Code extension](https://docs.saphan.ai/docs/getting-started/vs-code): The fleet inside the editor, with the engine composing every act it offers. - [Watching the fleet](https://docs.saphan.ai/docs/getting-started/watching-the-fleet): Every surface is a projection of one record - and the fleet health runbook. - [Worked examples](https://docs.saphan.ai/docs/getting-started/worked-examples): A gate decision, asking what is next, the merge that checks before it moves, closing honestly. - [The workspace layout](https://docs.saphan.ai/docs/getting-started/workspace-layout): What lives where in a workspace, for one repository or several, and the operator runbook for putting a workspace into that layout. - [Which backends receive a grant](https://docs.saphan.ai/docs/configuration/agent-grants): A permission grant class is your act; where it lands is a per-backend answer. - [Starting the authorization server for the first time](https://docs.saphan.ai/docs/configuration/authorization-server): Deciding how the connection is encrypted, writing the settings, minting the first signing key. - [Configuration](https://docs.saphan.ai/docs/configuration): Where the operator's configuration file lives, its format, and the three verbs that write it. - [Every key](https://docs.saphan.ai/docs/configuration/keys): Every configuration key that exists, by section, with its meaning and default. - [Known limitations of this surface](https://docs.saphan.ai/docs/configuration/limitations): Recorded deliberately: what this configuration surface does not yet do. - [Permission classes: what an agent may run](https://docs.saphan.ai/docs/configuration/permission-classes): How a permission class bounds an agent's tools, what the file looks like, and how to write your own. - [Precedence and workspace resolution](https://docs.saphan.ai/docs/configuration/precedence): The three ladders, what counts as a workspace marker, and what happens where nothing declared one. - [The cost pricing registry](https://docs.saphan.ai/docs/configuration/pricing-registry): The engine reads this file and a human writes it: rates, named zeros, and what the ledger does with them. - [Remote repositories and admission mirrors](https://docs.saphan.ai/docs/configuration/remote-repositories): Guarding admission commits, keeping a machine's mirror fresh, and a machine that serves more than one repository. - [Seats: binding an executor profile to a run](https://docs.saphan.ai/docs/configuration/seats): What a seat is, the only way to bind one to a run, and why a status read is not proof. - [Secrets](https://docs.saphan.ai/docs/configuration/secrets): The file holds names and paths, never values. - [SSH host key policy](https://docs.saphan.ai/docs/configuration/ssh-host-keys): The problem, the two policies, how rotation is reconciled before the dial, and how a machine gets its first pin. - [Organisation supersede policy](https://docs.saphan.ai/docs/configuration/supersede-policy): What each of the three values gains you, and what it gives up. - [Satisfying a vendor trust dialog headlessly](https://docs.saphan.ai/docs/configuration/trust-stamp): What machine trust-stamp does, what it derives permission from, and both runbooks. - [What has to be installed, and by whom](https://docs.saphan.ai/docs/configuration/what-to-install): The product installs nothing on your machines; what the work needs belongs to your estate. - [Adding a vendor CLI to an image](https://docs.saphan.ai/docs/infrastructure/adding-a-vendor-cli): Four ready build files, the three properties they all share, and what each CLI does behind a proxy — because two of the four ignore the variable most people reach for first. - [Agent machines](https://docs.saphan.ai/docs/infrastructure/agent-machines): The three forms an agent machine can take — a host, a container image, or a Linux virtual machine — and the per-language images the product ships as templates. - [Android images: a JDK, not an SDK](https://docs.saphan.ai/docs/infrastructure/android-images): The android class image carries a JDK and no Android SDK, why that will not change, and the permission class written against a default SDK install. - [Bounded runs on a far machine](https://docs.saphan.ai/docs/infrastructure/bounded-runs): How a run on a machine reached over ssh is held to a task, memory and lifetime bound, how to read which bound applied, and how to stop or inspect one. - [The cursor backend](https://docs.saphan.ai/docs/infrastructure/cursor): What a Cursor run executes, how its model and effort are named, how a Cursor seat is logged in and seated, where it is confined, and what to do when a spawn is refused. - [Datastores](https://docs.saphan.ai/docs/infrastructure/datastores): What the product stores, what it brings with it, and the stores you supply. - [Infrastructure](https://docs.saphan.ai/docs/infrastructure): The platforms this product runs on and the datastores it needs: what ships inside it, and what you supply. - [Supported platforms](https://docs.saphan.ai/docs/infrastructure/platforms): Linux and macOS run natively. There is no Windows build; a Windows estate runs the product on Linux underneath. - [Reading the document you are approving](https://docs.saphan.ai/docs/integrations/gateway-console): The console's document page: where it is, what it shows about a document, and where the rest is described. - [Reading the gateway's answers](https://docs.saphan.ai/docs/integrations/gateway-reading-the-answers): Per operation: what it answers, how fresh it is, and the field you must read before the numbers. - [Client-contract gateway](https://docs.saphan.ai/docs/integrations/gateway): What the gateway serves, how you sign in, what answers today, and how it refuses. - [Integrations](https://docs.saphan.ai/docs/integrations): What to point an MCP client at, and what it gets back. - [Metrics export: what you get](https://docs.saphan.ai/docs/integrations/metrics-export): Three metrics from the record to any OTLP collector you run, the rule that governs every label on them, and the metrics a monitoring team usually asks for that this deliberately refuses. - [Running a metrics export](https://docs.saphan.ai/docs/integrations/running-a-metrics-export): Three keys, the egress admission the address does not grant you, what each exit status means, and the one limit to read before you schedule anything. - [Notifications](https://docs.saphan.ai/docs/notifications): One-way notices from your fleet to a chat destination: what they cost to turn on, and what they deliberately cannot do. - [Languages and time](https://docs.saphan.ai/docs/notifications/languages-and-time): The two languages a binding can select, the two that are present but refused, how times are shown, and the one line you write yourself. - [Slack](https://docs.saphan.ai/docs/notifications/slack): The app and its scopes, why the destination must be a conversation id, where the token goes, the three bindings and eight routes to copy, which machine sends, and what the delivery path refuses. - [What goes out](https://docs.saphan.ai/docs/notifications/what-goes-out): Every notice type, when each is sent and how severe it is, what a notice carries, the rule that the body of the work never travels, and how routes choose what goes where. - [Observe](https://docs.saphan.ai/docs/observe): What the system records about itself while it works for you, and what you can do with it. - [The defects your agents measured](https://docs.saphan.ai/docs/observe/the-defects-your-agents-measured): Defects about the system itself are written down as files carrying the measurement that found them, checked against a fixed shape, and counted by class — and repair stays a human decision. - [Every command](https://docs.saphan.ai/docs/reference/commands): The whole command surface: every command, its subcommands, and where each one is documented. - [Reference](https://docs.saphan.ai/docs/reference): The command surface: each command with its subcommands and flags, generated from the product itself. - [Reading the CLI's output](https://docs.saphan.ai/docs/reference/reading-the-cli-output): What a person, an agent and a script each get from a saphan command, where the full detail goes, and how the owner-presence prompt waits. - [Authentication: the OAuth front door](https://docs.saphan.ai/docs/mcp-server/authentication): Two modes, one middleware: the self-issued authorization server, external issuers, and the validation chain. - [Authorization: scopes, tenancy and denials](https://docs.saphan.ai/docs/mcp-server/authorization): Two data classes, the row-level grant a human writes, and one denial shape. - [MCP design principles](https://docs.saphan.ai/docs/mcp-server/design-principles): Eight principles, each with what it means in practice. - [MCP glossary](https://docs.saphan.ai/docs/mcp-server/glossary): The terms this surface uses, defined once. - [MCP server](https://docs.saphan.ai/docs/mcp-server): The read-only MCP projection: what it serves, how a client connects, what it will not do, and the budget it answers within. - [MCP protocol surface](https://docs.saphan.ai/docs/mcp-server/protocol-surface): The implemented subset, the two transports, and the eleven tools with their arguments. - [The response budget](https://docs.saphan.ai/docs/mcp-server/response-budget): Five stacked mechanisms so a fleet read fits a client's tool-output limit - and a cap that errors rather than truncates. - [MCP administrator's runbook](https://docs.saphan.ai/docs/mcp-server/runbook): Prerequisites, the settings with security meaning, what to monitor, and incident response. - [The record of the surface itself](https://docs.saphan.ai/docs/mcp-server/the-record): Path redaction, the access log, and what conformance actually drives. - [Transports, lifecycle and exposure](https://docs.saphan.ai/docs/mcp-server/transports): The verb surface, the bind address, the start gate, the access log, tunnels, and what is pre-auth by construction. - [MCP worked examples](https://docs.saphan.ai/docs/mcp-server/worked-examples): Real commands and the engine's own messages, verbatim. - [Before a dollar is spent](https://docs.saphan.ai/docs/operations/before-a-dollar-is-spent): Capacity checks, usage windows, the refusals that happen before a run spawns, and an honest statement of which ceiling is enforced by whom. - [Budgeting a run: the quote and the cap](https://docs.saphan.ai/docs/operations/budgeting): What a cost estimate is, what a budget is, who decides them and on what basis, what happens when a run reaches the ceiling, and how quotes get better over time. - [Cheap by planning: the biggest lever](https://docs.saphan.ai/docs/operations/cheap-by-planning): The largest cost control in agent development is not the model price list. It is where in the process a defect gets discovered, and the method is arranged around that. - [Cost management](https://docs.saphan.ai/docs/operations): What agent work costs: who commits money, what stops a run, and how a number is made defensible afterwards. - [Matching the model to the task](https://docs.saphan.ai/docs/operations/matching-the-model-to-the-task): Model choice is an economic decision, so the product refuses to make it for you. The ladder of actors, what earns each rung, and how predictions get calibrated from your own record. - [One yardstick across many vendors](https://docs.saphan.ai/docs/operations/one-yardstick-across-vendors): Running several backends is a cost instrument, not a preference — because the same order can be given to two actors and judged by the same tests. - [The dimensions of cost](https://docs.saphan.ai/docs/operations/the-dimensions-of-cost): The question of what agent development costs has no single answer — it has axes. Which axes the record can answer along, and which ones need an export. - [What a ledger row knows](https://docs.saphan.ai/docs/operations/what-a-ledger-row-knows): Why agent spend needs its own bookkeeping, what is recorded for every run, and why a run nobody can price is reported as unknown instead of as zero. - [Where the work runs: seats, the queue and the account ceiling](https://docs.saphan.ai/docs/operations/where-the-work-runs): How the engine chooses a seat for a leg, how to use the dispatch queue when no seat admits, how to read an account's weekly usage, and the account live-run ceiling. - [Worked examples](https://docs.saphan.ai/docs/operations/worked-examples): The commands, in the order the money actually moves: price it, check capacity, compose it, then read what it cost — and two refusals that cost nothing. - [Actors, roles and review policy](https://docs.saphan.ai/docs/roles): Who does what in a fleet: the roles an actor can hold, the seat a role reserves, and which models are allowed to review whose work. - [Review policy](https://docs.saphan.ai/docs/roles/review-policy): Which models review, when a review is owed, how a second opinion on a different model is arranged, and what the record demands before a review can open a merge. - [Roles](https://docs.saphan.ai/docs/roles/roles): The roles an actor can hold in a fleet, what each is for, and the boundaries that make the division worth having. - [Seats: who runs where](https://docs.saphan.ai/docs/roles/seats): A seat is one agent identity on one machine, with a vendor login of its own. Why a role reserves a seat, and what refuses when the wrong role is dispatched onto it. - [In one paragraph](https://docs.saphan.ai/docs/security/1-in-one-paragraph): Saphan Studio is a control plane that dispatches AI coding agents to a fleet of machines you own. - [The record: what you can prove afterwards](https://docs.saphan.ai/docs/security/10-the-record-what-you-can-prove-afterwards): Registries of actors, delegations, machines, seats and capabilities are one Ed25519-signed append-only log. - [Documented limits](https://docs.saphan.ai/docs/security/11-documented-limits): What this release does not protect against, stated plainly so you can plan around it. - [Administrator's runbook](https://docs.saphan.ai/docs/security/12-administrators-runbook): Preparing machines, enrolling them, keeping identities straight and hardening an installation, step by step. - [Worked examples](https://docs.saphan.ai/docs/security/13-worked-examples): Worked commands for the trust ceremonies, machine enrolment, seats, capability probes, delegation and order signing. - [Reporting a vulnerability](https://docs.saphan.ai/docs/security/14-reporting-a-vulnerability): How to report a security problem in Saphan Studio privately. - [What the risk actually is](https://docs.saphan.ai/docs/security/2-what-the-risk-actually-is): If you have run continuous integration, you know most of the shape: a control plane sends work to machines, and those machines run code. - [Design principles](https://docs.saphan.ai/docs/security/3-design-principles): Product invariants. - [Identity and PKI](https://docs.saphan.ai/docs/security/4-identity-and-pki): Which keys exist, who holds each, what each may sign, and how a signature is checked. - [Machines: enrollment and authentication](https://docs.saphan.ai/docs/security/5-machines-enrollment-and-authentication): A machine cannot enrol itself; it is admitted by the owner, and every connection to it is authenticated by a pinned host key. - [Capability: what a machine is trusted to be able to do](https://docs.saphan.ai/docs/security/6-capability-what-a-machine-is-trusted-to-be-able-to-do): Fleet configuration accumulates claims — "this machine has the toolchain", "this machine can run that backend". - [Seats: separating agents that share a machine](https://docs.saphan.ai/docs/security/7-seats-separating-agents-that-share-a-machine): A seat is a named executor identity assigned to one machine and one execution slot, for one agent backend, with its own configuration home. - [Runners: what happens during a run](https://docs.saphan.ai/docs/security/8-runners-what-happens-during-a-run): The boundary each agent run gets on a machine: who enforces it, what it allows, what it refuses, and what it does not cover. - [Secrets](https://docs.saphan.ai/docs/security/9-secrets): How Saphan Studio references credentials, and the few secrets it holds itself. - [Agent security: the whole set](https://docs.saphan.ai/docs/security/agent-security): Every control that stands between an agent session and your machine — confinement, tool policy, egress, credentials, and the human gate — and where each one is documented. - [Glossary](https://docs.saphan.ai/docs/security/glossary): The terms the security section uses, in one place. - [Security](https://docs.saphan.ai/docs/security): How Saphan Studio keeps AI coding agents inside the boundaries you set, what it can prove afterwards, and what it does not cover. - [Sandboxing: which agent is confined, where](https://docs.saphan.ai/docs/security/sandbox-matrix): For each agent backend and platform: whether the engine confines it, and what happens when it does not. - [Who this document is for](https://docs.saphan.ai/docs/security/who-this-document-is-for): Two readers: an evaluator deciding whether to let agents run on their machines, and the administrator who operates the controls. - [Every refusal class, A to Z](https://docs.saphan.ai/docs/troubleshooting/all-classes): All 191 refusal classes the product declares, each with its family and whether this section explains it yet. - [Dispatch and capacity](https://docs.saphan.ai/docs/troubleshooting/dispatch-and-capacity): Why work went to one place and not another, or nowhere — and the refusal classes about starting a process, a server or an interactive session. - [Documents and contracts](https://docs.saphan.ai/docs/troubleshooting/documents-and-contracts): Refusals about signed instructions, their registrations, and the schema versions two parties must agree on. - [Identity and actors](https://docs.saphan.ai/docs/troubleshooting/identity-and-actors): Refusals about who is acting, the keys that prove it, and the ceremonies that mint them. - [Troubleshooting](https://docs.saphan.ai/docs/troubleshooting): What a refusal means and what to do about it. - [Machines and seats](https://docs.saphan.ai/docs/troubleshooting/machines-and-seats): Refusals met while admitting a machine, seating work on it, changing its settings and retiring it. - [What is not yet explained](https://docs.saphan.ai/docs/troubleshooting/refusals-not-yet-explained): The 145 refusal classes this section names but does not yet resolve, listed in full with a count. - [The console](https://docs.saphan.ai/docs/troubleshooting/the-console): Refusals from the browser surface: acts it will not fire, forms it will not accept, its certificate, and the bundle check that stops every command. - [The network path](https://docs.saphan.ai/docs/troubleshooting/the-network-path): Why a connection out of a run was refused, and which of the nineteen network refusals you are holding. - [The record and gates](https://docs.saphan.ai/docs/troubleshooting/the-record-and-gates): Refusals about the workspace, the decisions written into it, and the teardown that closes a piece of work. - [Bringing work home](https://docs.saphan.ai/docs/working-with-git/bringing-work-home): The delivery boundary: what proof it prints, what it refuses, and what a partial return still owes. - [The channel documents](https://docs.saphan.ai/docs/working-with-git/channel-documents): The three documents that sit at the root of a stream's worktree, and the one axis — what a value means — that everything else turns on. - [Checking a document before you rely on it](https://docs.saphan.ai/docs/working-with-git/checking-a-document): How to have a channel document validated rather than trusted, and the rules worth keeping after you close these pages. - [Delivering a branch to a remote agent](https://docs.saphan.ai/docs/working-with-git/delivering-a-branch): The act that moves a branch to a machine somewhere else, what it refuses, and the trap that returns a number instead of an error. - [Working with git](https://docs.saphan.ai/docs/working-with-git): One stream's journey: the worktree it is given, delivery to a remote machine, the return, verification, and the merge a human makes. - [Merging](https://docs.saphan.ai/docs/working-with-git/merging): The gate sequence, why a merge is a human act, and the two-stage close that follows it. - [Pull requests and forge integrations](https://docs.saphan.ai/docs/working-with-git/pull-requests-and-forges): What the product reads from your forge, the one write it makes after a signed human decision, how that merge is gated, and which parts are not available on this release. - [The order](https://docs.saphan.ai/docs/working-with-git/the-order): What an order is, who writes it, which keys are read into the record, and what happens when one is missing. - [The review verdict](https://docs.saphan.ai/docs/working-with-git/the-review-verdict): What a reviewer writes, the words a verdict may carry, and the shape a real one takes. - [The status an agent returns](https://docs.saphan.ai/docs/working-with-git/the-status): The closed key set, the state words an agent may write, and the line that closes a return. - [Verifying what came home](https://docs.saphan.ai/docs/working-with-git/verifying): What to measure before anyone gates it — including the branch merged onto its trunk — and the three things a green result has to name. - [The stream's worktree](https://docs.saphan.ai/docs/working-with-git/worktrees): What a stream's worktree is, who creates it, and why an agent never creates its own. - [saphan absorb](https://docs.saphan.ai/docs/reference/cli/absorb): Merges the branch a stream will land on into the stream's own branch, so the stream catches up with its base before it is merged. - [saphan accept](https://docs.saphan.ai/docs/reference/cli/accept): Records the owner's acceptance at a stream's final stop (STOP-2, after the work is proven) and then merges the stream, as one decision behind one confirmation. - [saphan account](https://docs.saphan.ai/docs/reference/cli/account): Lists the AI vendor accounts the installation has observed through its seats' usage readings, and lets you give them readable names. - [saphan actor](https://docs.saphan.ai/docs/reference/cli/actor): Manages the people who sign decisions: this workspace's signing key and the list of enrolled actors. - [saphan ask](https://docs.saphan.ai/docs/reference/cli/ask): Asks the engine a typed question about a machine and its capabilities, from a request file that can be reviewed and replayed, and reads the receipt an answer was released under. - [saphan backup](https://docs.saphan.ai/docs/reference/cli/backup): Writes one complete backup of an installation while the gateway keeps serving: a consistent snapshot of the store, every configured CouchDB database, the bridge repositories and documents and the forg - [saphan board](https://docs.saphan.ai/docs/reference/cli/board): Exports the board: the workspace's recorded account of its work, with each stream's state, decision history and last commit. - [saphan bridge](https://docs.saphan.ai/docs/reference/cli/bridge): Creates and maintains the bridge: the project's git repository of governing documents, orders, decisions and board that the whole team works from. - [saphan build-orchestrate](https://docs.saphan.ai/docs/reference/cli/build-orchestrate): Runs a project's platform builds one at a time, in the order a build-matrix file gives, starting, health-checking and stopping any emulators each build needs, and making sure every process it started - [saphan bus](https://docs.saphan.ai/docs/reference/cli/bus): Reads the stream status files in the workspace's worktrees into the record, and reads the record's event log. - [saphan canon](https://docs.saphan.ai/docs/reference/cli/canon): Delivers the canon a seat must obey (its standing rules, governing documents and a slice of the fleet's state) to the machine the seat runs on, as a signed pack. - [saphan capture](https://docs.saphan.ai/docs/reference/cli/capture): Signs and records one spark (a short captured idea) or a session transcript, keeping the exact bytes and indexing them in the record. - [saphan ceremony](https://docs.saphan.ai/docs/reference/cli/ceremony): The owner's key ceremonies when a team is set up: creating the root key, which is kept only on paper, and the intermediate key used to issue machine certificates. - [saphan cert](https://docs.saphan.ai/docs/reference/cli/cert): Lets a second device trust the console's certificate, so you can sign in the Saphan Studio console from it and not only read. - [saphan certify](https://docs.saphan.ai/docs/reference/cli/certify): Runs the repository's full verification suite against the current tip of the local trunk branch, in a detached scratch worktree on this machine with your own permissions, and records the result agains - [saphan channel](https://docs.saphan.ai/docs/reference/cli/channel): Inspects and repairs the channel documents of a stream: the orders, status reports and review notes exchanged between Saphan Studio and the agents working on it, kept in the channel store. - [saphan checks](https://docs.saphan.ai/docs/reference/cli/checks): Deterministic checks that run as ordinary processes, never as a model turn, so they cost nothing in model usage and give the same answer every time. - [saphan claim](https://docs.saphan.ai/docs/reference/cli/claim): Takes an exclusive claim on a stream (one unit of work) for one actor, so two people or agents cannot pick up the same work at once. - [saphan cli](https://docs.saphan.ai/docs/reference/cli/cli): Opens Saphan Studio's interactive terminal console on the current workspace. - [saphan closure](https://docs.saphan.ai/docs/reference/cli/closure): Acts directly on a stream's closure: the cleanup job that a final owner decision (a merge, or a close without merging) starts. - [saphan config](https://docs.saphan.ai/docs/reference/cli/config): Creates, edits and shows the installation's config file, which holds your identity and the installation's settings: ~/.saphan/etc/saphan.conf for a per-user installation, /opt/saphan/etc/saphan.conf f - [saphan confine-exec](https://docs.saphan.ai/docs/reference/cli/confine-exec): Applies this machine's own filesystem confinement and then runs a command inside it; Saphan Studio invokes it on a remote machine to start an agent within the boundary a run was given. - [saphan console](https://docs.saphan.ai/docs/reference/cli/console): Manages who may sign in to the web console and which passkeys may approve actions in it. - [saphan cost](https://docs.saphan.ai/docs/reference/cli/cost): Shows what a stream has cost, from the run record: the number of runs, each run with its model, its cost in US dollars, its status and its token counts (input, cached, output and reasoning), and the s - [saphan decision](https://docs.saphan.ai/docs/reference/cli/decision): Files signed decision records and governance documents into the law store, reads them back, and keeps the workspace's bridge (its shared git record) in step with them. - [saphan deny-unix-exec](https://docs.saphan.ai/docs/reference/cli/deny-unix-exec): Runs a command under a filter that forbids it, and everything it starts, from creating Unix-domain sockets that could reach a daemon on the host. - [saphan discover](https://docs.saphan.ai/docs/reference/cli/discover): Is meant to inspect a workspace and propose a configuration for it. - [saphan dispatch](https://docs.saphan.ai/docs/reference/cli/dispatch): Prepares work for an agent: on its own it renders an executor brief from a dispatch template and refuses the brief if it breaks any of the five dispatch rules. - [saphan doc](https://docs.saphan.ai/docs/reference/cli/doc): Checks record documents — orders, status returns, review returns, train orders, relays, notices and defect reports — against the format each family requires. - [saphan docs](https://docs.saphan.ai/docs/reference/cli/docs): Renders readable documents from a git checkout of your record documents: one train's chapter, or the whole body of work. - [saphan drift](https://docs.saphan.ai/docs/reference/cli/drift): Measures how far a coordinating agent's writing style drifts from its own baseline: set the baseline from a session transcript, and calibrate the alarm threshold against the defects on record. - [saphan dry-run](https://docs.saphan.ai/docs/reference/cli/dry-run): Rehearses a command that would change the record, without making the change: saphan dry-run [args...] runs the same checks the real command runs and shows what it would do, or the refusal it - [saphan egress-door](https://docs.saphan.ai/docs/reference/cli/egress-door): Runs one agent's egress door on a remote machine: it opens a SOCKS5 proxy on a unix socket that judges every outbound connection against the run's egress policy, runs the given command as its child, a - [saphan egress](https://docs.saphan.ai/docs/reference/cli/egress): Reads the recorded egress decisions, that is which outbound connections were allowed or refused, for a run or a session. - [saphan evidence](https://docs.saphan.ai/docs/reference/cli/evidence): Parks a stream's evidence outside its worktree, places archives in the evidence store, and reads them back. - [saphan feature](https://docs.saphan.ai/docs/reference/cli/feature): Shows which features this installation's licence includes and which the owner has switched on or off, and records the owner's choice. - [saphan fix](https://docs.saphan.ai/docs/reference/cli/fix): Starts a fix that a coordinating agent writes itself instead of sending it to an executor. - [saphan fleet](https://docs.saphan.ai/docs/reference/cli/fleet): Shows the state of the fleet — streams, seats, running legs, capacity and refusals — from the record. - [saphan gate](https://docs.saphan.ai/docs/reference/cli/gate): Records one human gate decision for a stream in the signed gate log. - [saphan gates](https://docs.saphan.ai/docs/reference/cli/gates): Lists the recorded gate decisions — time, stream, gate, actor, decision, reference and detail — and checks each row's signature. - [saphan golden-delivery](https://docs.saphan.ai/docs/reference/cli/golden-delivery): Copies reference artifacts ('goldens') into a goldens directory, one subdirectory per stream, and adds a README to each stream directory that lacks one; it writes files only and commits nothing. - [saphan grammar](https://docs.saphan.ai/docs/reference/cli/grammar): Prints the document formats compiled into this binary, so an agent or operator on a remote machine can read them without a source checkout, and manages the list of declared document keys. - [saphan guardrail-proxy](https://docs.saphan.ai/docs/reference/cli/guardrail-proxy): Runs one command behind a local proxy that records, and optionally judges, the text exchanged between an AI client and its model provider. - [saphan guardrail](https://docs.saphan.ai/docs/reference/cli/guardrail): Inspects the model-text guardrail — the plugins that judge the text passing between an agent and its model — and prepares the owner's act that switches a stage to enforcement. - [saphan hand](https://docs.saphan.ai/docs/reference/cli/hand): Records that a coordinating agent is handing the owner one decision to make on a stream, with the exact command to run and the output of its rehearsal. - [saphan harvest](https://docs.saphan.ai/docs/reference/cli/harvest): Runs the Harvester for a project, which picks the next bug from the backlog for a coordinating agent and writes the order to fix it: show its settings, see what it would pick, or start it by hand. - [saphan hook](https://docs.saphan.ai/docs/reference/cli/hook): Installs Git hooks that Saphan Studio needs in a repository. - [saphan identity](https://docs.saphan.ai/docs/reference/cli/identity): Manages the signed identity store: the signed record of actors (people and their keys), OAuth client bindings, token issuers and name aliases. - [saphan infra](https://docs.saphan.ai/docs/reference/cli/infra): Places the deployment files Saphan Studio needs (container compose files, the telemetry collector configuration and a runbook) on disk, stores their secret values, and prepares the databases they serv - [saphan init](https://docs.saphan.ai/docs/reference/cli/init): Lays out a workspace and then, with your consent, writes its verification settings and the minimum permissions Claude Code needs there. - [saphan install](https://docs.saphan.ai/docs/reference/cli/install): Sets up this machine for Saphan Studio by running every step a new workspace needs, in order, and reporting each as already done, done now, or not done with the reason. - [saphan knowledge](https://docs.saphan.ai/docs/reference/cli/knowledge): Inspects the agent knowledge bundle compiled into this saphan binary: the role cards, skills, slash commands, subagents and shared guard scripts that Saphan Studio delivers to each AI assistant accoun - [saphan land](https://docs.saphan.ai/docs/reference/cli/land): Closes a finished stream (a unit of work on its own branch) as one owner act: the stop-2 acceptance, the review decision, the merge and, if asked, the first teardown step. - [saphan laws](https://docs.saphan.ai/docs/reference/cli/laws): Reads and signs the laws manifest: the root-signed list of the standing-rule documents an installation treats as ratified, each with its SHA-256. - [saphan ledger](https://docs.saphan.ai/docs/reference/cli/ledger): Shows or exports the cost ledger, the record of model calls, refusals and their cost in this workspace. - [saphan lib](https://docs.saphan.ai/docs/reference/cli/lib): Utilities for library trees, the versioned collections of manifests Saphan Studio loads. - [saphan license](https://docs.saphan.ai/docs/reference/cli/license): Activates this installation against the Solo licensing portal and reports the state of its lease. - [saphan machine](https://docs.saphan.ai/docs/reference/cli/machine): Manages the machine registry: the signed list of hosts admitted to run work, their slots, and the seats (AI assistant accounts) placed on those slots. - [saphan measure](https://docs.saphan.ai/docs/reference/cli/measure): Works with measurement orders: orders that commission a document only (the reproduction, the measurements, the root cause, a repair order ready to sign, and a quote), run with every git write and ever - [saphan memory](https://docs.saphan.ai/docs/reference/cli/memory): Carries an agent role's memory notes into the bridge (the shared coordination repository) and reads them back. - [saphan merge](https://docs.saphan.ai/docs/reference/cli/merge): Merges a gated stream's branch into its base branch, as the recorded act of the person who runs it. - [saphan mesh](https://docs.saphan.ai/docs/reference/cli/mesh): Reads which admitted machines are on the network overlay (the mesh), as measured on each machine's own host, and finds overlay nodes that belong to no admitted machine. - [saphan message](https://docs.saphan.ai/docs/reference/cli/message): Sends and reads messages between coordinating agent sessions, the 'heads' holding the master, scribe or advisor role. - [saphan notice](https://docs.saphan.ai/docs/reference/cli/notice): Shows notifications the installation tried and failed to deliver. - [saphan order](https://docs.saphan.ai/docs/reference/cli/order): Composes, signs and reads orders: the documents that tell an agent run what to do on a stream (one unit of work). - [saphan otel](https://docs.saphan.ai/docs/reference/cli/otel): Exports the installation's record metrics to an OpenTelemetry collector. - [saphan owner-block-discharge](https://docs.saphan.ai/docs/reference/cli/owner-block-discharge): Writes off a stream's outstanding owner-block debt, with a stated reason, when no run on that stream can ever settle it, typically because the stream is already merged or closed. - [saphan owner-block-settle](https://docs.saphan.ai/docs/reference/cli/owner-block-settle): Settles a stream's owner-block debt by recording a well-formed owner block from a file, without starting a run, so the stream can be dispatched again. - [saphan person](https://docs.saphan.ai/docs/reference/cli/person): Performs a person's own act from the command line with a FIDO2 security key: checking what the host offers, enrolling a key, and signing orders. - [saphan policy](https://docs.saphan.ai/docs/reference/cli/policy): Validates, inspects and merges drafts of the two policy document types: egress rule-sets (policy egress) and permission classes (policy grant). - [saphan pr-preflight](https://docs.saphan.ai/docs/reference/cli/pr-preflight): Runs seven checks on the current branch before you open a pull request (branch name, working-tree status, commit subjects, how far it is behind the base, submodules, a clean build and a passing scoped - [saphan prompt](https://docs.saphan.ai/docs/reference/cli/prompt): Manages the prompt library: reusable prompt documents that a person picks and copies into a model. - [saphan refusal-class](https://docs.saphan.ai/docs/reference/cli/refusal-class): Records and reads the owner's ratification of refusal classes — the named categories of reason, such as gate-integrity, for which Saphan Studio refuses an act. - [saphan refusals](https://docs.saphan.ai/docs/reference/cli/refusals): Lists every refusal this binary can record, in plain language: what it means, what to do next, who has to act, and whether a retry can work. - [saphan relay](https://docs.saphan.ai/docs/reference/cli/relay): Records requests between masters — the coordinating sessions that each run a set of streams — when one master's streams cannot finish without an answer from another. - [saphan restore](https://docs.saphan.ai/docs/reference/cli/restore): Proves that a backup can be restored: it checks every checksum, size and count in the manifest, restores the backup into a fresh scratch directory, starts a gateway there on a local port with no outbo - [saphan return](https://docs.saphan.ai/docs/reference/cli/return): Brings a stream's results home from the run that worked on it — its status file into the stream's local channel, its committed branch into this workspace's repository, and for a review run the reviewe - [saphan review](https://docs.saphan.ai/docs/reference/cli/review): Checks that an executor's completion report for a stream is structurally complete — the diff and output attached, and a well-formed close signal that matches the stream's registry entry — and, if it i - [saphan role](https://docs.saphan.ai/docs/reference/cli/role): Starts the working environment for a role a person occupies at a terminal: master, advisor or scribe. - [saphan round](https://docs.saphan.ai/docs/reference/cli/round): Records facts about a round — one pass of work on a stream, normally carried out by an agent run — when part of that round was done by hand. - [saphan route](https://docs.saphan.ai/docs/reference/cli/route): Answers which tier a step is routed to under a routing policy: the first matching rule wins, otherwise the policy's default. - [saphan run](https://docs.saphan.ai/docs/reference/cli/run): Starts one process — an AI coding agent or any executable — under a mandate and records it as a run: the model, effort, budget, time limit, working directory and permissions are fixed up front, enforc - [saphan say](https://docs.saphan.ai/docs/reference/cli/say): Composes one validated statement for the owner — an alert, an open item, or an explicit 'nothing to report' — in the owner-block format that a run's status channel carries; nothing is recorded in the - [saphan scratch](https://docs.saphan.ai/docs/reference/cli/scratch): Inspects and frees the one scratch directory where Saphan Studio keeps every temporary directory it makes on a host, $HOME/.saphan/scratch, with one entry per kind, stream and run. - [saphan seat](https://docs.saphan.ai/docs/reference/cli/seat): Acts on one seat — a vendor CLI login, with its own profile directory, on an admitted machine: checking and repairing its credential, configuring its vendor settings, and issuing or ending the tokens - [saphan serve](https://docs.saphan.ai/docs/reference/cli/serve): Intended to serve the embedded web configurator. - [saphan server](https://docs.saphan.ai/docs/reference/cli/server): Runs the projection server, which serves the installation's record over MCP (stdio and HTTP), as static HTML, and as the console at /console, reading state fresh from the record on every request. - [saphan serverd](https://docs.saphan.ai/docs/reference/cli/serverd): A former command: the background daemon now runs as the separate saphan-server binary. - [saphan service](https://docs.saphan.ai/docs/reference/cli/service): Registers Saphan Studio's background services with this machine's service supervisor so they come back after a restart. - [saphan session-hook](https://docs.saphan.ai/docs/reference/cli/session-hook): Runs Saphan Studio's built-in hook for one event of an agent session: sessionstart, pretooluse, posttooluse, precompact or stop. - [saphan session](https://docs.saphan.ai/docs/reference/cli/session): Manages the sessions the installation's record knows about: conversations the console started, terminals opened in the console, and attached sessions — agent sessions running in your own terminal that - [saphan show](https://docs.saphan.ai/docs/reference/cli/show): Prints a registered order — the instruction document a piece of agent work runs under — exactly as it was registered, read from the commit recorded with its registration. - [saphan sign-spool](https://docs.saphan.ai/docs/reference/cli/sign-spool): Signs the closed model-transcript spool of a finished walled run on a remote machine with that machine's own key, from outside the run's jail. - [saphan stop2](https://docs.saphan.ai/docs/reference/cli/stop2): Closes a round of work you authored yourself, in one command, from inside that round's worktree. - [saphan store](https://docs.saphan.ai/docs/reference/cli/store): Inspects the workspace's state store on disk: which processes hold its files, how its schema level compares with this binary's, and whether it is marked shared or scratch. - [saphan task](https://docs.saphan.ai/docs/reference/cli/task): Intended to generate task specifications from genre manifests. - [saphan teardown](https://docs.saphan.ai/docs/reference/cli/teardown): Archives a finished stream's channel files and records the teardown decision, the owner's recorded act that the stream's worktree may be removed. - [saphan tool](https://docs.saphan.ai/docs/reference/cli/tool): Admits tools to the tool catalogue: a tool-invocation record enters it only through tool admit. - [saphan train](https://docs.saphan.ai/docs/reference/cli/train): Shows and maintains trains: a train is a planned series of related work items, called wagons, declared in a train order and identified by its track name; each wagon is dispatched as its own stream. - [saphan transcript](https://docs.saphan.ai/docs/reference/cli/transcript): Reads the custody record of a run's model transcript. - [saphan tree](https://docs.saphan.ai/docs/reference/cli/tree): Reads a commit's files without touching any branch, index or worktree. - [saphan trust](https://docs.saphan.ai/docs/reference/cli/trust): Creates and manages the keys and signed records that establish who may instruct and approve work in an installation: the root key, delegations, the deployment record and edition, the owner's presence - [saphan verify-affected](https://docs.saphan.ai/docs/reference/cli/verify-affected): Runs a fast, advisory check of what changed between --base and --head: the changed paths are handed to the test adapter configured under [verify.affected], which selects and runs the affected packages - [saphan verify-deploy](https://docs.saphan.ai/docs/reference/cli/verify-deploy): Verifies a deployment end to end and reports PASS only with proof for every step: it records the artifact's digest, builds, checks that the digest changed, runs the rollout, then requires the live hea - [saphan verify-stream](https://docs.saphan.ai/docs/reference/cli/verify-stream): Runs a fixed, deterministic check of a Go stream's local worktree — go build, go vet, go test and gofmt, each step even after an earlier failure — with no language model involved, and stores the verdi - [saphan verify-union](https://docs.saphan.ai/docs/reference/cli/verify-union): Tests what a stream's branch does once merged: it combines the branch with the current tip of its trunk in a temporary detached worktree and runs the repository's full test suite there, then removes t - [saphan verify](https://docs.saphan.ai/docs/reference/cli/verify): Checks a signed instruction — a law document by path, or a registered order by reference — against the installation's trust chain (root key, actor registry, laws manifest and delegations) and prints o - [saphan version](https://docs.saphan.ai/docs/reference/cli/version): Prints the binary's build information: version, commit, build channel, build date and Go version. - [saphan wave](https://docs.saphan.ai/docs/reference/cli/wave): Shows the fleet's streams from the branch, gate and merge point of view. - [saphan workspace](https://docs.saphan.ai/docs/reference/cli/workspace): Manages this machine's registry of the workspaces its daemon serves (workspaces.json in Saphan Studio's configuration directory), and each workspace's inventory of source repositories. - [Configuring](https://docs.saphan.ai/docs/security/guardrails/configuring): Turning judging on, pinning a plugin, and the settings that choose what is judged. - [Coverage](https://docs.saphan.ai/docs/security/guardrails/coverage): Which agents the guardrail covers, on which kinds of machine, and whether the agent is pointed at it or forced through it. - [Guardrails](https://docs.saphan.ai/docs/security/guardrails): A checkpoint between an agent and its model provider that records every exchange and, when you choose, lets your own rules stop one. - [Limits](https://docs.saphan.ai/docs/security/guardrails/limits): What the guardrail does not do in this release. - [Observe and enforce](https://docs.saphan.ai/docs/security/guardrails/observe-and-enforce): The two modes, the signed owner act without which no stage enforces, and what the agent and the record see when a call is stopped. - [Session recording](https://docs.saphan.ai/docs/security/session-recording): What is recorded of every agent run, where it is kept, and what is not recorded. - [Integrity and redaction](https://docs.saphan.ai/docs/security/session-recording/integrity-and-redaction): How a recording can be checked, what is removed from it, and what is deliberately left in. - [Limits](https://docs.saphan.ai/docs/security/session-recording/limits): What is not recorded, and what is recorded but cannot be read back yet. - [Watching and reading](https://docs.saphan.ai/docs/security/session-recording/watching-and-reading): Following a run while it works, reading it afterwards, and the difference between a recorded run and an attached session. - [The audit record](https://docs.saphan.ai/docs/security/egress/audit-record): What is recorded about a run's network: its policy, the policy's identity, and each connection decision — and how far each can be read back today. - [How it works](https://docs.saphan.ai/docs/security/egress/how-it-works): The door that judges each connection, and the wall that makes the door the only way out, on each kind of machine. - [Egress control](https://docs.saphan.ai/docs/security/egress): What an agent run may connect to, how Saphan Studio enforces it, and what you still own. - [Limits and known gaps](https://docs.saphan.ai/docs/security/egress/limits): What egress control does not do in this release, stated plainly so you can plan around it. - [Policies](https://docs.saphan.ai/docs/security/egress/policies): Which policy judges a run, what each backend is allowed by default, and how to write your own. - [Preparing a machine](https://docs.saphan.ai/docs/security/egress/preparing-a-machine): How a machine comes to carry the wall: the probe, what its answers mean, and how to fix a host that cannot. - [When something is refused](https://docs.saphan.ai/docs/security/egress/refusals): Every egress refusal you can meet — before a run starts or on a single connection — with its cause and its remedy. - [What no policy can open](https://docs.saphan.ai/docs/security/egress/what-no-policy-can-open): The address floor every connection is checked against, and the checks applied to each connection after the policy admits it.