Local dashboard for attune-rag / attune-help / attune-author. Server-rendered Jinja2 UI (Cowork) with React UI preserved at /legacy/.
Project description
attune-gui
Local dashboard for the attune-* documentation family
(attune-rag, attune-help, attune-author). Server-rendered Jinja2
UI ("Cowork dashboard") backed by a FastAPI sidecar — ships clean via
PyPI with no npm step required to run.
What it does
Sidebar nav with seven pages, each consuming the existing JSON API:
| Page | What it shows |
|---|---|
| Health | Cross-layer health (rag/help/author/gui versions) + corpus snapshot |
| Templates | Markdown templates with mtime staleness, tags, and a manual-pin toggle |
| Specs | Feature specs in specs/ with phase + status badges. + New spec bootstraps from TEMPLATE.md; + Design / + Tasks inline; status dropdown in Preview |
| Summaries | Inline-editable summaries.json with overwrite warning |
| Living Docs | Workspace editor, scan trigger, document health, review queue, RAG quality bars |
| Commands | Run any registered command from a card grid (RAG queries, regen, maintain, …) |
| Jobs | Job history with per-feature progress, last-output column, Cancel button, auto-refresh |
Click any spec or template to open the Preview / Edit panel — server-side
Markdown rendering plus a raw <textarea> for editing.
Prefer the React UI? It's still bundled and reachable at
/legacy/. Both surfaces talk to the same FastAPI sidecar.
Looking for AI dev workflows (code review, security audits, refactor planning, multi-agent orchestration)? Those live in
attune-ai— a separate product. attune-gui is deliberately scoped to the documentation lifecycle.
Quickstart
pip install attune-gui
attune-gui
# Or pick a specific port:
attune-gui --port 8765
The sidecar binds to 127.0.0.1, prints SIDECAR_URL=…, and serves the
new dashboard at /. Use --open to auto-open your browser.
Configuration
.env auto-loading
The sidecar loads KEY=value lines from the first .env it finds, in this order:
./.env(current working directory)<repo-root>/.env(the attune-gui checkout root)~/.attune-gui/.env~/.attune/.env
Existing real env values are preserved; empty/whitespace-only values are treated as unset and overwritten. Common keys:
ANTHROPIC_API_KEY=sk-ant-… # required for author.regen / author.maintain
ATTUNE_SPECS_ROOT=/path/to/your/repo/specs
ATTUNE_WORKSPACE=/path/to/your/project
Workspace + specs root
| Variable | Default | Purpose |
|---|---|---|
ATTUNE_WORKSPACE |
persisted to ~/.attune-gui/config.json |
The project the sidecar watches (Living Docs, templates) |
ATTUNE_SPECS_ROOT |
<workspace>/specs/, then walks up from cwd |
Where the Specs page reads from |
Workspace can also be set via Living Docs → Workspace in the UI; it
persists to ~/.attune-gui/config.json and survives restarts.
Development
git clone https://github.com/Smart-AI-Memory/attune-gui
cd attune-gui
uv sync
uv run attune-gui --port 8765 --reload
For HMR work on the React UI at /legacy/:
cd ui && npm install && cd ..
./scripts/dev.sh # starts sidecar + Vite dev server
Tests
uv run pytest # 105 tests, ~2s
uv run ruff check . # lint
Architecture
┌──────────────────────────────────────┐
│ Cowork dashboard (Jinja2) / │
│ Legacy React UI /legacy/ │
└──────────────────┬───────────────────┘
│ /api/*
┌──────────────────▼───────────────────┐
│ FastAPI sidecar — 127.0.0.1 │
│ ├─ routes/system, rag, help, … │
│ ├─ routes/cowork_health │
│ ├─ routes/cowork_specs │
│ ├─ routes/cowork_templates │
│ ├─ routes/cowork_files │
│ └─ routes/cowork_pages (HTML) │
└──────────────────┬───────────────────┘
│
┌──────────────────▼───────────────────┐
│ attune-rag · attune-help │
│ attune-author[ai] │
└──────────────────────────────────────┘
Security notes
This is a single-user, local-only app. Not designed for multi-user deployment, not hardened against a motivated attacker on the same machine.
- Binds only to
127.0.0.1— not reachable from other machines - An
Originheader guard rejects browser requests from non-localhost origins - Mutating endpoints require the
X-Attune-Clientheader to match a per-process token (served from/api/session/token) - File API enforces a path-traversal guard against three named roots
(
templates,specs,summaries); writes outside those roots return 400
Related packages
attune-rag— RAG pipelineattune-help— help runtimeattune-author— doc authoringattune-gui-plugin— Claude Code plugin that launches the dashboard inside Cowork's preview paneattune-ai— separate AI dev workflow product (not used by attune-gui)
License
Apache-2.0
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file attune_gui-0.4.0.tar.gz.
File metadata
- Download URL: attune_gui-0.4.0.tar.gz
- Upload date:
- Size: 142.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd7b435f4bc8e041414dda7fe21e6277db94621802eb7072c0cccab900473a4e
|
|
| MD5 |
96dcdffad2d275dbe3fe744c5c61bb53
|
|
| BLAKE2b-256 |
717da8b3e66d32a71ecca3b698d8db15efb452a959508b4395f6c37d1d50f9e5
|
File details
Details for the file attune_gui-0.4.0-py3-none-any.whl.
File metadata
- Download URL: attune_gui-0.4.0-py3-none-any.whl
- Upload date:
- Size: 124.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a84227a5c46b27d0ce4435dc2ea67b99e696e972b5973a800ba7ed0a3b493505
|
|
| MD5 |
416a4a7e648cf46c520226785c077332
|
|
| BLAKE2b-256 |
a6c530b5243bac53775b9766feb30f2a3e9d89f7a0d5b2d9cf23b8ba35f925c1
|