Skip to main content

Deterministic, file-based execution system for autonomous agents

Project description

Runnrr

Git for agent workspaces.

Runnrr is a filesystem-native, markdown-based workspace protocol that gives coding agents (and humans) durable structured state, explicit task boundaries, and lightweight context retrieval.

It is not an autonomous loop runtime, a checkpoint engine, a multi-agent orchestrator, or a sprawling platform. It is simply the structured workspace that tools like Gemini CLI and Claude Code work inside to understand what to do next.

The Five Commands That Matter

runnrr next        # what should I work on?
runnrr context     # what do I need to know?
runnrr log         # what did I just do?
runnrr done        # I finished this
runnrr adr         # I made an architectural decision

Everything else is in service of these five.

The Stack

.runnrr/              Filesystem. Source of truth. Always.
├── tickets/         Markdown files. Folder = state.
├── epics/           Markdown files.
├── adrs/            Markdown files.
└── context/         conventions.md, glossary.md. Static. Human-maintained.

.runnrr/.db           SQLite. Derived only. Gitignored.
                     Rebuilt anytime with: runnrr index rebuild
                     Used for: search, next-ticket ranking, context scoring

Rule: If .db is deleted, everything still works. It just gets slow. The markdown files are always the absolute source of truth.

Core Entities

Tickets

The atomic unit of work. Status is determined by which folder the markdown file lives in (backlog, todo, in-progress, blocked, done).

  • runnrr create "My first ticket"

Epics

Strategic groupings of tickets. Status is strictly computed from child ticket states. Never stored manually.

  • runnrr epic create "Auth System"

ADRs (Architecture Decision Records)

Append-only, immutable records of technical decisions. Once accepted, they are frozen.

  • runnrr adr create "Use JWT" --context "..." --decision "..."

The Agent Workflow

Runnrr shines when used alongside an LLM CLI.

1. Initialization and Context

The agent runs runnrr exec at the start of a session. This command automatically:

  • Calls runnrr next to find the highest priority unblocked ticket.
  • Calls runnrr context to dynamically assemble a token-budgeted, relevance-ranked context payload (including the ticket, blockers, Epics, related ADRs, and project conventions).
  • Calculates the valid state machine actions the agent is allowed to take.

2. Execution

The agent starts the work via the CLI:

runnrr start TICKET-001

As the agent writes code, it logs progress directly into the ticket via the CLI to maintain a perfect audit trail:

runnrr log TICKET-001 "Provisioned local Elasticsearch container via Docker Compose."

3. Content Modification (Markdown Direct Editing)

Runnrr relies on direct file edits for human-readable content. To mark a task or an acceptance criterion as complete, the agent opens the .runnrr/tickets/<status>/<TICKET-001>.md file in their editor and changes - [ ] to - [x].

4. Completion

Once all acceptance criteria are checked off in the markdown file, the agent completes the work via the CLI:

runnrr done TICKET-001

(If any criteria are unchecked, the CLI parses the file and rejects the transition).

Python SDK

from runnrr import RunnrrClient

client = RunnrrClient(root=".")
ticket = client.create_ticket("Build auth middleware", tags=["auth"])
client.link(ticket.id, "EPIC-001")
client.transition(ticket.id, "in-progress")

Development

Run tests:

uv run pytest

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

runnrr-0.1.0.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

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

runnrr-0.1.0-py3-none-any.whl (28.6 kB view details)

Uploaded Python 3

File details

Details for the file runnrr-0.1.0.tar.gz.

File metadata

  • Download URL: runnrr-0.1.0.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for runnrr-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9d483004511815068f15fd235255ad8ca44010f62804820e10e7c2933a416896
MD5 4bdedfb8c4a66245b809dece6dd033eb
BLAKE2b-256 1ca2976fa80ef6459a131a6897fd7fddbf0be74c8d7e9d51c739bae2834f3dbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for runnrr-0.1.0.tar.gz:

Publisher: publish.yml on inf3cti0n95/runnrr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file runnrr-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: runnrr-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 28.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for runnrr-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a9ad1186840e1cf6595bd53cd4eff2e3e6e57d92ebb62bcc901c54c2f98ae24a
MD5 21fdb1b5c7416e037a8383f8211e0146
BLAKE2b-256 55b0b1cdeb974b5790c99a3d53fbe7185c5c95b5130793766c7365353ad2f8de

See more details on using hashes here.

Provenance

The following attestation bundles were made for runnrr-0.1.0-py3-none-any.whl:

Publisher: publish.yml on inf3cti0n95/runnrr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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