Unofficial.
openspec-uiis a community-built tool and is not affiliated with, endorsed by, or sponsored by Fission-AI/OpenSpec. It consumes theopenspecCLI over subprocess as a third-party client.
An interactive, keyboard-driven terminal UI for visualizing and managing your OpenSpec changes and specs.
openspec view dumps a static dashboard and exits. openspec-ui is the
interactive version: browse changes and specs, glance at progress, see a kanban
pipeline of your changes, open artifacts, edit them in $EDITOR, and create new
changes — all from one terminal command.
uvx openspec-uiRun it from inside any directory containing an openspec/ root (or a
subdirectory of one). Requires the openspec CLI on PATH.
Requires Python 3.10+ and Textual 1.0 or newer (installed automatically).
- Dashboard — an aligned table of changes (stage, name, progress, tasks, last modified) over headline counts of specs and of changes per stage. Specs are listed with their requirement counts.
- Kanban — a pipeline view of changes by stage, each column and card carrying that stage's colour, for at-a-glance status.
- Change detail — renders a change's artifacts (
proposal.md,design.md,specs/**) as scrollable markdown with a navigable table of contents; ASCII diagrams and code blocks stay aligned in monospace. When an artifact resolves to several files, each gets its own tab. - Tasks — a change's
tasks.mdrendered as its checklist, one section per heading with a done/total count. Read-only; edits go through$EDITOR. - Spec browser — open a spec to read its overview and requirements, each expandable to reveal its scenarios.
- Filter — press
/to narrow the changes and specs by name. - Edit — press
eto open the current artifact in$EDITOR; the view reloads from disk when the editor exits. - New change — press
nto create a change viaopenspec new change. - Command palette —
Ctrl+Pfor fuzzy-searchable actions, including jumping straight to any change or spec by name, and switching theme. - Live refresh — open views re-read from disk as things change on disk;
press
pto pause.
Press ? at any time for the key bindings available on the current screen.
Screenshots show an example project, not this repository.
Dashboard — changes in an aligned table with stage, progress and task counts, over headline counts per stage.
Kanban — k. Every column heading and card border carries its stage's
colour, so the shape of the pipeline reads before any of the text does.
Change detail — enter on a change. Artifacts render as scrollable
markdown with a table of contents; code blocks and ASCII diagrams keep their
monospace alignment.
Tasks — the tasks.md checklist, one section per heading with its
done/total count. Finished sections start collapsed so the eye lands on what is
left. Read-only: edits go through $EDITOR.
Spec browser — enter on a spec. Requirements expand to reveal their
scenarios, which is the only way a spec with thirty of them stays readable.
Command palette — Ctrl+P. Fuzzy-matched actions, plus every change and
spec by name.
Filter — /. Narrows the changes and specs by name; escape clears it.
Light theme — all colour comes from the active Textual theme, so it follows your terminal.
This project follows the OpenSpec spec-driven workflow (openspec/).
Git history uses Conventional Commits and conventional branch names:
- Branches:
feat/<scope>,fix/<scope>,refactor/<scope>,chore/<scope>, … - Commits:
feat:,fix:,docs:,refactor:,chore:, … (with a scope when helpful, e.g.feat: add kanban view). - Never commit directly to
main. Work on a dedicated branch and open a pull request with the GitHub CLI (gh pr create), referencing the OpenSpec change name in the PR description.
For changes managed through OpenSpec, see openspec/config.yaml for the
project context and per-operation guidance that the openspec skills follow.







