Skip to main content

Meet the attune family — and the dashboard that ties it together

Patrick Roebuck
3 min read

TL;DR: attune-gui 0.5.0 is the unified local dashboard for the attune-* documentation toolchain. Server-rendered Jinja2, 65 KB wheel, no npm anywhere. pip install attune-gui and visit http://localhost:8765/.


The problem

Documentation rots faster than code, and the rate climbs with every package you ship. We maintain a RAG-grounded help system across four packages. On a typical morning, that meant:

  • Terminal #1 to run the regen command
  • Editor open to a spec we were drafting
  • Browser tab on a rendered template to verify it
  • Terminal #2 to check which features had stale templates
  • Another tab to look at the corpus summaries
  • A fifth thing to actually run the test suite

Every context switch is a chance to forget what you were doing.

So we built a single pane for the whole stack.

The attune family

PackageRole
attune-ragRAG pipeline — keyword + semantic retrieval over a Markdown corpus
attune-helpRuntime that ships with your package; serves help responses with progressive depth
attune-authorAI-assisted template generator (Claude under the hood)
attune-guiLocal dashboard tying it all together — this post

Each package stands alone. attune-gui is what you reach for when you want to see, edit, regenerate, and ship all four at once.

What's in 0.5.0

A sidebar with seven pages. Each one consumes the same JSON API the package already exposes — the dashboard is a thin Jinja2 layer over the existing sidecar.

Health

Cross-layer probe of every attune package: version, import status, dot indicator. Plus a corpus snapshot — workspace path, template count, whether summaries.json is present.

Templates

The Markdown templates that drive your help system. Each row shows mtime staleness (fresh / stale / very stale), tags from frontmatter, and a manual-pin toggle. Pinning sets manual: true in the file's frontmatter, and the attune-author regen pipeline respects it — your hand-tuned templates don't get clobbered by the next AI pass.

Specs (new authoring in 0.4.0)

The spec-driven workflow we use ourselves, now first-class in the UI. Click + New spec, type a slug, get a starter requirements.md bootstrapped from TEMPLATE.md. Click + Design to add the next phase when requirements are done. Phase ordering is enforced server-side — no tasks before design, no design before requirements. A status dropdown in the Preview/Edit panel transitions a phase through draft → in-review → approved → complete with an atomic write.

Summaries

Inline-editable view of summaries.json with a persistent banner reminding you that the file is regenerated by attune-author polish. Edit anyway if you need to; the warning makes the trade-off explicit.

Living Docs

The opinionated layer. Workspace editor. Manual scan trigger. Health breakdown by persona (End User / Developer / Support). Review queue for auto-applied changes — approve or revert. RAG quality gates for faithfulness and strict accuracy with visible thresholds; ship with confidence or stop the line.

Commands & Jobs

Every registered attune command shows up as a card. Click to run, watch progress in the Jobs page (with a "Last output" column that updates every 4 seconds), cancel mid-run if you change your mind.

Why server-rendered Jinja2

We started with React + Vite. It worked. It also added an npm install step to the wheel build, a Node toolchain to the contributor README, a Vite dev server to the dev.sh script, and 122 KB of bundled JS to the package.

For a single-user, local-only, developer-facing dashboard, none of that was buying us anything. So 0.5.0 retired the React UI. The wheel went from 122 KB to 65 KB. The build went from "make sure Node is installed and run npm install" to "uv sync." Templates auto-reload on edit. The whole thing is 8 HTML files, 1 CSS file, and ~30 lines of vanilla JS in a <script> tag.

If you've been waiting for a project that proves you can ship a polished local dashboard without a JS framework — here's one.

Install

pip install attune-gui
attune-gui --open

That's it. The sidecar binds to 127.0.0.1, prints SIDECAR_URL=http://127.0.0.1:<port>, and opens your browser. Configure once via the Living Docs → Workspace field, persists to ~/.attune-gui/config.json, survives restarts.

For Anthropic-backed commands (author.regen, author.maintain), drop your ANTHROPIC_API_KEY in .env — the sidecar auto-loads it from any of: ./.env, <repo-root>/.env, ~/.attune-gui/.env, ~/.attune/.env.

Use it inside Claude Code

If you live in Claude Code, install the attune-gui-plugin to launch the dashboard inside the Cowork preview pane. Type /attune-gui or just say "open the dashboard" — the skill triggers automatically.

What's next

  • Test coverage for the page templates (currently API-only at 124 tests)
  • Spec authoring v2 — split-pane editor with live preview, suggested phase transitions based on completion checklist
  • Living Docs auto-scan on save — watch the workspace, scan when you commit
  • Quality gate alerts — Slack/email when faithfulness drops below threshold

Roadmap is open: github.com/Smart-AI-Memory/attune-gui/discussions

Links

— Patrick @ Smart AI Memory

Related Articles