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).
Inclusion criteria
ddl manages a tool when all of the following hold:
- It is an installable CLI — users run it in a terminal (not a desktop app, library, static site, or content repo).
- It has (or is about to get) a distribution channel in the charly-vibes tap/bucket.
- It has a config convention ddl can manage (or is explicitly install-only, like bd, openspec, and incitaciones).
Active Tools
Rust CLI tools
| Tool | Binary | Crates.io | Genesis consumer? | Purpose |
|---|---|---|---|---|
| wai | wai | wai-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. |
| dont | dont, dt | dont-cli | ✓ | Epistemic discipline state machine. Claims, evidence, vocabulary tracking. Cozo DB backend. |
| espectacular | ah | espectacular | ✓ | Behavioral verification. Spec-test correspondence enforcement. |
| pretender | pretender | pretender | ✓ | Multi-language structural code quality. Tree-sitter-based complexity, duplication, mutation testing. |
| testaruda | testaruda, testaruda-adapter-rust, testaruda-adapter-python | testaruda | ✓ | Test selection engine. Ascent Datalog + provenance semiring. SQLite store. |
| vampiro | vampiro | vampiro | ✓ | Cross-language composition checking at call, module, effect, law, retry, resource, and trust boundaries. Crate workspace with per-language tracers. |
| wild | wild | wild-vibes | — | Machine-checked compatibility and composition of software components, modelled as a category of contracts. wild extract / wild check. |
| whisper | turu (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. |
| specodelic | specodelic, spk | specodelic | ✓ | Markdown spec format (Intent / Constraints / Model / Properties) with the CLI that lints, compiles, verifies, and refactors it. Repo-local .specs/ corpus. |
| funkalization | funkalization | funkalization | — | 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. |
| bajan | bajan | bajan | ✓ | Spec-driven knowledge-graph pipeline CLI — ingest sources, extract claims, query the graph. SQLite-backed triple store, provenance as graph structure. |
| gently | gently | not 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
| Tool | Language | In homebrew? | Notes |
|---|---|---|---|
| beads | Go | ✓ (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. |
| openspec | TypeScript/npm | homebrew-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. |
| incitaciones | TypeScript/npm | npm (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:
| Tool | Config location | Format | Notes |
|---|---|---|---|
| wai | .wai/ | TOML + directory | PARA structure |
| dont | .dont/ | Cozo DB + TOML | Heavyweight store |
| espectacular | .espectacular/ | JSON + TOML | Spec traces |
| pretender | .pretender.toml | TOML | Single file |
| testaruda | .testaruda/ | SQLite + TOML | Dependency graph store |
| vampiro | .vampiro/ | TOML | Composition config (config.toml) |
| specodelic | .specs/ | Markdown corpus | Spec files |
| funkalization | .funkalization/ | JSON workspace (planned) | Design workspace |
After ddl migration (Phase 1):
| Tool | Config location | Backwards 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:
| Module | Used by | Purpose |
|---|---|---|
envelope | All | Structured JSON CLI output |
suggestions | wai, dont | Typo correction (DidYouMean) |
managed_block | wai, 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) |
config | All | ConfigFile trait, ConfigRegistry |
guide | All | CLI dispatch, error handling, verbosity |
status | All | StatusContributor trait, health aggregation |
doctor | All | DoctorRunner with auto-fix |
scaffold | All | init command standardization |
suite_linter | testaruda | Cross-tool config linting |
fixture | All | Test helpers |
git | rollout in progress | Read-only git plumbing: repo-root walks, changed-file enumeration, tracked/ignored checks, content hashes — one canonical subprocess-only substrate. |
git_hooks | wai, espectacular, pretender | Git-hook mechanics: install/uninstall with ownership markers, core.hooksPath resolution, lefthook managed-block injection. Tool-specific gates stay in the tools. |
Distribution channels
| Channel | Tools | Maintainer |
|---|---|---|
| crates.io | All released Rust tools (wild publishes as wild-vibes; gently not yet published) | Individual repos |
| Homebrew | wai, ah, dont, pretender, testaruda, vampiro, turu, dulce-de-leche — dont formula still a placeholder stub; bd and openspec ship in homebrew-core | homebrew-charly tap |
| Scoop | wai, ah, dont, pretender, testaruda, vampiro, turu, dulce-de-leche | scoop-charly bucket |
| GitHub Releases | All Rust tools; bd (gastownhall/beads); openspec (fission-ai/openspec) | Individual repos |
| npm | incitaciones; openspec (@fission-ai/openspec) | Individual repos |
Homebrew formulas (current state)
From homebrew-charly/:
| Formula | Version | Has real SHA? | Notes |
|---|---|---|---|
wai.rb | 2026.8.5 | ✓ | Real release |
testaruda.rb | 0.4.0 | ✓ | Real release (engine + rust/python adapters) |
vampiro.rb | 0.4.0 | ✓ | Real release |
turu.rb | 0.3.0 | ✓ | Real release (auto-updated by whisper’s release workflow) |
ah.rb | 0.5.0 | ✓ | Real release (assets under espectacular releases) |
pretender.rb | 0.5.0 | ✓ | Real release |
dulce-de-leche.rb | 0.3.0 | ✓ | Real release |
dont.rb | 0.0.0 | ✗ placeholder | Blocked: 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.)