Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

568 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿงฌ Geneseed

A portable, theme-able harness you implant once and use everywhere to grow a disciplined AI coding agent.

CI License: MIT Node >= 22.3 zero dependencies Themes Skills Agents Laws Plugins OpenCode ยท Claude Code ยท Bob ยท Copilot ยท AGENT.md

Why ยท Setup ยท Web & TUI ยท What you get


Geneseed distils an agent operating system into a generic harness built around a single AGENT.md. Point your tool at it and the agent inherits a set of operating rules, a roster of capability agents, native skills, a memory convention, and โ€” on OpenCode โ€” 7 plugins that auto-load your project's docs, capture durable memory, enforce the safety laws, run saved workflows, ping you when a long run finishes, hold a minimal-code mode when you ask for one, and stream what each session is doing to the web console. One source builds it; it follows you into every repo.

This page is the overview. Four parts: why it exists, how to set it up, the two ways to drive it (web & TUI), and what you get. For every install path, configuration knob, and troubleshooting step, read the full Setup guide.


๐Ÿงฌ 1 ยท Why Geneseed

The name

The name comes from Warhammer 40,000. In the lore, gene-seed is a Space Marine Chapter's genetic legacy: implanted once into an aspirant, it rebuilds them from within, and every successor Chapter is founded from the gene-seed of its parent. That is exactly this project's model. The harness began life as a personal, Obsidian-vault-grown agent operating system; this repo is the genetic material distilled out of it โ€” implant it once into your tool, and a disciplined agent grows around it, carrying the same inherited rules, agents, skills, and memory into every repo it touches.

The lineage is also why an imperial theme ships alongside the neutral one: it is the voice of the parent system the harness was extracted from. But the genetics are theme-independent โ€” the name is a nod to the origin, not a commitment to Space Marines.

How it works

One canonical source in src/ renders, via a tiny dependency-free generator (build.py, stdlib only), into a ready-to-use bundle. A theme controls only voice โ€” how the AI responds and how the prose inside the docs reads (tagline, greeting, descriptions). Structure is theme-independent: section names (Rules, Agents, Skills, Memoryโ€ฆ) and folder names (laws/, agents/, skills/, memory/, notebook/) are always plain English, so the scaffolding stays tool-friendly while the flavour lives in the words.

python build.py                  # default theme (neutral)
python build.py --theme imperial # Warhammer 40k voice, identical structure

๐Ÿš€ 2 ยท Setup

โšก The short way โ€” npx

One command, nothing cloned, no Python on the install path. The only prerequisite is Node โ‰ฅ 22.3. (Three things still involve Python and none of them is this command โ€” named below.)

npx geneseed setup            # the guided wizard

The wizard asks for a theme (each one previewed live โ€” tagline, sigil, voice) and an install mode โ€” OpenCode global (recommended; every repo inherits it), per-repo .opencode/, or plain bundle for any AGENT.md tool โ€” then builds and offers a health check. It works the same on macOS, Linux and Windows (cmd, PowerShell, or a POSIX shell).

Keeping it around is the same command with npm:

npm install -g geneseed       # then plain `geneseed <command>` from any directory
npm install -g geneseed@latest   # โ€ฆand that is also the update

QUICKSTART.md walks this in 5 minutes. Every other route (Claude Code, plain AGENT.md, per-repo installs, MCP servers, troubleshooting) lives in the full Setup guide.

๐Ÿงฌ The long way โ€” a git checkout

Cloning still works and is what you want if you intend to change the harness rather than use it. It needs git and Python 3 (stdlib-only, nothing to pip install) and gives you the full-screen TUI as well.

git clone https://github.com/Arylmera/Geneseed.git
cd Geneseed
./geneseed setup          # the wizard โ€” or bare `./geneseed` for the main menu

Windows โ€” native, no bash, WSL, curl, or unzip; works from cmd or PowerShell:

git clone https://github.com/Arylmera/Geneseed.git
cd Geneseed
.\geneseed.cmd setup      # the wizard โ€” or bare .\geneseed.cmd for the main menu
# PowerShell-native twin: .\geneseed.ps1 [setup]

The launcher finds Python on its own (the py launcher, else python on PATH); if python3 is missing on macOS, xcode-select --install or Homebrew provides it. The full-screen TUI needs a VT-capable console โ€” Windows Terminal, or Windows 10 1809+ conhost โ€” via a stdlib-only ANSI backend; an older console degrades gracefully to the same wizard as plain text prompts.

Already installed from a clone? geneseed migrate moves every install you have onto the npm shape in one pass, all-or-nothing, without touching hooks or login items it did not write. Your old clone keeps working for a full release โ€” there is no cliff. See Migrate an existing install.

๐Ÿ What still needs Python โ€” said plainly

25 of the 25 subcommands run from Node, along with all four hooks, every web-console endpoint and both generators โ€” producing byte-identical output, gated on every commit across every theme ร— host ร— footprint. So an npx install is Python-free for the harness itself, with exactly three exceptions. None is on the install path; all three are named here rather than discovered later.

  • 0 commands have no Node twin: 25 of the 25 subcommands, and all four hook verbs, answer from the Node entry points. What is still Python is a SCREEN, not a command: the full-screen browse panel that geneseed tui and geneseed menu open on a terminal. From Node both refuse the panel by name and print the command list instead โ€” the panel itself is python rituals/harness.py tui (or menu), from a checkout. Off a terminal, which is how scripts and CI run them, the two runtimes print the same bytes and exit the same way.
  • One Python script rides inside the harness you install โ€” and two more skills shell out to python3 without shipping one. The token-report skill is a script, not prose, so every bundle carries exactly one file that needs an interpreter: src/skills/token-report/scripts/token_report.py. It runs only when the agent invokes that one skill. On top of it, daydream runs python3 -c for weighted random sampling and herdr runs python3 -c twice to pull a field out of JSON โ€” neither ships a Python file of its own, but both need python3 on PATH the moment they're used. No other file in a bundle is Python, and no other skill shells out to it, on any host, theme or footprint โ€” a test freezes both.
  • upgrade / update / sync-self / bootstrap are for a git checkout. They git pull the install's own origin. From an npm install they stop before touching anything and name npm install -g geneseed@latest as the update instead.

One more honest edge, in the web console rather than the CLI: the "browseโ€ฆ" folder picker opens an OS-native dialog, which only the Python server can do. On the Node server the button reports that it is unavailable and the field beside it stays editable โ€” type or paste the path.

โœ… After installing

  • Verify โ€” open your agent in any repo: the first reply starts with the readiness sigil and your project's docs are already in context. geneseed doctor should print ok.
  • Run it from anywhere โ€” a global npm install -g geneseed already does this. From a checkout, ./geneseed link writes a launcher shim into ~/.local/bin; .\geneseed.cmd link writes a shim into %LOCALAPPDATA%\Geneseed\bin and adds it to your user PATH (open a new terminal).
  • Everything else โ€” other tools (Claude Code, plain AGENT.md), per-repo installs, MCP servers, environment knobs, troubleshooting: SETUP.md.

๐Ÿ–ฅ 3 ยท Web & TUI

Two front-ends over the same deployed harness โ€” the same actions either way. Reach for the web console when you want to read and browse; reach for the TUI when you live in the terminal.

๐ŸŒ Web console โ€” geneseed web

geneseed web opens a local browser console in a dashboard-first layout, with rendered markdown and clickable cross-links.

geneseed web                 # serve on http://127.0.0.1:4747 and open the browser
geneseed web --port 8080     # pick a port
geneseed web --no-browser    # serve without auto-opening

geneseed web start           # run as a background daemon (doesn't block the terminal)
geneseed web restart         # restart the daemon โ€” pick up a rebuilt UI or changed theme
geneseed web stop            # stop the daemon
geneseed web status          # is it running, and where

The left rail mirrors the harness's own shape:

Group What's there
๐Ÿงฌ Harness Dashboard โ€” live readout of what's deployed (voice, capabilities, drift, recent jobs) ยท Library โ€” browse Laws, Agents, Skills, Memory, Notebook ยท Graph โ€” cross-link constellation across the whole harness
๐Ÿ“š Learn Docs โ€” rendered markdown + concept pages + CLI reference + glossary, grouped into Get started / Core concepts / How-to / MCP servers / Plugins / Reference / Deeper ยท Specs โ€” dated implementation specs with design rationale
๐Ÿ”ง Maintain Changes โ€” diff between the deployed harness and the source, export an improvements.md back-port ยท Doctor โ€” health check across themes, links, parity, and authoring gates
๐ŸŽจ Configure Themes โ€” preview and switch the deployed voice live ยท Settings โ€” MCP servers, server controls
โ„น๏ธ About project + creator credits, source link

It binds to 127.0.0.1 only and runs entirely offline โ€” no npm needed at runtime; the UI build ships in web/dist/. Mutating actions run in the background and report back as toasts (fire-and-notify), guarded by a per-session token so other sites can't trigger them. A global Spotlight search in the topbar jumps to any agent, skill, law, doc, or spec. Rebuild the UI after changing anything under web/src/ with cd web && npm install && npm run build. If web/dist/ is missing (fresh clone, never built), geneseed web offers to run that build for you โ€” answer Y and it installs, builds, and starts the server; in non-interactive shells it prints the manual recipe instead.

Full reference โ€” every view, the launch/daemon/PWA surface, the security model: docs/web-ui.md.

โŒจ๏ธ TUI โ€” geneseed

Same actions, no browser. Bare geneseed opens the main menu โ€” browse, review local edits, refresh/set up, update, rebuild, memory, status, and Settings (MCP servers, run-from-anywhere, uninstall โ€” global or per-repo). geneseed setup jumps straight to the install wizard; geneseed tui opens the browse panel directly. The whole thing is a stdlib-only, dependency-free full-screen UI that also degrades to plain text prompts on older consoles โ€” see Setup above for the wizard walkthrough.


๐Ÿ“ฆ 4 ยท What you get

The harness ships as a small set of layers, mirrored one-for-one in the web console's Library rail (Laws ยท Agents ยท Skills ยท Memory ยท Notebook):

Layer What it is
๐Ÿ›ก๏ธ Rules (laws/) 37 universal laws the agent obeys โ€” secrets, scope, verify-before-assert, surface-failures, context economy, load-the-docs, tool-discovery, non-interactive-shell, untrusted-content, least-privilege, external-gate, root-cause, idempotency, calibrated-honesty, source-over-surface, restart-is-not-reload, total-teardown, cover-and-verifyโ€ฆ
๐Ÿค– Agents (17) capability specialists: reviewer, tester, architect, docs, security, explorer, developer โ€” plus a debate council the council skill convenes: advocate, skeptic, pragmatist, steward, visionary, user-advocate, framer, empiricist, operator, historian
๐Ÿ›  Skills (47) repeatable workflows: brainstorm ยท clarify ยท plan ยท codebase-design ยท domain-modeling ยท wayfinder ยท tickets ยท tdd ยท develop ยท debug ยท prototype ยท refactor ยท ponytail ยท forge-mcp ยท geneseed-code-review ยท fresh-eyes ยท review-response ยท commit ยท ship ยท release ยท migrate ยท git-archaeology ยท git-rescue ยท repo-map ยท document-project ยท frontend-design ยท prose ยท ingest ยท research ยท learning-path ยท gap-detector ยท feynman ยท crash-course ยท drill ยท decode ยท handoff ยท roast-me ยท council ยท parallel-agents ยท workflow ยท wiki ยท geneseed ยท rule ยท profile ยท opencode-theme ยท herdr ยท pipeline
๐Ÿ”Œ Plugins (OpenCode) geneseed-context injects project docs and your machine wiki every session (and across compaction); geneseed-learn distils memory at session end; geneseed-guard enforces the safety Laws and protected wiki folders at the tool boundary; geneseed-workflow registers the workflow tool that runs saved orchestration scripts; geneseed-notify sends a native OS notification when a long run finishes; geneseed-ponytail holds a minimal-code mode (/ponytail lite|full|ultra|off), opt-in, injecting the laziest-that-works ruleset every turn so it doesn't drift; geneseed-activity streams what each session is doing to the web console's Activity view
๐Ÿง  Memory (memory/) one-fact-per-file durable knowledge, indexed by MEMORY.md (git-ignored, personal)
๐Ÿ““ Notebook (notebook/) the agent's sovereign space โ€” any medium (code, tools, data, notes), self-ruled via a seed-once charter, always git-ignored; only its .gitignore is build-asserted
๐ŸŒ Wiki (wiki.jsonc) your own machine-wide knowledge base โ€” typically an Obsidian vault โ€” declared once per machine: entry notes load eager/lazy, the agent reads and writes it under the vault's own conventions, with an inbox fallback and guard-enforced protected folders
๐Ÿงญ Context the project's own docs โ€” auto-discovered on OpenCode, or via a context.json manifest

๐ŸŽจ Themes

Fourteen themes ship โ€” each a single JSON file in themes/ carrying voice tokens only, so adding your own is a copy-and-edit away.

Theme Voice
๐ŸŸข neutral clear, plain, professional English
โšซ imperial Warhammer 40k โ€” rules read as Dictates, agents as Adepts, skills as Rites
๐Ÿช– military crisp military comms
๐Ÿดโ€โ˜ ๏ธ pirate salty seafaring patter
๐Ÿง™ wizard high-fantasy magical idiom
๐ŸŒƒ cyberpunk neon-dystopia voice
๐ŸŽฎ gamer gaming/streamer cadence
๐ŸŸ๏ธ sports play-by-play commentary
๐Ÿ biker ยท ๐ŸŽค commentator ยท ๐Ÿƒ joker ยท ๐Ÿค– marvin ยท ๐Ÿ˜ค mean ยท ๐ŸŽ verstappen community-added voices for fun

Pick with --theme NAME or via the TUI wizard. The theme is remembered in a .geneseed-theme marker, so later upgrades preserve it. doctor checks every theme defines the same keys, so flavour drift is impossible. Adding a new voice token to themes/_TEMPLATE.json? Run python build.py --sync-themes to fill it into every theme (template's placeholder value, reported for restyling) before doctor is expected to pass again.

๐Ÿชถ Footprint (lean vs full)

A second per-install dial, footprint, sets how much of the Rules AGENT.md carries inline every turn โ€” a token-cost knob, not a change to which Rules apply (every Rule is always in force).

Footprint Section 1 of AGENT.md Trade-off
lean (default) each Rule's heading + the rule line, then a pointer to the full law file ~40% smaller; rationale is one on-demand read away
full every Rule's complete text and rationale, inlined maximum guidance density; largest per-turn token cost

Lean still ships the complete laws/universal.md beside AGENT.md and points the agent there before acting on secrets, deletion, git history, scope, or untrusted content โ€” so it's a context/token optimization, not a rules cut. Lean is the default: the rationale is one read away and the context it frees is paid back on every turn. Switch to full when token cost is a non-issue or you run a smaller model, which leans harder on always-present rationale. Set it with --footprint lean|full, the Settings toggle, the per-harness dropdown in the Harnesses tab, or the TUI wizard. It's remembered in a .geneseed-footprint marker and preserved across rebuilds, on every host (OpenCode, Claude Code, Bob, Copilot).

Either way the harness is otherwise identical โ€” same files, Rules, capabilities, and guards; lean only relocates each Rule's reasoning to on-demand (and adds the standalone laws file to global/Claude/Bob installs). The one behavioural edge: with the rationale always in context, full applies a rule's nuance more reliably on subtle edge cases โ€” or with a weaker model that may not reach for the pointer โ€” which is why it stays the default.

Want to check a build before it touches anything real? python build.py --validate-only --theme NAME --emit MODE --out TARGET renders and validates into a throwaway sandbox โ€” nothing under --out/--root is written โ€” and exits non-zero on any problem. Details: SETUP.md.


๐Ÿ”Œ Supported harnesses

One source, five emit targets. Geneseed builds into whichever host you point it at โ€” each with a per-repo and a global (-global) variant โ€” plus a portable files bundle any AGENT.md-aware tool can read. OpenCode runs its own engine (JS plugins, colour themes, LSP); Claude Code, Bob, and Copilot share one Claude-shaped engine that diverges only by host dialect.

The harness โ€” its Rules, Agents, Skills, Memory convention, and preamble voice โ€” is identical on every host. What differs is how much of it the host can automate for you (via plugins or hooks) versus carry as preamble discipline.

Capability OpenCode Claude Code Bob Copilot
Instructions file AGENT.md + opencode.json CLAUDE.md AGENTS.md + rules/geneseed.md AGENTS.md / copilot-instructions.md
Agents (capability specialists) โœ… native โœ… โœ… โœ… .agent.md
Skills (byte-identical) โœ… โœ… โœ… โœ…
Memory & Notebook โœ… โœ… โœ… โœ…
Context injection (Rule XVIII) โš™๏ธ plugin ๐Ÿช hook ๐Ÿช hookยน ๐Ÿ“„ preamble
Memory write-back (learn) โš™๏ธ plugin ๐Ÿช hook ๐Ÿช hookยน ๐Ÿ“„ preamble
Git-gate consent (Rule XX) โš™๏ธ plugin ๐Ÿช hook ๐Ÿช hookยน ๐Ÿ“„ preamble
Rule-gate consent (Rule VI) โš™๏ธ pluginยฒ ๐Ÿช hook ๐Ÿช hookยน ๐Ÿ“„ preamble
Sovereign-repo excludes โš™๏ธ plugin โœ… claudeMdExcludes โœ… rules-shadow โž– none
MCP server wiring โœ… mcp โœ… mcpServers โœ… mcpServers โœ… mcp-config.json
Colour themes โœ… full palette โž– โž– โž–
LSP ยท workflow runner ยท primary-agent ยท /-commands โœ… โž– โž– โž–

โœ… native support ยท โš™๏ธ OpenCode plugin ยท ๐Ÿช settings.json hook ยท ๐Ÿ“„ carried by preamble prose only ยท โž– no host mechanism (harness discipline still applies) ยท ยน Bob honours Claude-dialect hooks best-effort โ€” inert if unsupported, harness still holds via the preamble. ยท ยฒ OpenCode's tool.execute.before can only allow or throw, with no "ask the user" tier, so the rule gate is a one-shot speed bump there rather than a prompt.

Reading the matrix. Everything above the divider is at full parity โ€” no host drops an Agent, Skill, or the memory convention. The asymmetry is entirely in automation mechanism: OpenCode's plugin surface and Claude/Bob's hook surface enforce a few Rules for you, where Copilot (no hook mechanism) enforces them through preamble discipline instead. The OpenCode-only extras (themes, LSP, workflow runner, primary-agent) have no analogue on a Claude-shaped host.

Per-host wiring in depth: OpenCode ยท Claude Code ยท Bob ยท Copilot. Token cost per host: docs/token-footprint.md.

๐Ÿ—‚ Layout

Geneseed/
โ”œโ”€โ”€ package.json          the npm package: three commands, zero dependencies
โ”œโ”€โ”€ bin/                  the Node entry points โ€” geneseed-cli.mjs (the CLI), geneseed-hook.mjs
โ”‚                         (the four hook verbs), geneseed.mjs (the generator driver)
โ”œโ”€โ”€ js/                   the Node harness โ€” generator, hooks, web server, doctor, installs
โ”œโ”€โ”€ cli.json              the argument parser as data; both runtimes read it
โ”œโ”€โ”€ build.py              generator (stdlib only)
โ”œโ”€โ”€ geneseed              launcher (bash): bare `./geneseed` = interactive main menu; + subcommands
โ”‚                         (`./geneseed link` puts it on PATH so `geneseed` runs from anywhere)
โ”œโ”€โ”€ geneseed.cmd          native Windows launcher (cmd.exe) โ€” same subcommands, no bash
โ”œโ”€โ”€ geneseed.ps1          native Windows launcher (PowerShell) โ€” same subcommands, no bash
โ”œโ”€โ”€ bootstrap             one-shot: update everything (sync + upgrade), then run setup
โ”œโ”€โ”€ harness.config.json   default theme + metadata (the one owner of the version)
โ”œโ”€โ”€ src/                  canonical source โ€” edit here
โ”‚   โ”œโ”€โ”€ AGENT.md.tmpl     the entrypoint, rendered to AGENT.md
โ”‚   โ”œโ”€โ”€ laws/             governance rules
โ”‚   โ”œโ”€โ”€ agents/           capability specialists
โ”‚   โ”œโ”€โ”€ skills/           repeatable workflows
โ”‚   โ”œโ”€โ”€ memory/           memory convention + index
โ”‚   โ””โ”€โ”€ notebook/         the agent's own freeform space โ€” convention + index
โ”œโ”€โ”€ themes/               voice token maps (14 themes shipped)
โ”œโ”€โ”€ rituals/harness.py    the Python CLI: build ยท doctor ยท diff ยท rebuild-all ยท status ยท version ยท
โ”‚                         theme ยท prompt ยท exclude ยท setup ยท web ยท migrate ยท link/unlink ยท
โ”‚                         uninstall ยท upgrade/update ยท sync-self ยท bootstrap ยท context ยท learn ยท
โ”‚                         git-gate ยท rule-gate ยท home ยท tui ยท menu
โ”œโ”€โ”€ rituals/web.py        local web UI server (stdlib HTTP) behind `geneseed web`
โ”œโ”€โ”€ web/                  Vite + React UI source; the committed web/dist/ build is what ships
โ”œโ”€โ”€ tests/                stdlib unit tests, three cell harnesses, Node test suites
โ”œโ”€โ”€ docs/                 guides (web-ui, wiki, โ€ฆ) + docs/web/ (the console's Docs pages);
โ”‚                         specs/, reviews/, superpowers/ are local working docs โ€” git-ignored
โ”œโ”€โ”€ adapters/             per-host glue (opencode/, claude-code/, bob/, copilot/)
โ””โ”€โ”€ .github/workflows/    ci.yml (doctor + tests) ยท publish.yml (npm, OIDC, manual only)

๐Ÿงช Validate & test

python rituals/harness.py doctor                      # every theme + parity + authoring + drift
node bin/geneseed-cli.mjs doctor                      # โ€ฆand the same checks from the Node side
python -m unittest discover -s tests -p "test_*.py"   # generator + CLI unit tests (no deps)
node --test "tests/**/*.test.mjs"                     # Node suites (node expands the glob)

doctor checks each theme for unresolved tokens, dead/non-hermetic links, theme-key parity, author-time gates (every spec has a purpose line, the plugins parse, the learn-prompt literal stays extractable), and that a committed bundle still matches a fresh render of src/. CI (.github/workflows/ci.yml) runs all four on every push and PR, on both Linux and Windows. Publishing is a separate, manually-triggered workflow (.github/workflows/publish.yml) โ€” see Contributing.

๐Ÿ”„ Keeping it current

Installed from npm โ€” one command, and it rebuilds every active install for you:

npm install -g geneseed@latest
geneseed rebuild-all   # re-render every registered install in its own theme + mode

Installed from a clone โ€” the git pull route, which also refreshes the launchers:

./geneseed update      # everything in one: refresh the scripts + content, then rebuild
./geneseed bootstrap   # update everything, then drop into the setup wizard
./geneseed upgrade     # just the content refresh (remembers theme + emit mode)

Moving from a clone to npm โ€” geneseed migrate re-emits every install you already have onto the npm shape, all-or-nothing, and reports (never rewrites) the hooks and login items it did not write. --dry-run prints the plan first. See Migrate an existing install.

Local edits survive. The self-improvement loops let the agent refine its deployed agent/skill files in place. Before setup, re-theme, or upgrade overwrites them, any drift is auto-exported to a markdown improvements file under improvements/ inside the deployed harness dir (e.g. ~/.config/opencode/improvements/ for the global install) โ€” beside the install it describes, untouched by rebuilds and uninstall. Hand it to an agent in this repo to back-port the changes into src/. On demand: ./geneseed diff --out FILE, or e in the TUI's Review local edits view.

Details and precedence rules: SETUP.md โ†’ Upgrade.

๐Ÿ“š Documentation

Page Read it whenโ€ฆ
SETUP.md Installing โ€” every path, configuration knob, env var, verify, troubleshooting
DESIGN.md Changing structure โ€” the spec and the decisions behind it
SHIPPED.md What's in the harness today โ€” capabilities โ†” the spec behind each
docs/web-ui.md The web console โ€” every view, the launch/daemon/PWA surface, security model
docs/wiki.md The machine wiki โ€” your personal knowledge base, setup and writing model
docs/token-footprint.md What the harness costs in context-window tokens, per host
docs/opencode-plugin-setup.md Installing the OpenCode plugins โ€” the one-time wiring they all share
CHANGELOG.md What changed between versions
adapters/opencode/ Wiring OpenCode in depth โ€” plugins, native mapping
โคท GLOBAL-HARNESS-SPEC.md The global-emit contract
โคท HOW-OPENCODE-LOADS.md Why a file shows up twice; plugin loading
adapters/claude-code/ The Claude Code hook adapter
adapters/bob/ The IBM Bob adapter โ€” Claude-shaped, rules-file preamble
adapters/copilot/ The GitHub Copilot adapter โ€” reduced host, no hooks
src/memory/README.md The memory convention
src/notebook/README.md The agent's own freeform-space convention

๐Ÿค Contributing

Issues and PRs welcome at github.com/Arylmera/Geneseed. The CI is dependency-free and runs on every push โ€” keep doctor green on both binaries and the test suites passing. Adding a new theme is one JSON file in themes/ with the same voice-token keys; doctor will tell you if any are missing.

Three things that bite when you don't know them:

  • rituals/harness.py and cli.json change together. The argument parser is data now: cli.json carries it, bin/geneseed-cli.mjs cannot parse a single verb without it, and doctor compares a sha256 of rituals/harness.py against the digest inside the file. Edit the parser, then run python tests/gen_cli_reference.py (it exits non-zero when it changed the file, so it doubles as a drift check) and commit both. A mismatch is a loud doctor problem on both binaries โ€” which is the intended failure, not a surprise.
  • The version has one owner: harness.config.json. package.json mirrors it and a test fails the fork. Never npm version โ€” it edits one of the two.
  • Publishing is deliberate and manual. .github/workflows/publish.yml uses npm trusted publishing (OIDC); there is no NPM_TOKEN in this repository and there must not be one. It runs only from Actions โ†’ publish โ†’ Run workflow, and the npm-side trusted publisher is keyed on that workflow's filename โ€” renaming the file breaks publishing with no local symptom, which is why the file names itself in its own header and a test asserts the two agree.

๐Ÿ“„ License

MIT โ€” built by @Arylmera.

About

A portable, theme-able harness you implant into any repository to grow a disciplined AI agent.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages