VIRGO

WORKSPACES & PROJECTS

Separate work domains, shared infrastructure.

A workspace is an isolation boundary. A project is the concrete work unit inside it. Persona duties bind to projects, while machines remain shared capacity for the whole installation.

HIERARCHY

Ownership narrows into duty.

The hierarchy describes authority and records. It does not dedicate a machine to each workspace.

HOME AND VERBS

Simple by default, explicit when you need separation.

virgo init creates the immutable default workspace ID home, so a single-domain owner never has to design a workspace structure first.

virgo workspace add job
virgo workspace add client-a
virgo workspace list

Every additional domain is an explicit act. Removal is absent from the initial command surface because a workspace carries personas and records; retirement needs specified destructive semantics.

PROJECT BINDINGS

Personas receive duties, not ambient access.

A project lives inside one workspace and usually corresponds to a repository. Persona duties attach at this level, so a project lead or coder receives the worktree and actions required for that project rather than the whole workspace.

workspace/project/agent

This address converges routing, record provenance, and authority on the same hierarchy.

MECHANISM-ENFORCED ISOLATION

A valid-looking cross-workspace request still fails.

Persona stampworkspace = client-a
must equal
Tool targetworkspace = client-a
and
Transport bindingworkspace = client-a

Capability authorization compares stamped scope to the operation. Transport compares the verified persona identity to its binding on every operation. A syntactically correct request for another workspace is denied; UI filtering is not the isolation boundary.

SHARED MACHINE FLEET

Placement follows capacity and policy, not workspace ownership.

Machine Ahome/persona-1
job/persona-2
Machine Bclient-a/persona-3
Machine Celigible spare

Machines belong to the installation and may host fenced personas from different workspaces. Optional placement constraints can narrow eligibility later without changing the hierarchy.