Workspace Model for Orcho
An Orcho workspace is the operating folder behind one project or a related project group. It is not the project repository itself. It holds run state, local Orcho settings, generated worktrees, prompt override rails, task-file conventions, and MCP setup hints.
The normal adoption path starts inside an existing repository:
cd ~/www/my-projectorcho workspace initOrcho registers the repository in place and creates a deterministic managed workspace under the platform’s user-data directory. Nothing is moved into an Orcho-specific parent. CLI commands launched from the project resolve that workspace automatically.
For a product already organized as several related repositories, initialize their common root instead:
orcho workspace init ~/work/my-productA non-project root keeps the explicit shared topology:
my-product/├── api/│ └── .orcho/│ └── multiagent/│ └── plugin.py configured project contract├── web/└── workspace-orchestrator/ ├── orcho-env.sh ├── .orcho/ │ ├── config.local.json │ ├── .task-files/ │ └── multiagent/ │ ├── plugin.py template, copy into a project to tune it │ ├── AGENTS.md agent rules for configuring that plugin │ ├── CLAUDE.md shim to the same rules │ └── prompts/ │ ├── roles/ │ ├── tasks/ │ └── formats/ ├── .agents/ │ └── skills/ optional shared skill packages └── runspace/ └── runs/The init command creates the operating surface, records local config, prepares
runspace/, prints shell and MCP setup, registers projects, and exposes safe
extension points. Use --dry-run to inspect what would be created. Use
--no-scaffold only when you intentionally want the bare runtime folders
without the plugin and agent-guidance templates.
These topologies serve different moments:
| Topology | Use it when |
|---|---|
| Managed single-project workspace | You found Orcho and want to connect one repository without reorganizing it. |
| Shared product workspace | Related repositories already share, or can deliberately adopt, one product root for aliases and cross-project work. |
Why keep it separate?
Section titled “Why keep it separate?”The workspace is operational state. Your project repository is product code.
Keeping them separate makes it easier to:
- inspect run artifacts without committing them;
- run Orcho against several sibling repositories;
- preserve delivery diffs;
- recover from interrupted runs;
- share a project group without mixing run state into source history;
- keep local MCP and runtime setup out of product source.
What workspace init gives you
Section titled “What workspace init gives you”orcho workspace init gives Orcho a home for work that should not live inside
application source, whether that home is managed automatically or placed under
an explicit product root.
| Surface | Purpose |
|---|---|
workspace-orchestrator/ | The operating root for one project or project group. |
runspace/runs/ | Recorded run state, output logs, events, receipts, and generated worktrees. |
orcho-env.sh | Shell setup so orcho status, orcho evidence, and follow-up commands resolve the same workspace. |
.orcho/config.local.json | Workspace-local project registration and local settings. |
.orcho/multiagent/plugin.py | A language-neutral plugin template. Copy it into a project, then configure it from repository evidence. |
.orcho/multiagent/AGENTS.md | Agent guidance for discovering native checks, classifying cost, choosing policy, and preserving verification ownership. |
.orcho/multiagent/CLAUDE.md | A shim to the same guidance, so the policy has one maintained source. |
.orcho/multiagent/prompts/ | Workspace-level prompt override rails for roles, tasks, and formats. |
.agents/skills/ | Optional shared skill packages for repeatable specialist procedures. |
.orcho/.task-files/ | Convention point for reusable task files before they are copied into a project. |
This is why workspace setup belongs early in the docs. It is not a demand to reorganize source. It is the control boundary where Orcho separates project code, delivery state, project tuning, and operator control.
Checkout isolation policy
Section titled “Checkout isolation policy”Orcho distinguishes the canonical project repository from the checkout used by a specific run.
| Concept | What it means |
|---|---|
{project} | The target repository: the durable source tree the run is about. |
{checkout} | The current Orcho-provided checkout: either a run-owned worktree or the project checkout itself. |
With per-run worktree isolation, agents and verification run in {checkout},
while {project} stays untouched until the delivery boundary. The run records
the worktree path, base ref, diff, and receipts, so review and repair can keep
talking about the same subject.
With isolation off, {checkout} and {project} are the same folder. That mode
is simpler and useful for read-only inspection, current-diff review, or small
intentional edits, but it also means the worker is operating directly in the
target repository.
The full policy — per_run vs off, per-profile defaults, and the
dirty-checkout intake (include / exclude / commit / halt) when the project has
uncommitted changes — lives in
Profile and gate policy. This
page only fixes the {project} vs {checkout} vocabulary those rules use.
Project tuning lives in the plugin
Section titled “Project tuning lives in the plugin”Without a configured project plugin, Orcho runs in generic mode — fine for a
first mono-run, but insufficient for durable repository-specific readiness.
workspace init already creates the safe scaffold. Adapt it into one file per
project, plugin.py: project identity and architecture, file hints, allowed
companion modifications, scheduled verification, extra
plan/implementation/review instructions, and project skill trust.
In the workspace layout, the plugin and its prompt overrides sit next to the project it tunes:
project/.orcho/multiagent/plugin.pyproject/.orcho/multiagent/prompts/tasks/build.mdproject/.orcho/multiagent/prompts/roles/code_reviewer.mdworkspace-orchestrator/.orcho/multiagent/prompts/formats/review_json.mdThis page is about where that tuning lives. For the plugin’s fields, real
PLUGIN = {…} examples, and how minimal identity grows into a policy contract,
read Project tuning and plugins.
Read the layers as a ladder:
- Generated scaffold only: generic Orcho behavior.
- Minimal plugin: project identity, stack, paths, and test hints.
- Policy plugin: scheduled gates, allowed modifications, review focus, and local trust.
- Skill registry: shared domain procedures routed to phases or subtasks.
- Prompt overrides: targeted changes to role, task, or output-format behavior.
- Profiles, runtime adapters, and MCP control: expert surfaces for changing run shape, worker routing, and external control.
First-run rule
Section titled “First-run rule”For the first run, choose one project and one task. Add tuning only when the basic lifecycle is clear.
The healthy path is:
- Run
orcho workspace init. - Run one mono task in generic mode.
- Copy the plugin template, merge its agent guidance into the project root, and add a minimal project plugin from observed repository facts.
- Review the configured commands and gate consequences as an engineer, then
inspect the resolved contract with
orcho quality-gates. - Add shared skills only when the same specialist procedure repeats.
- Move into profile and gate policy only when the task class justifies it.
- Use workspace-level prompt overrides only when generic prompts repeatedly miss a project-specific pattern.
Deep reference
Section titled “Deep reference”The canonical engineering doc lives with the code:
- docs/user/03_workspaces.md — workspace configuration and project setup in full
- Project tuning and plugins explains how to tune a repository.
- Scheduled verification setup explains how to inspect native commands, classify cost, choose policy, and verify the effective contract.
- Prompt engine explains role/task/format prompt composition and protected contracts.
- Skill registry explains shared specialist procedures and trust policy.
- Profiles and gates explains workflow depth and readiness policy.
- Plan contract and DAG explains execution policy and isolation policy for larger runs.
- Runtime adapters explains worker runtime routing.