Skip to main content

An unofficial, community-built interactive TUI for visualizing and managing OpenSpec changes and specs. Not affiliated with Fission-AI/OpenSpec.

Project description

openspec-ui

Unofficial. openspec-ui is a community-built tool and is not affiliated with, endorsed by, or sponsored by Fission-AI/OpenSpec. It consumes the openspec CLI 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.

Install & run

uvx openspec-ui

Run it from inside any directory containing an openspec/ root (or a subdirectory of one). Requires the openspec CLI on PATH.

What it does

  • Dashboard — lists changes (draft / in-progress / completed / archived) with task progress bars, and specs with requirement counts.
  • Kanban — a pipeline view of changes by stage, for at-a-glance status.
  • Detail view — renders a change's artifacts (proposal.md, design.md, specs/**, tasks.md) read-only as markdown (ASCII diagrams and code blocks stay aligned in monospace). Switch artifacts with arrow keys.
  • Edit — press e to open the current artifact in $EDITOR; the view reloads from disk when the editor exits.
  • New change — press n to create a change via openspec new change.
  • Command paletteCtrl+P for actions.

Design

openspec-ui is a thin client: it owns no state. Every read comes from openspec ... --json or direct file reads under openspec/; every write is delegated to the openspec CLI or to $EDITOR. This keeps the view layer replaceable (a future SvelteKit web UI could reuse the same data contract).

Status

Alpha. Built with Textual. Supports OpenSpec CLI 1.7.x (@fission-ai/openspec).

Releases

Releases are fully automated. Maintainers never edit the version field by hand.

  1. Conventional commits land on main (via PRs).
  2. On each push to main, CI runs commitizen (cz bump --yes --changelog), which determines the next semver from the commit log, updates version in pyproject.toml, updates CHANGELOG.md, and creates/pushes a v<version> tag.
  3. The tag push triggers a second CI job that builds the wheel+sdist and publishes them to PyPI using trusted publishing (OIDC) — no stored API tokens.
  4. feat:/fix:/breaking commits release; pure chore:/docs: commits do not (commitizen determines there is no increment).

Trusted publisher setup (one-time, manual)

Before the publish job works, register a trusted publisher on pypi.org once:

  • PyPI project: openspec-ui (create it if it does not yet exist).
  • GitHub repo: mrn-dk/openspec-ui.
  • Workflow filename: .github/workflows/release.yml.
  • Environment name: pypi (the publish job uses environment: pypi).

This is a web step on pypi.org that cannot be automated from within the repo. Until it is done, the publish job will fail with an OIDC error; the build artifacts still exist in the workflow run and can be uploaded manually.

The first release also needs a seeded v0.1.0 tag (commitizen bumps relative to an existing tag); after that, cz bump always has a reference.

Contributing

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.

License

MIT

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

openspec_ui-0.3.0.tar.gz (68.6 kB view details)

Uploaded Source

Built Distribution

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

openspec_ui-0.3.0-py3-none-any.whl (22.3 kB view details)

Uploaded Python 3

File details

Details for the file openspec_ui-0.3.0.tar.gz.

File metadata

  • Download URL: openspec_ui-0.3.0.tar.gz
  • Upload date:
  • Size: 68.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.24

File hashes

Hashes for openspec_ui-0.3.0.tar.gz
Algorithm Hash digest
SHA256 5390145b80f970c642bd3910f67d8c97f1277b9512976baa87790c08553c12f8
MD5 15bb98e655ce429d8396c09681cce716
BLAKE2b-256 4a095c76b60ff24154db15f6afa3969aa1273f137aa431214e809d5980a8b63d

See more details on using hashes here.

File details

Details for the file openspec_ui-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for openspec_ui-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a59791b54d234fe7c803cd295c0e850642cae558eabbb7d109b0c7ba83b4d1d3
MD5 28b2e820314679b46eda347878bef7d0
BLAKE2b-256 0555695e8594c109abf47c11df4259ddc7734ee0d831736841b1e9c821882d08

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