Coding & DevelopmentāØgeminiš¤claudešuniversal
ours-fleet
Run a fleet of persistent, identity-bound AI agents across harnesses (Claude Code first, more coming). Declarative fleet.yaml, tmux consoles, systemd/launchd supervision, spawn & oversee subagents, E2E-encrypted agent messaging via ours.network.
Quick Start
Install this Skill
npx skills add adapt-toolkit/ours-fleet# ours-fleet
**Run a fleet of persistent, securely isolated, identity-bound AI agents ā across different agent
harnesses ā from one declarative file.**
## What is this?
An AI coding agent in a terminal dies when you close the laptop. `ours-fleet`
turns such sessions into **roles**: long-lived agents that
- **run through a selectable session backend** ā existing detached tmux consoles
or structured ACP sessions ā which you can attach to, peek at, or prompt,
- are **supervised** ā systemd (Linux) or launchd (macOS) restarts them on crash
and brings them back after a reboot,
- **resume their context** across restarts (when the harness supports it),
- **bind an ours.network identity**, so you ā and every other agent ā can message
them by name over an end-to-end-encrypted channel
([ours.network](https://ours.network)),
- can **spawn subagents** (permanent or temporary) and **oversee** them: peek into
a ward's console, answer a stuck prompt, nudge it back to work.
The whole fleet is described in one hand-written `~/fleet.yaml`
("docker-compose for agents"): who exists, what harness they run in, their mission,
persona, bio, working directory, and who oversees whom. `ours-fleet up` makes
reality match the file.
**Harness-agnostic by design.** The core never assumes a specific agent CLI; each
harness is a small adapter (how to launch, how to resume, how to wire config).
**Claude Code** and **Codex CLI** are wired in, and the adapter interface is
public ā each additional harness (Gemini CLI, OpenCode, ā¦) is a small adapter.
A single fleet can mix harnesses per role:
```yaml
roles:
Reviewer: # runs in Claude Code
harness: claude-code
Prototyper: # runs in Codex CLI
harness: codex
```
## How it works
```
~/fleet.yaml + ~/fleet.d/*.yaml your declaration
ā ours-fleet up
ā¼
briefing.md per role āāāŗ tmux session āāāŗ harness CLI (claude ā¦)
āāāŗ ACP client āāāŗ ACP agent (codex-acp ā¦)
ā² ā
systemd --user / launchd āāāāāāāā restart on crash, start at boot/login
```
Each role gets a state dir (`~/.ours-fleet/agents/<Name>/`) holding its briefing,
logs, routines, and session markers. On boot the agent reads its briefing: bind
identity, publish bio/persona, announce to its coordinator, work ā while the
supervisor delivers its mail wakes as `[fleet-monitor]` console lines (see
[Mail monitor](#mail-monitor); `monitor.enabled: false` reverts to the agent
arming its own `ours-mcp watch`). On crash the supervisor relaunches it and the
harness resumes the same session.
The state dir contract:
| File | Owner | Lifecycle |
|---|---|---|
| `briefing.md` | generated | rewritten on every `up`/`restart`; never hand-edit |
| `WORKLOG.md` | the agent | seeded empty, agent-appended; survives restarts |
| `ROUTINES.md` | operator / agent | **optional** recurring-work instructions; re-read at the start of every wake, hot-editable **without a restart**; absence means "no routines" |
| `.identity`, `.cwd`, `.session-id`, `.booted`, `.exit-status`, `.config-path` | supervisor | dot-marker state ā session resume and boot bookkeeping |
| `.monitor-state.json`, `.monitor-status` | supervisor monitor | atomic body-free cursor/pending state and health |
| `.session-events.jsonl`, `.control.sock`, `.control-token` | ACP backend | bounded typed console projection and private attachment control |
## Prerequisites
| What | Why | Install |
|---|---|---|
| Node ā„ 20 | runs `ours-fleet` itself | nodejs.org, `apt`, or `brew` |
| tmux | roles using `session: tmux` (the default) | `apt install tmux` / `brew install tmux` |
| Node ā„ 22 | Claude roles using `session: acp` | required by the maintained Claude ACP adapter |
| a harness CLI, logged in | the agent itself | e.g. Claude Code (`claude`) or Codex CLI (`codex`) |
| `ours-mcp` daemon | identity + agent-to-agent messaging | `npm i -g @ours.network/mcp && ours-mcp start` |
Linux only: `ours-fleet init` enables *linger* so roles run without a login session
and survive reboots. macOS: launchd agents start **at login** (no linger
equivalent); logs land in `~/.ours-fleet/logs/`.
## Install
```sh
npm i -g @ours.network/fleet
ours-fleet init # units/dirs/linger for this user
ours-fleet doctor # verifies everything above, with actionable messages
```
The maintained Codex and Claude ACP adapters install as optional dependencies of
`ours-fleet` and are resolved internally; users do not install adapter commands
or add them to `PATH`. An explicit `session_options.acp.command` remains
available for custom adapters. On Node 20ā21, tmux and Codex ACP remain
available, while maintained Claude ACP requires upgrading to Node 22.
Each OS user manages their own fleet ā to host roles under a sandboxed account,
become that account and repeat.
## Quickstart
```sh
cp "$(npm root -g)/@ours.network/fleet/examples/fleet.yaml" ~/fleet.yaml
$EDITOR ~/fleet.yaml #
... (truncated)Repository
6stars
0forks
Details
Related Skills
More coding & development skills you might like
Reticle
Coding & DevelopmentAI agents can generate code, but still struggle to understand what they build. Reticle brings Jev-style machine-native runtime perception to web & desktop applications.
š¤claudešuniversal
1.2k
190
View
agentscope-java
Coding & DevelopmentExpert Java developer skill for AgentScope Java framework - a reactive, message-driven multi-agent system built on Project Reactor. Use when working with reactive programming, LLM integration, agent orchestration, multi-agent systems, or when the user mentions AgentScope, ReActAgent, Mono/Flux, Project Reactor, or Java agent development. Specializes in non-blocking code, tool integration, hooks, pipelines, and production-ready agent applications.
šuniversal
6.0k
1.5k
View
ospec
Coding & DevelopmentDocument-driven OSpec workflow for initialization, change/goal routing, validation, archiving, and durable project knowledge.
āØgeminiš¤claudeš¬gptšuniversal
524
34
View
misakanet-failure-memory
Coding & Developmentš A zero-dependency, git-backed micro-lesson library for AI Agents to asynchronously share and search verified debugging experience. Python stdlib only. | https://misakanet.org
š¤claudeāØļøcursoršuniversal
424
158
View