Skip to main content

Tina

Tina is an autonomous factory. It takes in clear work items from Jira, Github issues, etc and work on them to produce work that's relatively easily verified by a person.

pip install tina-cli

tina demo

How is Tina different from an agent harness?

Tina is an orchestrator of sort.

It selects a work item, claims it, and calls an agent harness once with a one-shot prompt that I call a track.

The agent harness does the individual work item. Currently, I use pi, because it's small and relatively stable. I may use a different one in the future.

So what's the value of doing this approach instead?

With an agent harness, you have to sit there and steer it. Even if you have one shot prompts, you need to put those prompts in there.

For work items that are very self similar, you can instead make what I can a track.

Think of it like a runbook or a guide. You take several examples of work you have already done once and use them to describe to the agent what it should do.

Then upstream from this system in your ticketing system, you make work items for it.

Downstream from this system PRs get made or Confluence docs get write or whatver other outcome you want.

You just write tickets instead of driving around your agent to get work done.

This approach scales your attention better than having 5 simultaneous agent sessions running simultaenously, especially you enter production situations where you're quickly drowned by the amount of work coming your way.

High-level track approach

A track is Source -> Skill -> Result.

harness = "pi"      
executor = "local"

[harnesses.pi]
command = ["pi", "--prompt-file", "{prompt_file}"]

[bug]
source = "github"
repo = "acme/api"
query = "repo:acme/api is:issue is:open no:assignee label:bug"
track = "triage"
result = "github:issue-comment"

A basic workflow:

tina dispatch --track bug --limit 5            
tina run --track bug --item 4821             
tina status --track bug              

status derives both counts from the track's own query — once as dispatch runs it, and once with its no:assignee clause swapped for the bot — so they are two halves of one question and Tina keeps no state to go stale.

An external scheduler calls dispatch. Tina does not own scheduling — Cloud Scheduler, EventBridge, k8s CronJob, systemd timers, and GitHub Actions all work without Tina knowing about them.

Design

  • Orchestration only. Tina never writes a result. The agent does, with its own tools.
  • Harness agnostic. pi, Claude Code, and others are subprocess adapters. Tina never parses harness stdout — the agent writes outcome.json to a path Tina provides.
  • No persistent state. The tracker is the ledger. Workers claim items, and claimed items drop out of the query.
  • No tracks included. Tracks are skills, installed with napoln at image build time.

Documentation

Document Description
docs/architecture.md System design — tracks, dispatch/worker, adapters, outcome contract, v1 scope
docs/adr/ Architecture decision records — the reasoning behind each design choice
CONTRIBUTING.md Setup, the check loop, layout, how to add adapters, commit conventions

Development

See CONTRIBUTING.md for the full guide.

just is the task runner (brew install just).

just setup    # Install all dependencies
just check    # Format check, lint, type check, tests
just fmt      # Auto-fix formatting and lint
just test     # Run tests

Without just:

uv sync --all-extras       # Install all dependencies
uv run ruff format --check # Format check
uv run ruff check          # Lint
uv run ty check            # Type check
uv run pytest              # Run tests

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tina_cli-0.1.1.tar.gz (349.5 kB view details)

Uploaded Source

Built Distribution

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

tina_cli-0.1.1-py3-none-any.whl (32.9 kB view details)

Uploaded Python 3

File details

Details for the file tina_cli-0.1.1.tar.gz.

File metadata

  • Download URL: tina_cli-0.1.1.tar.gz
  • Upload date:
  • Size: 349.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for tina_cli-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e9edadf4982c4349ca5bf9b1df2376381d093ab5a82aeaffde85dc00c1018b2b
MD5 efbabbff0b58f2e76f7989887617d68a
BLAKE2b-256 4b48a60db3dbf18f4d5b5bfd53aa5444d3a12f6c150ed3d3b9f9a7ddeadb026e

See more details on using hashes here.

File details

Details for the file tina_cli-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: tina_cli-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 32.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for tina_cli-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3438d470fdabee03aa1af4631e37a79981be1b2e40e3b484b3cc5c3a412c9d1e
MD5 3d0f83f3298728cd25861497424b229b
BLAKE2b-256 638a58ccea18e8369c300f8a22918021f80227572ea141ebe39bb90f3aa76709

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

This release

0.1.1 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page