Governed execution layer for unattended coding agents in isolated repository workflows.
This repository has been archived on 2026-08-28. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
  • Go 98.2%
  • Shell 1.1%
  • Python 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
coilyco-ops[bot] 040f15989a
All checks were successful
promote / gate-and-promote (push) Successful in 8m40s
release / release (push) Successful in 12s
release / promote-draft-assets (push) Successful in 1m9s
release / bump-tap-formula (push) Successful in 20s
release / bump-scoop-manifest (push) Successful in 21s
docs(agents): declare the pull-request lane this repo actually runs (#1683)
Refs agentic-os#994. Frontmatter said `pull-request-and-merge` while the prose said the merge stays director-gated. Kai settled it: this repo gates the merge, so the lane is `pull-request`.

- Frontmatter declares `workflow: pull-request`.
- The hand-written stamp is replaced by the managed block, rendered from the declared lane, so the prose cannot drift from it again.
- The old stamp claimed to be byte-identical across five repos, which it was not: the four hand-written stamps disagreed on who merges.

This one matters twice over, since ward is the engine the lanes belong to.

`pre-commit run --all-files` passes. Left for you to merge, since this lane is the reason the branch stops here.

Reviewed-on: #1683
2026-08-27 04:38:18 +00:00
.agents/skills docs: bring the docs tree into the large band (#1673) 2026-08-17 02:15:15 +00:00
.forgejo feat!: move to umbra v0.140.0 and drop the sandbox (#1662) 2026-08-14 06:47:20 +00:00
.github docs: collapse documentation into durable contracts 2026-08-05 18:57:27 -07:00
.ward feat(just): this repo's own dev verbs move to a justfile 2026-08-17 13:40:18 -07:00
cmd/ward fix(test): state the mirrored-verb set instead of reading this repo's ward.yaml (#1682) 2026-08-25 08:38:38 +00:00
docs feat(just): this repo's own dev verbs move to a justfile 2026-08-17 13:40:18 -07:00
internal feat!: move to umbra v0.140.0 and drop the sandbox (#1662) 2026-08-14 06:47:20 +00:00
scripts feat!: move to umbra v0.140.0 and drop the sandbox (#1662) 2026-08-14 06:47:20 +00:00
.gitattributes refactor(container): compile launch payloads 2026-07-29 17:10:01 +00:00
.gitignore feat!: move to umbra v0.140.0 and drop the sandbox (#1662) 2026-08-14 06:47:20 +00:00
.golangci.yaml docs: collapse documentation into durable contracts 2026-08-05 18:57:27 -07:00
.pre-commit-config.yaml feat(just): this repo's own dev verbs move to a justfile 2026-08-17 13:40:18 -07:00
AGENTS.md docs(agents): declare the pull-request lane this repo actually runs (#1683) 2026-08-27 04:38:18 +00:00
CLAUDE.md chore(code-comments): clean YAML comment-discipline violations 2026-06-08 16:53:50 -07:00
CODE_OF_CONDUCT.md Seed initial repo scaffolding 2026-05-13 21:38:21 -07:00
CONTRIBUTING.md feat(just): this repo's own dev verbs move to a justfile 2026-08-17 13:40:18 -07:00
go.mod feat!: move to umbra v0.140.0 and drop the sandbox (#1662) 2026-08-14 06:47:20 +00:00
go.sum feat!: move to umbra v0.140.0 and drop the sandbox (#1662) 2026-08-14 06:47:20 +00:00
justfile feat(just): this repo's own dev verbs move to a justfile 2026-08-17 13:40:18 -07:00
LICENSE Seed initial repo scaffolding 2026-05-13 21:38:21 -07:00
Makefile feat!: move to umbra v0.140.0 and drop the sandbox (#1662) 2026-08-14 06:47:20 +00:00
pyproject.toml chore(docs): declare the large documentation band (#1671) 2026-08-17 01:21:50 +00:00
README.md docs: document ward agents in Product surfaces (#1680) 2026-08-25 08:43:38 +00:00
SECURITY.md feat!: move to umbra v0.140.0 and drop the sandbox (#1662) 2026-08-14 06:47:20 +00:00

doc_goal
Let a new adopter understand, install, preview, and navigate Ward without reading implementation history.

Ward

Ward is a governed execution layer for coding agents and repository commands. It runs agent work in fresh least-access containers, exposes fixed issue, Git, pull-request, broker, log, and recovery primitives, and records durable audit evidence. A harness-native goal chooses and repeats work. Ward does not run an autonomous backlog scheduler.

Use Ward when work is separable, concurrent, failure-prone, or needs a durable issue-to-landing trail. A single goal agent may be simpler for one coherent refactor through a tightly coupled subsystem.

Product surfaces

  • ward exec <verb> runs a repository-declared command through argv and repository-state checks.
  • ward git ... exposes governed version-control operations.
  • ward audit ... reads the append-only JSONL trail.
  • ward agent ..., also installed as warded, launches and operates isolated agent runs.
  • ward agents list prints the fixed typed harness roster, which is the supported answer to "which harnesses can I ask for".

Roles select workflow behavior, harnesses select agent CLI mechanics, and workflows select landing evidence. None of those labels grants credentials, mounts, network, broker operations, or merge authority.

Requirements

The repository command path needs only Ward and a .ward/ward.yaml. Agent execution additionally needs Docker, a supported harness, its host auth or model endpoint, and tracker credentials for any issue or PR mutation.

Supported hosts are macOS, Linux, and Windows. See the compatibility matrix for exact provider support.

Install

Homebrew on macOS or Linux:

brew tap coilyco-flight-deck/tap https://forgejo.coilysiren.me/coilyco-flight-deck/homebrew-tap
brew install coilyco-flight-deck/tap/ward

Scoop on Windows:

scoop bucket add coilyco-flight-deck https://forgejo.coilysiren.me/coilyco-flight-deck/scoop-bucket
scoop install ward

Source contributors use the workspace contract. Each release publishes a checksummed platform matrix. Forgejo is canonical and the GitHub release is a verified mirror.

First commands

just test
ward git status
ward audit tail --follow
ward setup
ward doctor
warded engineer owner/repo#123 --print

--print resolves and validates an agent launch without starting a container. Use a fully qualified owner/repo#N in shells so # cannot begin a comment. The first-run guide gives the complete safe sequence.

Execution model

Repository commands use the umbra engine for declaration, validation, routing, and audit. Agent execution adds typed harness adapters, fixed roles and workflows, reservations, a supervised broker, ephemeral containers, secret-safe artifacts, and verified teardown. See architecture and terminology.

Every platform enforces the declared boundary at command entry. Containerized agent runs use the same least-access contract on every supported host, and the container is what bounds a process once it is running.

When a run breaks

Start with troubleshooting. It maps the observed symptom to dispatch status, list state, secret-safe logs, issue-thread evidence, or repository audit, then names the supported remedy.

Status and support

Ward is pre-1.0 and in active use. Minor compatibility changes can land before 1.0, so downstream automation may pin a release. File public bugs and feature requests on the GitHub mirror. Canonical development and release automation run on Forgejo.

See also