Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Generated artifact (docs.yml, from docs/ecosystem-map.md). Do not hand-edit — edit that source file instead.

charly-vibes Tool Ecosystem

What ddl manages, and how each tool fits in.

For a machine-generated intent → tool table, see the capability matrix (regenerated from ddl’s registry; drift-checked in CI).

Every repo in the fleet carries the charly-vibes + dulce-de-leche GitHub topics — filter the whole set with topic:charly-vibes topic:dulce-de-leche.

Responsibility map

ddl installs, configures, and updates everything below; each tool owns one slice of the agent-development loop. Dashed borders mark install-only tools — ddl installs them, but their state lives outside .ddl/.

Every card below is a link — click a tool to open its documentation (in-org tools open their mdBook; external ones open their project page).

ddl dulce-de-leche · orchestrator one command — install · configure · update SESSION & KNOWLEDGE wai wai session lifecycle · PARA · handoffs decision matrix for design whisper turu deterministic knowledge workspace .whisper/ + ~/.whisper/ routing bajan bajan knowledge-graph pipeline CLI ingest · extract · query SPECS & VERIFICATION specodelic spk markdown spec format lint · compile · verify espectacular ah behavioral verification spec ⇄ test correspondence openspec openspec spec-driven change proposals install-only · external CODE QUALITY & TESTING testaruda testaruda test selection engine datalog + provenance pretender pretender structural code quality complexity · duplication vampiro vampiro composition checking call · effect · trust wild wild contract compatibility extract · check EPISTEMICS & TRACKING dont dont grounds agent claims evidence state machine beads bd issue tracking with deps install-only · external incitaciones npm agent skills & prompts install-only · non-Rust UTILITIES gently gently graph layout · ASCII · DOT render SHARED FOUNDATION — GENESIS-VIBES (RUST LIBRARY) envelope · suggestions · managed_block · config · guide · status · doctor · scaffold · suite_linter · git · git_hooks linked by every genesis-consuming tool · ddl talks to tools over a subprocess protocol (--json)

Inclusion criteria

ddl manages a tool when all of the following hold:

  1. It is an installable CLI — users run it in a terminal (not a desktop app, library, static site, or content repo).
  2. It has (or is about to get) a distribution channel in the charly-vibes tap/bucket.
  3. It has a config convention ddl can manage (or is explicitly install-only, like bd, openspec, and incitaciones).

Active Tools

Rust CLI tools

ToolBinaryCrates.ioGenesis consumer?Purpose
waiwaiwai-cli✓Workflow manager for AI development. PARA-based artifact organization, phase tracking, handoffs. The matrix subcommand is the standing deliberation surface from Design in Practice — problem, criteria, approaches, and the judgment at each intersection.
dontdont, dtdont-cli✓Epistemic discipline state machine. Claims, evidence, vocabulary tracking. Cozo DB backend.
espectacularahespectacular✓Behavioral verification. Spec-test correspondence enforcement.
pretenderpretenderpretender✓Multi-language structural code quality. Tree-sitter-based complexity, duplication, mutation testing.
testarudatestaruda, testaruda-adapter-rust, testaruda-adapter-pythontestaruda✓Test selection engine. Ascent Datalog + provenance semiring. SQLite store.
vampirovampirovampiro✓Cross-language composition checking at call, module, effect, law, retry, resource, and trust boundaries. Crate workspace with per-language tracers.
wildwildwild-vibes—Machine-checked compatibility and composition of software components, modelled as a category of contracts. wild extract / wild check.
whisperturu (aliases: turututu, whisper)whisper-vibes✓Deterministic knowledge workspace management. Repo-local .whisper/ + global ~/.whisper/ routing. Install-only under ddl — its state is home-dir global, not repo-local legacy config.
specodelicspecodelic, spkspecodelic✓Markdown spec format (Intent / Constraints / Model / Properties) with the CLI that lints, compiles, verifies, and refactors it. Repo-local .specs/ corpus.
funkalizationfunkalizationfunkalization—Visual semantic design workspace. Versioned design semantics with typed design edits, generated obligations, scoped evidence, and loss-reporting adapters toward Specodelic and OpenSpec. Planned repo-local .funkalization/ workspace.
bajanbajanbajan✓Spec-driven knowledge-graph pipeline CLI — ingest sources, extract claims, query the graph. SQLite-backed triple store, provenance as graph structure.
gentlygentlynot yet published—Rust port of Perl’s Graph::Easy: build graphs, lay them out deterministically, render as ASCII art, boxart, HTML, or Graphviz DOT — plus parse Graph::Easy and DOT input.

Non-Rust tools

ToolLanguageIn homebrew?Notes
beadsGo✓ (beads, homebrew-core + gastownhall/beads tap)Issue tracker with first-class dependency support (bd binary). Release assets are named beads_* but ship the bd binary. No cargo fallback — the beads crate on crates.io is an unrelated package. Install-only — manages repo-local .beads/ itself.
openspecTypeScript/npmhomebrew-core (openspec)Spec-driven development workflow for AI coding agents. npm package @fission-ai/openspec; GitHub releases at fission-ai/openspec. Install-only — manages the repo-local openspec/ directory itself.
incitacionesTypeScript/npmnpm (incitaciones)Prompt/skill collection for CLI LLM tools. Install-only — skills land in ~/.agents/skills/ or .agents/skills/; ddl init checks for global skills and prompts if missing.

Config file locations

Before ddl:

ToolConfig locationFormatNotes
wai.wai/TOML + directoryPARA structure
dont.dont/Cozo DB + TOMLHeavyweight store
espectacular.espectacular/JSON + TOMLSpec traces
pretender.pretender.tomlTOMLSingle file
testaruda.testaruda/SQLite + TOMLDependency graph store
vampiro.vampiro/TOMLComposition config (config.toml)
specodelic.specs/Markdown corpusSpec files
funkalization.funkalization/JSON workspace (planned)Design workspace

After ddl migration (Phase 1):

ToolConfig locationBackwards compat
wai.ddl/wai/ → .wai/✓ symlink
dont.ddl/dont/ → .dont/✓ symlink
espectacular.ddl/ah/ → .espectacular/✓ symlink
pretender.ddl/pretender.toml → .pretender.toml✓ symlink
testaruda.ddl/testaruda/ → .testaruda/✓ symlink
vampiro.ddl/vampiro/ → .vampiro/✓ symlink
specodelic.ddl/specodelic/ → .specs/✓ symlink
funkalization.ddl/funkalization/ → .funkalization/✓ symlink

bd, openspec, incitaciones, and turu are install-only — their state lives outside .ddl/ (bd manages repo-local .beads/ itself; openspec manages openspec/ itself), so there is nothing to migrate.

Shared infrastructure (genesis-vibes)

Genesis-consuming tools (wai, dont, espectacular, pretender, testaruda, vampiro, bajan) depend on genesis-vibes; wild and gently do not yet. Genesis provides:

ModuleUsed byPurpose
envelopeAllStructured JSON CLI output
suggestionswai, dontTypo correction (DidYouMean)
managed_blockwai, dont, ah, testaruda, vampiro<!-- BLOCK:START --> injection, with opt-in provenance footer (<!-- provenance: generator=… version=… source=… sha=… --> inside the end marker; hash covers only the content, so drift is machine-checkable)
configAllConfigFile trait, ConfigRegistry
guideAllCLI dispatch, error handling, verbosity
statusAllStatusContributor trait, health aggregation
doctorAllDoctorRunner with auto-fix
scaffoldAllinit command standardization
suite_lintertestarudaCross-tool config linting
fixtureAllTest helpers
gitrollout in progressRead-only git plumbing: repo-root walks, changed-file enumeration, tracked/ignored checks, content hashes — one canonical subprocess-only substrate.
git_hookswai, espectacular, pretenderGit-hook mechanics: install/uninstall with ownership markers, core.hooksPath resolution, lefthook managed-block injection. Tool-specific gates stay in the tools.

Distribution channels

ChannelToolsMaintainer
crates.ioAll released Rust tools (wild publishes as wild-vibes; gently not yet published)Individual repos
Homebrewwai, ah, dont, pretender, testaruda, vampiro, turu, dulce-de-leche — dont formula still a placeholder stub; bd and openspec ship in homebrew-corehomebrew-charly tap
Scoopwai, ah, dont, pretender, testaruda, vampiro, turu, dulce-de-lechescoop-charly bucket
GitHub ReleasesAll Rust tools; bd (gastownhall/beads); openspec (fission-ai/openspec)Individual repos
npmincitaciones; openspec (@fission-ai/openspec)Individual repos

Homebrew formulas (current state)

From homebrew-charly/:

FormulaVersionHas real SHA?Notes
wai.rb2026.8.5✓Real release
testaruda.rb0.4.0✓Real release (engine + rust/python adapters)
vampiro.rb0.4.0✓Real release
turu.rb0.3.0✓Real release (auto-updated by whisper’s release workflow)
ah.rb0.5.0✓Real release (assets under espectacular releases)
pretender.rb0.5.0✓Real release
dulce-de-leche.rb0.3.0✓Real release
dont.rb0.0.0✗ placeholderBlocked: no GitHub release for dont yet (tag v0.3.0 exists locally)

Scoop mirrors the same versions for Windows. All formula hashes were computed from downloaded release assets and cross-verified against each release’s published checksums.txt.

Only dont remains blocked on an upstream release. ddl automatically falls back to cargo install for tools whose release binaries are not yet published (except bd, which has no crates.io package — the beads crate is unrelated), so ddl init works either way. (Since DDL-ei3, brew/scoop are not part of ddl’s install decisions — the tap and bucket below serve manual installs.)