Repository
eeco
Single-binary terminal tool that gives any coding project a self-maintaining, AI-assisted workflow ecosystem.
- ai-assisted
- cli-tool
- devops-tools
- go
- golang
- knowledge-management
- productivity-tools
- software-engineering
- terminal-ui
- tui
- workflow-automation
main
Languages
- Go 83.8%
- Markdown 13.6%
- JSON 0.9%
- Shell 0.9%
- YAML 0.5%
- Swift 0.2%
- Makefile 0.1%
Readme
Single-binary workflow ecosystem and knowledge layer for any AI assistant.
README · Vision · Cockpit · Usage · Architecture · Public API · Extending · Contributing · Upgrading · Versioning · Changelog · Security
eeco adds two things to any coding project, from the terminal: a self-maintaining workflow ecosystem, and a deterministic, no-AI-spend knowledge layer any AI assistant can read. It ships as a single static binary. The workflow side is a control-center TUI, repeatable workflows that keep the tracked tree hygienic and surface issues, and a memory store with garbage collection. The knowledge side is a project brief and targeted Q&A, both built by a local deterministic pass with no model call. New workflows are added opt-in over time — proposed for review rather than applied unilaterally.
Design
- Single static binary, zero runtime dependencies. Install via a
package manager or drop the binary on
PATH; nothing to provision on the host. - Local-first and private. eeco reads anywhere in a target repo but
writes only inside that repo's gitignored workspace. The sole
exception is
eeco init, which may make one initial commit and push of the workspace.gitignoreline; no other verb ever commits or pushes. - Pluggable AI, opt-in by default. A provider interface with a
generic CLI provider wired in; every AI pass is gated by explicit
consent (
--aiorautomation=auto) and a per-invocation budget cap. - Runs only when invoked. A single queue is the only channel that asks for a decision.
- Reversible. The two integrations that touch outside the workspace (a local pre-commit hook, one entry in an AI CLI's user settings) are opt-in and recorded in a ledger so they can be removed cleanly.
What eeco gives you
- Control-center TUI (
eeco). A home screen lists the slash commands one line each; output streams above the input. - Ten builtin workflows.
comment-hygiene,leak-guard,version-sync,gate,memory-drift, anddoc-driftkeep the tracked tree hygienic and catch drift;bug-sweepkeeps a triage ledger;handover-refreshdrafts dated handovers;manifest-refreshkeeps per-directory.ai.jsonmanifests current;evolveproposes new workflows from observed repetition. Run viaeeco run <name>. A pre-1.0cockpit-syncworkflow additionally keeps the generated AI cockpit in step (seedocs/COCKPIT.md). - Knowledge layer for AI assistants.
eeco goprints a deterministic project brief, built with no model call (with--json,--brief,--write, and--copydelivery axes);eeco ask "<question>"answers a targeted question with rankedpath:linepointers;eeco add fact/eeco add tasklet an assistant record what it learns back into memory and the queue. The delivery channels are brand-free — point Claude Code atCLAUDE.md, Gemini CLI atGEMINI.md, Codex atAGENTS.md, Cursor at.cursorrules, or pasteeeco go --copyinto any chat-only assistant. - Memory store with garbage collection (
eeco gc). One fact per file with flat frontmatter and a regenerated index. - The queue. Every decision-bearing finding lands in one Markdown checklist under a presence lock — never email, never a notification, never a silent edit.
- Opt-in self-update (
eeco update --apply). Verifies the release archive against theSHA256SUMScosign signature, the archive sha256, and the GitHub build-provenance attestation before atomically replacing the running binary. Bareeeco updateis read-only. - Cross-project settings (
eeco config).eeco config list|get|setedits the per-project config;eeco config set --global <key> <value>writes a user-global layer every project inherits, with per-repo overrides — the git--globalmodel. Seedocs/USAGE.md§4a. - Diagnostics (
eeco doctor), clean removal (eeco uninstall), and friction capture (eeco report-bug).
Install
Pick the route you prefer. See
docs/USAGE.md for the full platform matrix,
checksum verification, and the cosign signature + build-provenance
checks.
Homebrew (macOS, Linux).
brew install ajhahnde/eeco/eeco
Scoop (Windows).
scoop bucket add eeco https://github.com/ajhahnde/scoop-eeco
scoop install eeco
Pre-built binary. Download the archive for your platform from the
releases page and extract
the eeco binary onto your PATH. SHA256SUMS is cosign-signed and
the archives carry build provenance.
From source. Requires Go 1.24+.
git clone https://github.com/ajhahnde/eeco
cd eeco
make build # produces ./eeco with version metadata
In-place upgrade. Once eeco is installed, future releases upgrade in place:
eeco update --apply
Verifies the cosign signature on SHA256SUMS, the archive sha256, and
the GitHub build-provenance attestation before swapping the binary.
Refuses on Homebrew- or Scoop-managed install roots in favour of the
package manager's upgrade verb.
make verify runs go build ./... && go vet ./... && go test ./...;
make release cross-builds the published matrix into dist/.
License
Apache License, Version 2.0. See LICENSE.
Public history starts at v0.1.0; eeco was developed in a private repo and published here.
See also
- FlashOS — AArch64 bare-metal kernel for the Raspberry Pi 4 Model B.
- the-way-out — top-down pixel-art escape-room shooter.
- Flash — a systems language and Zig transpiler.
Recent commits
-
972cee5docs: adopt the house design system — regraded blue, flat-square badges Jun 2026 -
054ee08docs: use the Atom One Light palette in the light-mode logo Jun 2026 -
b10fdfcfeat: switch brand accent from magenta to blue Jun 2026 -
9d9af4cdocs: add Flash to related projects Jun 2026 -
2021218docs(readme): note public history starts at v0.1.0 Jun 2026 -
e92aa29docs(readme): tighten tagline and design copy Jun 2026 -
1c09d13chore: release v0.2.1 Jun 2026 -
1a7873efix: harden cross-platform paths in settings import; restore coverage floor Jun 2026 -
a966612feat: cross-project settings — global config layer + project import Jun 2026 -
b2c88ecfix: resolve project root past eeco's private workspace-history repo Jun 2026 -
2b22a65eeco v0.1.0 — provider-agnostic AI-cockpit generator Jun 2026
Files
-
.github
-
ISSUE_TEMPLATE
-
workflows
- PULL_REQUEST_TEMPLATE.md
-
-
cmd
-
eeco
- adaptations_test.go
- adaptations.go
- ask_test.go
- ask.go
- authorize_test.go
- authorize.go
- cockpit_init.go
- cockpit_test.go
- cockpit.go
- config_test.go
- config.go
- docs_test.go
- docs.go
- doctor_test.go
- doctor.go
- engine_nowrite_boundary_test.go
- facts_test.go
- facts.go
- gates_test.go
- gates.go
- gc_test.go
- gc.go
- go_test.go
- go.go
- guide_test.go
- guide.go
- helpers_test.go
- helpers.go
- history_test.go
- history.go
- historygit_test.go
- historygit.go
- hooks_c4b_test.go
- hooks_gitwriteguard_test.go
- hooks_test.go
- hooks.go
- import_test.go
- import.go
- init_redesign_test.go
- init_test.go
- init.go
- initgit.go
- main_test.go
- main.go
- manifest_test.go
- manifest.go
- migrate_test.go
- migrate.go
- new.go
- notes_test.go
- notes.go
- queue_test.go
- queue.go
- report_bug_test.go
- report_bug.go
- run_test.go
- run.go
- show_test.go
- show.go
- stats_test.go
- stats.go
- status.go
- tasks_test.go
- tasks.go
- uninstall_test.go
- uninstall.go
- update_test.go
- update.go
- workflows_test.go
- workflows.go
-
-
internal
-
ask
-
clip
-
cockpit
- agents_test.go
- agents.go
- claude_test.go
- claude.go
- cursor_test.go
- cursor.go
- emit_aggregate_test.go
- emit_aggregate.go
- emit_backup_test.go
- emit.go
- fidelity_test.go
- gate_test.go
- gate_uniform_test.go
- gate.go
- gemini_test.go
- gemini.go
- global_selection_test.go
- ledger.go
- machinery_test.go
- parity_test.go
- parity.go
- playbook_sources_test.go
- relunder_test.go
- render.go
- reversible_boundary_test.go
- selection_test.go
- selection.go
- selfcheck_test.go
- selfcheck.go
- spec.go
- status_test.go
- sync_test.go
- sync.go
- target.go
-
guide
-
hooks
- cockpitmachinery_test.go
- cockpitmachinery.go
- commitguard_test.go
- commitguard.go
- commitmsg_test.go
- commitmsg.go
- contractwatch_test.go
- contractwatch.go
- degrade_boundary_test.go
- hooks_test.go
- hooks.go
- orient_test.go
- reversible_boundary_test.go
- sessiondelivery_test.go
- sessiondelivery.go
- sessionemit_test.go
- sessionemit.go
- stopnudge_test.go
- stopnudge.go
- throttle.go
-
manifest
-
notes
-
playbooks
-
prompts
-
workflow
- attribution_test.go
- attribution.go
- bench_test.go
- bugsweep_test.go
- bugsweep.go
- cockpitsync_autoregen_test.go
- cockpitsync_test.go
- cockpitsync.go
- commenthygiene_test.go
- commenthygiene.go
- commitguard_test.go
- commitguard.go
- disable_test.go
- disable.go
- docdrift_test.go
- docdrift.go
- evolve_test.go
- evolve.go
- gate_test.go
- gate.go
- gitwriteguard_test.go
- gitwriteguard.go
- handover_test.go
- handover.go
- helpers_test.go
- history_test.go
- history.go
- leakguard_test.go
- leakguard.go
- manifestrefresh_test.go
- manifestrefresh.go
- memorydrift_test.go
- memorydrift.go
- registry_test.go
- registry.go
- run_test.go
- run.go
- scaffold_test.go
- scaffold.go
- scan.go
- signals_test.go
- signals.go
- versionsync_test.go
- versionsync.go
- workflow.go
-
workflows
- .gitattributes
- .gitignore
- .golangci.yml
- CHANGELOG.md
- CONTRIBUTING.md
- EXTENDING.md
- go.mod
- go.sum
- LICENSE
- Makefile
- README.md
- SECURITY.md
- VERSIONING.md
- VISION.md