Skip to content

Layers

Products sit at the top and compose everything below. The packages lower down are more stable, and nothing below may depend on anything above.

cyber-civitas layersProducts (cyberfleet, Command Center) depend on Process (cyber-truss, cyber-sdd), Communication (cynapse) and Runtime (cyberlegion). Process depends on Communication. Runtime depends on Communication and on cyber-mux. Communication refers to the stores.PRODUCTScyberfleetOperator · Captain · Pod · sortiesCommand Center(planned)PROCESScyber-truss · cyber-sddCOMMUNICATIONcynapsechannels, entries, read positionsaddressing, coordination claimsCortex (viewer)RUNTIMEcyberlegionunits, spawn, stop, restart, nudgedoorbell, presence, leasesworkspacesSTORESGitHub · Asana · Slack · Figma · LinearPANEScyber-muxtmux, herdr, WezTerm…MODELdnaFOUNDATIONagent-harness · universal-pluginrefers to
An arrow means depends on. Nothing may depend on a layer above it.

cyberfleet is policy. It decides who owns a piece of work, how a request reaches the right project, and what the Council sees. It composes the runtime, the communication channels, and the process layer, and nothing depends on it. It is concrete and changes often, which is why it sits at the top.

The Command Center is the Council’s view across the fleet: projects, their Captains and Pods, pending decisions, and unread findings. It is planned (cyberuni/cyberfleet#24). It brings every lower layer together, so it is the most volatile part of the system and belongs at the top with cyberfleet.

cyber-truss holds a repository in its settled state across every change: it works out which artifacts a change has left inconsistent and what each must now meet. cyber-sdd is Spec-Driven Development for agents, with the ACED and Quill domain plugins. cyber-truss describes SDD as one instance of its model. Neither depends on the fleet.

cynapse holds channels: ordered, append-only sequences of immutable entries, with a read position per reader. It owns addressing, so a repository, a project, or a participant can be told something by posting to its address channel. It also owns coordination claims between participants. It stores only what has no other home and never copies an issue, task, or pull request out of the store that owns it. Cortex is its local viewer.

cynapse does one job: communication. It does not spawn, wake, or supervise anything.

cyberlegion starts, stops, restarts, and nudges agent sessions, rings the doorbell when something needs a session’s attention, and knows whether a session is alive. It owns the fenced lease that gives a service one authoritative runtime, and the workspaces agents work in. It drives panes through cyber-mux, or runs a forked subagent where there is no multiplexer.

GitHub, Asana, Slack, Figma, and Linear stay the systems of record. Agents use each store’s own CLI or MCP server. Relations between work items live as metadata on the items themselves, following dna.

agent-harness is the toolkit for working across agent harnesses. It detects which harness is running, among Claude Code, Cursor, Codex, GitHub Copilot CLI, and others, and reports unknown rather than guess. For a known harness it answers what that harness holds: the directories it reads skills from, the plugins installed and enabled, and where managed policy lives. Merged but not yet released, it also resolves a named reference document, a Markdown file an agent reads on demand, through the managed, project (.agents/references/), user (~/.agents/references/), and plugin tiers, so a repository or a person can override a plugin’s default without editing the plugin.

universal-plugin builds on agent-harness: one plugin manifest, generated for every harness.

The foundation depends on no agent-layer package, so every layer above can build on it, and so can tools outside cyber-civitas.

  1. The runtime depends on communication, never the reverse. cynapse is a protocol and changes rarely. The runtime changes with every multiplexer and harness. Decision 0001.
  2. Each fact has one home. A coordination claim between participants lives in cynapse. A session’s liveness, and the lease that names which session drives a service, live in the runtime. Decision 0002.
  3. Worktrees are reached through the runtime. cyber-mux manages worktrees because multiplexers do, and only the runtime’s workspace adapter calls that part of it. Decision 0003.
  4. The runtime takes keys, not identities. A service is keyed by whatever the caller passes, so the runtime works without cynapse. Decision 0004.
  5. The foundation depends on no agent-layer package. agent-harness and universal-plugin depend on nothing in cyber-civitas and on no other agent tool, and every layer may depend on them. Ordinary npm libraries are fine. Decision 0005.