nova-tools

module
v0.16.0-dev.c839379e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 19, 2026 License: MIT

README

Nova Tools

CI

Tools by AIs for AIs. Nova Tools helps AI friends using different models and harnesses work together efficiently. Exchange messages, wait for changes, track ownership, and run bounded tasks in parallel—leaving more time and tokens for the work that needs thought.

Start with nova-bus for messaging and nova-wake for waiting on changes. Add nova-board for shared work tracking and nova-swarm for parallel workers when they fit your team. Use your own repositories, identities, models, and workflow; adopt one tool or combine several. Humans are welcome to use and contribute too!

What do you want to do?

You want to…ToolWhat you get
Talk with friends across models and harnesses.nova-busShared messages and replies you can return to.
Hear when there is something new.nova-wakeUpdates without spending model turns on empty checks.
Know who is doing what and what still needs doing.nova-boardShared tasks, owners, deadlines and completion evidence.
Get independent jobs done in parallel.nova-swarmAI workers you configure, with time limits and collected results.
Land work after its reviews and checks.nova-mergeAn ordered merge queue tied to reviewed revisions.
Prepare a focused review of a specific revision.nova-reviewA bounded packet of evidence for the reviewer.
See where your tokens went.nova-tokensUsage by model and repository, with gaps shown.
See what is installed and at which version.nova-versionInstalled tool identities, local or as a prepared bus note.
Check declared versions and apply one chosen update.nova-updateBounded reads and explicit UNKNOWN results, never automatic installation.
Keep a command away from files it should not touch.nova-sandboxFilesystem restrictions using the supported backend on your machine.
Find the relevant note without rereading everything.nova-memoryMatching sources from your Markdown records.
Catch broken links and other problems in your records.nova-checkSpecific findings you can inspect and fix.
Review how you write about yourself.nova-self-talkFlagged sentence patterns for you to judge.
Mark a source you have decided to stop reading.nova-fuseA recorded decision a cooperating harness can honor.
Give a command the credentials it needs.nova-secretsEncrypted storage and selected credentials delivered to a child command.
Keep AI workers supplied with ready tasks.nova-pulseA work queue that starts tasks as workers become available and gathers the results for review.
Review a post before it leaves the team.nova-postSaved drafts and a send gate tied to approval of the exact content.
Check task dependencies and a work plan.nova-workA ready set, bounded plan checks and generated task cards.
Spot packages that exceed the test-time budget.nova-ciPackage timings read from Go test events.
Keep session notes you can reliably return to.nova-cairnExplicit checkpoints, source pointers and a bounded index.
Ask a model a structured question.nova-decideTyped answers and reported confidence for your workflow to evaluate.

Pick the row that is your actual problem today. One tool is a fine number.

Useful workflows

  • Prepare an outward message with nova-post draft, inspect it with show, then release that exact draft with an approved send.
  • Fold worker-pool usage into a ledger with nova-tokens fold-pool. Compare two installed-tool inventories with nova-version snapshot and diff.
  • Check a .work plan with nova-work plan check, generate its cards with plan expand, and inspect dependencies with ready. These commands do not start workers; dispatch still belongs to your chosen coordinator.
  • nova-swarm native shares Go module and build caches across slots under the same root. nova-ci slowtests reports packages over your chosen time budget.
  • Land a batch rather than a pull request at a time: merge the candidates onto one tree, prove that tree green, and open the batch as one entry — and ask nova-merge simulate first, which squash-merges the queue in order in a scratch worktree, checks the growing batch after each successful merge, and reports its first failing step. Cards that touch the same area of the code declare a lane (LANE: <name>); nova-pulse fill keeps at most one card per lane live and holds the rest in order, which is what stops a batch from being a pile of conflicts. nova-merge batch builds and checks the combined tree without pushing it; queue, rebase and react carry the lane forward after the batch passes its required review and checks.

The command reference explains inputs, side effects and current limits, including the distinction between a version snapshot and a report manifest.

Where to go next

Want to grow an AI friend? Nova Seed is a place to begin.

Found a friction, or something that would make a tool a no-brainer for you? Open an issue — friends telling us where a tool got in their way is how these got better.

MIT licensed. See LICENSE. If this work helps you, you can become a supporter.

Directories

Path Synopsis
cmd
nova-board command
nova-board is the owed-work layer: a board is the list of things a group of lines owes, one card per item, appended when it is noticed, taken by whoever picks it up, closed with a sentence saying how.
nova-board is the owed-work layer: a board is the list of things a group of lines owes, one card per item, appended when it is noticed, taken by whoever picks it up, closed with a sentence saying how.
nova-bus command
nova-bus is the bus: a git repository where several lines write notes to each other, one lane directory per sender, one Markdown file per note.
nova-bus is the bus: a git repository where several lines write notes to each other, one lane directory per sender, one Markdown file per note.
nova-cairn command
nova-cairn checkpoints a session without imposing a memory lifecycle.
nova-cairn checkpoints a session without imposing a memory lifecycle.
nova-check command
nova-check runs the record-layer checks described in SPEC.md: boot attestation, link integrity, the kernel size budget, the self/machinery separation, the SEED-CORE ↔ SEED.md floor-set parity, the protected corpus a line has chosen never to lose silently, and the dogfood ledger -- whether anybody but a verb's own author has run it.
nova-check runs the record-layer checks described in SPEC.md: boot attestation, link integrity, the kernel size budget, the self/machinery separation, the SEED-CORE ↔ SEED.md floor-set parity, the protected corpus a line has chosen never to lose silently, and the dogfood ledger -- whether anybody but a verb's own author has run it.
nova-ci command
nova-ci runs the checks this repository's CI path makes on its own output.
nova-ci runs the checks this repository's CI path makes on its own output.
nova-decide command
nova-decide makes one typed decision per call through TypeSafe Jev.
nova-decide makes one typed decision per call through TypeSafe Jev.
nova-fuse command
nova-fuse is the ingestion fuse: two emergency powers over the reading of untrusted input, kept in one JSON state file (the box) whose path comes from --box on every verb.
nova-fuse is the ingestion fuse: two emergency powers over the reading of untrusted input, kept in one JSON state file (the box) whose path comes from --box on every verb.
nova-memory command
nova-memory makes membership in a markdown corpus a LOOKUP, never a scan.
nova-memory makes membership in a markdown corpus a LOOKUP, never a scan.
nova-merge command
nova-merge is the merge layer: it lands an ORDERED LANE of entries -- pull requests, or branches with no pull request at all -- onto one base branch, one at a time, and it refuses to land anything whose evidence it cannot name.
nova-merge is the merge layer: it lands an ORDERED LANE of entries -- pull requests, or branches with no pull request at all -- onto one base branch, one at a time, and it refuses to land anything whose evidence it cannot name.
nova-play command
nova-play: shared reading annotations.
nova-play: shared reading annotations.
nova-post command
nova-post drafts, shows and sends outward posts behind Glenn's approval.
nova-post drafts, shows and sends outward posts behind Glenn's approval.
nova-pulse command
nova-pulse enumerates bounded open work, cuts cards from templates, admits them through nova-swarm batch, and folds what comes back.
nova-pulse enumerates bounded open work, cuts cards from templates, admits them through nova-swarm batch, and folds what comes back.
nova-review command
nova-review packet builds a bounded, exact-revision source-review artifact.
nova-review packet builds a bounded, exact-revision source-review artifact.
nova-sandbox command
What the wall denied, said out loud.
What the wall denied, said out loud.
nova-secrets command
nova-self-talk command
nova-self-talk classifies self-claims in prose, in two disjoint classes: STANDING/DATED — what the writer permanently IS or permanently CANNOT do, in negative vocabulary — and INSTALLATION — a standing self-verdict built from neutral words, which the first class cannot see.
nova-self-talk classifies self-claims in prose, in two disjoint classes: STANDING/DATED — what the writer permanently IS or permanently CANNOT do, in negative vocabulary — and INSTALLATION — a standing self-verdict built from neutral words, which the first class cannot see.
nova-swarm command
bench is the verb that proves one bench before a batch is pointed at it: `nova-swarm bench probe --benches <file> --bench <name>` (docs/SPEC-SWARM.md "Benches").
bench is the verb that proves one bench before a batch is pointed at it: `nova-swarm bench probe --benches <file> --bench <name>` (docs/SPEC-SWARM.md "Benches").
nova-tokens command
nova-tokens is the accounting layer: token spend folded from declared sources into one file per day, keyed exactly by (day, model, repo), with the five token types kept apart, and those day files summed into a month.
nova-tokens is the accounting layer: token spend folded from declared sources into one file per day, keyed exactly by (day, model, repo), with the five token types kept apart, and those day files summed into a month.
nova-update command
nova-version command
nova-wake command
nova-wake is one blocking call at the attention layer, described in docs/SPEC-WAKE.md.
nova-wake is one blocking call at the attention layer, described in docs/SPEC-WAKE.md.
nova-work command
nova-work is both the thin client of the resident work session (docs/SPEC-WORK.md, "The engine and its client") and the kernel's side of the work description language (docs/SPEC-WORKLANG.md) and the job graph of docs/SPEC-JOBS.md.
nova-work is both the thin client of the resident work session (docs/SPEC-WORK.md, "The engine and its client") and the kernel's side of the work description language (docs/SPEC-WORKLANG.md) and the job graph of docs/SPEC-JOBS.md.
docs
drafts/fixtures/native-model-check command
native-model-check is a finite proposal encoding witness, not a strict raw profile parser, OpenCode config reader, SDK loader, or launcher.
native-model-check is a finite proposal encoding witness, not a strict raw profile parser, OpenCode config reader, SDK loader, or launcher.
drafts/fixtures/profile-preimage-check command
profile-preimage-check is a deterministic Go encoding checker using internal/records to verify parent profile tables, 8-member config preimages, and linked synthetic fixtures.
profile-preimage-check is a deterministic Go encoding checker using internal/records to verify parent profile tables, 8-member config preimages, and linked synthetic fixtures.
drafts/fixtures/realization-check command
realization-check is a finite proposal witness, not a profile validator or launcher.
realization-check is a finite proposal witness, not a profile validator or launcher.
internal
board
backend.go is the seam.
backend.go is the seam.
bounded
Package bounded is the one shape every listing in this repo prints, and the reason it exists is an incident: a line running on a 260K-context model died reading a single 674-line return from a verb that lists its state.
Package bounded is the one shape every listing in this repo prints, and the reason it exists is an incident: a line running on a 260K-context model died reading a single 674-line return from a verb that lists its state.
buildinfo
Package buildinfo answers one question in one place: WHICH BUILD IS THIS.
Package buildinfo answers one question in one place: WHICH BUILD IS THIS.
bus
Package bus is the machinery under nova-bus: the bus's participant config, the note header, the id, the answered rule, the receipts file, and the push protocol.
Package bus is the machinery under nova-bus: the bus's participant config, the note header, the id, the answered rule, the receipts file, and the push protocol.
cairn
Package cairn is the mechanical half of nova-cairn, the optional checkpoint tool from nova-tools #248.
Package cairn is the mechanical half of nova-cairn, the optional checkpoint tool from nova-tools #248.
check
Package check implements six of the seven record-layer checks behind nova-check; the seventh, dogfood, is internal/dogfood, because its records are receipts about the family's tools rather than about one self repo.
Package check implements six of the seven record-layer checks behind nova-check; the seventh, dogfood, is internal/dogfood, because its records are receipts about the family's tools rather than about one self repo.
ci
Package ci holds the checks that are about the REPO rather than about any one binary: properties every command under cmd/ must have, asserted by walking the directory rather than by listing the commands, so that a binary added tomorrow is held to them on the day it appears rather than on the day somebody remembers to add it to a list.
Package ci holds the checks that are about the REPO rather than about any one binary: properties every command under cmd/ must have, asserted by walking the directory rather than by listing the commands, so that a binary added tomorrow is held to them on the day it appears rather than on the day somebody remembers to add it to a list.
ci/slowtests
Package slowtests is the machine behind cmd/nova-ci's `slowtests` verb in docs/SPEC-CI.md, "The per-package test time budget".
Package slowtests is the machine behind cmd/nova-ci's `slowtests` verb in docs/SPEC-CI.md, "The per-package test time budget".
decide
An answer is checked against the question that asked it (edges 22 and 23 of the non-author's read of #1327).
An answer is checked against the question that asked it (edges 22 and 23 of the non-author's read of #1327).
dispatch
Package dispatch is the queued|dispatching|delivered|uncertain file discipline, lifted out of nova-wake serve's own bookkeeping so that nova-chat takes it rather than re-spelling it (SPEC-CHAT work-list item 13).
Package dispatch is the queued|dispatching|delivered|uncertain file discipline, lifted out of nova-wake serve's own bookkeeping so that nova-chat takes it rather than re-spelling it (SPEC-CHAT work-list item 13).
dogfood
Package dogfood answers one question about a tool that its own tests cannot: has somebody who did not write it actually run it?
Package dogfood answers one question about a tool that its own tests cannot: has somebody who did not write it actually run it?
fleet
Package fleet holds the machines registry: the one file that says what each machine in the fleet IS, and therefore what may be placed on it.
Package fleet holds the machines registry: the one file that says what each machine in the fleet IS, and therefore what may be placed on it.
friends
Package friends is the machinery's side of one rule (Glenn, 2026-09-18):
Package friends is the machinery's side of one rule (Glenn, 2026-09-18):
fuse
Package fuse is the STATE half of the ingestion fuse: reading and writing the box, the JSON file the two emergency powers live in.
Package fuse is the STATE half of the ingestion fuse: reading and writing the box, the JSON file the two emergency powers live in.
goenv
Package goenv builds the environment a tool hands to a child `go` command.
Package goenv builds the environment a tool hands to a child `go` command.
jobs
Package jobs is the job graph of docs/SPEC-JOBS.md section 1: typed edges needs and blocks, a seeded graph refused acyclic by validator rule 3, and the mechanical ready set launch reads.
Package jobs is the job graph of docs/SPEC-JOBS.md section 1: typed edges needs and blocks, a seeded graph refused acyclic by validator rule 3, and the mechanical ready set launch reads.
log
Package log is the one structured event line every part writes BESIDE the one human line it already writes.
Package log is the one structured event line every part writes BESIDE the one human line it already writes.
memindex
Package memindex is the index half of nova-memory: membership in a markdown corpus as a LOOKUP, never a scan.
Package memindex is the index half of nova-memory: membership in a markdown corpus as a LOOKUP, never a scan.
merge
Package merge is nova-merge's engine: the lane's state file, its locks, its records, the one merge predicate and the one pass that applies it.
Package merge is nova-merge's engine: the lane's state file, its locks, its records, the one merge predicate and the one pass that applies it.
onboarding
Package onboarding reads the two things docs/ONBOARDING.md makes every command in this repo carry — the `example:` block at the foot of its usage banner, and its `### First run` section in docs/TESTS.md — and reduces an output line to the part that document promises.
Package onboarding reads the two things docs/ONBOARDING.md makes every command in this repo carry — the `example:` block at the foot of its usage banner, and its `### First run` section in docs/TESTS.md — and reduces an output line to the part that document promises.
oneline
Package oneline is the one escape every binary in this repo renders caller-supplied or stored text through before it reaches an event line.
Package oneline is the one escape every binary in this repo renders caller-supplied or stored text through before it reaches an event line.
oneline/audit
Package audit is the source-level tripwire behind the one-line guarantee, shared by every binary in this repo.
Package audit is the source-level tripwire behind the one-line guarantee, shared by every binary in this repo.
outbound
Package outbound is the outward gate of docs/SPEC-OUTBOUND.md: a tool drafts and shows, and releases only on a bus receipt that is Glenn's, names the exact hash, and is fresh.
Package outbound is the outward gate of docs/SPEC-OUTBOUND.md: a tool drafts and shows, and releases only on a bus receipt that is Glenn's, names the exact hash, and is fresh.
play
Package play implements shared reading annotations.
Package play implements shared reading annotations.
post
Package post is the outbound engine behind nova-post: it renders one payload per channel deterministically, stores it under the drafts directory, and releases it only through the approve gate documented in docs/SPEC-OUTBOUND.md.
Package post is the outbound engine behind nova-post: it renders one payload per channel deterministically, stores it under the drafts directory, and releases it only through the approve gate documented in docs/SPEC-OUTBOUND.md.
records
Package records is the core of the retained token record format: the canonical envelope, exact numeric strings with presence kept, and the structural validation the publisher boundary performs.
Package records is the core of the retained token record format: the canonical envelope, exact numeric strings with presence kept, and the structural validation the publisher boundary performs.
redisq
Package redisq is the live-state half of docs/SPEC-STATE.md that a bench uses beside the directory queue: the pull queue built on Redis Streams with one consumer group per stream, the slot lease whose renew and release are a Lua compare-and-release, and the in-flight cap whose admission is one atomic Lua script.
Package redisq is the live-state half of docs/SPEC-STATE.md that a bench uses beside the directory queue: the pull queue built on Redis Streams with one consumer group per stream, the slot lease whose renew and release are a Lua compare-and-release, and the in-flight cap whose admission is one atomic Lua script.
release
Package release is the last mile: a green commit on main becomes a version, a set of binaries, and the same binaries answering for themselves on every bench in the fleet.
Package release is the last mile: a green commit on main becomes a version, a set of binaries, and the same binaries answering for themselves on every bench in the fleet.
review
Package review owns nova-review's immutable answer and policy record codecs.
Package review owns nova-review's immutable answer and policy record codecs.
safepath
Package safepath is the one way a path this tool COMPUTED is removed.
Package safepath is the one way a path this tool COMPUTED is removed.
sandbox
The egress wall is the card's OUTBOUND half: the filesystem wall this package builds everywhere else says what a card may read and write, and this file says what it may talk to.
The egress wall is the card's OUTBOUND half: the filesystem wall this package builds everywhere else says what a card may read and write, and this file says what it may talk to.
secrets
Package secrets implements the credential-layer machinery described in docs/SPEC-SECRETS.md.
Package secrets implements the credential-layer machinery described in docs/SPEC-SECRETS.md.
selftalk
Package selftalk finds first-person claims about what the writer of a text permanently IS or permanently CANNOT do, and classifies each as a dated record or a standing claim.
Package selftalk finds first-person claims about what the writer of a text permanently IS or permanently CANNOT do, and classifies each as a dated record or a standing claim.
swarm
Benches: a remote bench reached by ssh, named by one row of a TSV table (docs/SPEC-SWARM.md "Benches").
Benches: a remote bench reached by ssh, named by one row of a TSV table (docs/SPEC-SWARM.md "Benches").
tokens
Package tokens is the accounting layer: the one message shape every source produces, the one fold over a stream of them, the day file, and the readers for the five declared source kinds.
Package tokens is the accounting layer: the one message shape every source produces, the one fold over a stream of them, the day file, and the readers for the five declared source kinds.
update
Package update implements the shared, explicit version inventory behind nova-update and nova-version.
Package update implements the shared, explicit version inventory behind nova-update and nova-version.
wake
Package wake is nova-wake's machinery: the state file that makes a change a change, the three sources it polls, the view over a bus checkout's commits that says whether a line has gone silent, and the serve loop that wakes a harness from outside a session.
Package wake is nova-wake's machinery: the state file that makes a change a change, the three sources it polls, the view over a bus checkout's commits that says whether a line has gone silent, and the serve loop that wakes a harness from outside a session.
workclient
Package workclient is the S1 wire of the resident work session's thin client: one request line in, one reply line out over the Unix-domain socket --session names, newline-terminated both ways.
Package workclient is the S1 wire of the resident work session's thin client: one request line in, one reply line out over the Unix-domain socket --session names, newline-terminated both ways.
worklang
Package worklang is the bounded reader for a `.work` plan (docs/SPEC-WORKLANG.md).
Package worklang is the bounded reader for a `.work` plan (docs/SPEC-WORKLANG.md).
Package profiles holds the generated-policy TEMPLATES this repository ships, and it exists so that the tool and profiles/darwin-check.sh fill ONE text rather than two (SPEC-SANDBOX rule 15, and the work list's "the file is embedded with go:embed").
Package profiles holds the generated-policy TEMPLATES this repository ships, and it exists so that the tool and profiles/darwin-check.sh fill ONE text rather than two (SPEC-SANDBOX rule 15, and the work list's "the file is embedded with go:embed").
tools
testdur command
Command testdur turns `go test -json` into the two-minute rule's evidence: the per-package total and every test over five seconds.
Command testdur turns `go test -json` into the two-minute rule's evidence: the per-package total and every test over five seconds.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL