Skip to main content

An autonomous factory. Orchestration only: claim a work item, run an agent once, record the outcome.

Project description

Tina

"Tina, eat. Food. Eat the FOOD!"


An autonomous factory. Tina takes in pre-defined work items and produces work items that are relatively easily verified by a person — and, with the right criteria, by an agent.

It is an agent harness with guardrails. Tina does orchestration only: it selects a work item, claims it, and calls an agent once with a one-shot prompt. The agent does all the performance, using its own tools.

tina demo

How it works

A workflow is Source -> Activity -> Result.

harness = "pi"        # selects [harnesses.pi]; `executor` works the same way
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"
activity = "triage"
result = "github:issue-comment"

Two commands, one image:

tina dispatch --workflow bug --limit 5             # query, take N, enqueue N workers
tina dispatch --workflow bug --limit 5 --dry-run   # preview the matches, enqueue nothing
tina run --workflow bug --item 4821                # claim, run the agent, record outcome

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 activities included. Activities are skills, installed with napoln at image build time.

Documentation

Document Description
docs/architecture.md System design — workflows, 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

Status

Implemented, pre-release. Not yet published to PyPI. v1 scope is §18 of the architecture doc.

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

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

tina_cli-0.1.0.tar.gz (360.7 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.0-py3-none-any.whl (28.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tina_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 360.7 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.0.tar.gz
Algorithm Hash digest
SHA256 c1a2e373bcefb237be72bebb6c104772eb4b2f4a79f10e7f20c36840ad629125
MD5 6067ffee0fa1cf5ddd62529cedf29ee2
BLAKE2b-256 4b46b2baaf85c1f8777288ab126ae4e6263add5405efa65243aa10ce67b455c1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tina_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 28.4 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 26656e758ab31d050492c41ac315e563f7602a5ddbbf6719f536df295d6e17dd
MD5 5e47c5978e61a31bcbb591054c04b063
BLAKE2b-256 eaa3514cad784a6eb7c3dbb4715ffa2e4fc46bd423d61cdb8bac20ea1100cfee

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