specode is an opinionated terminal framework for reliable AI-assisted software development.
It starts as a terminal-first AI chat assistant built with Python, Typer, Rich, and Pydantic AI. The product direction is to bring Rails/Django-like conventions to agentic coding: durable steering docs, feature-scoped specs, reusable skills, and approval-gated workflows.
This repository is being built through a spec-driven workflow. The current milestone includes a working interactive CLI chat loop with terminal controls, startup configuration checks, project steering support, and test coverage around the main public behavior.
- Python 3.10 or newer
uvOPENAI_API_KEY
- Create a local
.envfile:
OPENAI_API_KEY=your-api-key-here- Install dependencies:
uv syncFor local development:
uv run specodeIf the package is installed in an environment that exposes console scripts, you can also run:
specodeInstall SpeCode from GitHub with uv:
uv tool install git+https://github.com/ivand200/specode_cli.gitAfter installing, run specode from any project directory:
specodeTo update an existing install:
uv tool upgrade specode --reinstallIf uv reports that specode is already installed and you want to reinstall directly from GitHub:
uv tool install --force --reinstall git+https://github.com/ivand200/specode_cli.git- The
specodecommand launches an interactive terminal session. OPENAI_API_KEYis validated at startup with an actionable error if it is missing./help,/clear,/exit, and/quitare available as in-session controls./steeringinspects the current project, previews foundational steering doc changes, and writes only after explicit approval.- In an interactive terminal, typing
/reveals the available slash commands andTabcompletes partial commands such as/ex. - Responses are generated through a Pydantic AI-backed chat service.
steering/holds durable project memory: product, tech, and structure.- The
/steeringworkflow can create or refreshsteering/product.md,steering/tech.md, andsteering/structure.mdafter showing the proposed changes and receivingyoryesapproval. tasks/<task-name>/holds task-specific artifacts:task.md,context.md,design.md, andtasks.md.- The workflow is intentionally small: clarify the task, design when useful, break work into slices, implement, review, and test.