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.2.0.tar.gz (64.2 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.2.0-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for openspec_ui-0.2.0.tar.gz
Algorithm Hash digest
SHA256 7cf203edaecd71bdf3a3f1b2e5e9ab4aa998ddba3202a39e8e0f5d80138fb454
MD5 74036b5dcbcd39c0228e2240f790b5fb
BLAKE2b-256 0e5160c44a44386d6a1b64d4ada5ea98e9930c70432280f6a67c87b8b3f64833

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for openspec_ui-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 55ed1f333f0b0da20dc966091bb3ce22bdba0c8fbe17494222f1e69bf042e04b
MD5 492b5760cae99004183124eb0b5a0ad3
BLAKE2b-256 81144356a045439a03ddad2d54c9645295a92c32ef0c11f47de9abe447539c91

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