Skip to main content

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:

  1. ./.env (current working directory)
  2. <repo-root>/.env (the attune-gui checkout root)
  3. ~/.attune-gui/.env
  4. ~/.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 Origin header guard rejects browser requests from non-localhost origins
  • Mutating endpoints require the X-Attune-Client header 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

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

attune_gui-0.4.0.tar.gz (142.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

attune_gui-0.4.0-py3-none-any.whl (124.8 kB view details)

Uploaded Python 3

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

Hashes for attune_gui-0.4.0.tar.gz
Algorithm Hash digest
SHA256 fd7b435f4bc8e041414dda7fe21e6277db94621802eb7072c0cccab900473a4e
MD5 96dcdffad2d275dbe3fe744c5c61bb53
BLAKE2b-256 717da8b3e66d32a71ecca3b698d8db15efb452a959508b4395f6c37d1d50f9e5

See more details on using hashes here.

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

Hashes for attune_gui-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a84227a5c46b27d0ce4435dc2ea67b99e696e972b5973a800ba7ed0a3b493505
MD5 416a4a7e648cf46c520226785c077332
BLAKE2b-256 a6c530b5243bac53775b9766feb30f2a3e9d89f7a0d5b2d9cf23b8ba35f925c1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page