Ops Dashboard FAQ

What is the ops dashboard?

A local operations dashboard that lets you run workflows, pick a feature scope, stream live logs over SSE, and browse persisted run history. Run it with python -m attune.ops or via the attune ops CLI subcommand.

How do I start the dashboard?

Call cmd_ops(args) or run python -m attune.ops. The server binds to 127.0.0.1:8765 by default. You can change the host and port through the host and port fields on Config.

What does Config control?

Config is the central configuration dataclass. Its key fields include:

How do I get the Anthropic cost data?

Call fetch_summary(refresh=False). It returns a (CostSummary | None, CostFetchError | None) tuple. If the request fails, inspect the CostFetchError fields — kind (a CostFetchErrorKind) and message — to understand why. Pass refresh=True to bypass the in-memory cache and fetch a fresh result.

What does CostSummary contain?

CostSummary holds account-level cost data fetched from the Anthropic admin cost report:

What are spec completion candidates?

Candidates are specs that the detector identifies as potentially complete. detect_candidates(config) returns a list of Candidate objects, each with a slug, path, current_status, evidence list, and snapshot_hash. The detector only runs when specs_candidates_enabled is True on your Config.

How do I reset the cost cache in tests?

Call clear_cache(). This empties the in-memory cache and is intended for test use only.

Do I need to import FastAPI directly?

No. create_app() uses a lazy import so that importing attune does not pull in FastAPI. Similarly, build_config() lazy-imports the config builder. Only the symbols in __all__create_app, build_config, and Config — are part of the public API.

Where are the source files?

All ops dashboard code lives under src/attune/ops/.

Tags: ops, dashboard, runner, workflows, scope-picker, persistence, sse