Skip to main content

Claude Code-style CLI harness for the ninja subnet agent

Project description

katana

katana is a small PyPI-ready CLI package that runs the public ninja-subnet/ninja agent like a local coding assistant.

Subnet 66 harnesses are now multi-file bundles: an agent.py entrypoint plus a stdlib-only agent/ package (up to 32 *.py files), with tau_agent_files.json listing every file. katana bundles the latest such snapshot at build time, loads it exactly the way the validator does (the bundle root goes on sys.path so the entrypoint's from agent.* import ... resolves), and calls its validator-compatible contract:

solve(repo_path, issue, model, api_base, api_key)

Single-file agents (just agent.py) remain fully supported.

Install

Prerequisites

  • Python 3.11 or newer
  • pip (bundled with Python)
  • An OpenRouter API key

From PyPI (recommended)

pip install katana-cli

Verify the installation:

katana --version

From source

Clone the repository and install in editable mode:

git clone https://github.com/ninja-subnet/katana-cli.git
cd katana-cli
python -m pip install -e .

Verify the installation:

katana --version

Configure

katana config

This stores your OpenRouter API key and default model in the OS user config directory, such as ~/.config/katana/config.json on Linux. The file is written with user-only permissions.

Environment variables override stored config:

OPENROUTER_API_KEY=...
KATANA_MODEL=anthropic/claude-sonnet-4.6

Use

Open an interactive session in the current git repo:

katana

Run a one-shot task:

katana "fix the failing parser test"

Run explicitly:

katana run --repo . --model anthropic/claude-sonnet-4.6 "add validation for empty input"

By default, katana previews the returned patch and asks before applying it. Use --apply to request application after the run.

Agent Sources

Show bundled metadata:

katana agent info

Cache and use a specific ninja-subnet/ninja ref. The whole bundle (every file in tau_agent_files.json) is fetched, not just agent.py:

katana agent update --ref 486999c820ff92184deea0d2fc6723880be3e84e
katana run --agent-ref 486999c820ff92184deea0d2fc6723880be3e84e "fix the issue"

Use your own compatible local agent. --agent-path accepts either a single agent.py or a bundle directory containing agent.py (and, optionally, an agent/ package and a tau_agent_files.json manifest):

katana run --agent-path ./agent.py "fix the issue"
katana run --agent-path ./my_bundle "fix the issue"
katana --agent-path ~/agents/my_agent.py "fix the issue"

Custom agents must expose the same callable contract as the bundled agent:

def solve(repo_path, issue, model, api_base, api_key):
    return {"patch": "", "logs": "", "steps": 0, "cost": None, "success": True}

For a multi-file bundle, agent.py is the entrypoint and may import its supporting modules (from agent.foo import bar); list every file, including agent.py, in tau_agent_files.json.

Models

katana models

Recommended defaults are intentionally simple. You can pass any OpenRouter model id with --model.

Development

python -m pip install -e '.[dev]'
pytest
python -m build

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

katana_cli-0.2.0.tar.gz (34.0 kB view details)

Uploaded Source

Built Distribution

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

katana_cli-0.2.0-py3-none-any.whl (33.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for katana_cli-0.2.0.tar.gz
Algorithm Hash digest
SHA256 bff0eab4fa8016a238da64e9a097def2f5d34925b938849f0ec11f45aa4e1122
MD5 5aadfa2645109d39ea2eca47ca70154b
BLAKE2b-256 c0ff925a2580d3c91f4ce11efa622582cca0ae48a4bbcecd173d39cdfa4ab439

See more details on using hashes here.

Provenance

The following attestation bundles were made for katana_cli-0.2.0.tar.gz:

Publisher: publish.yml on ninja-subnet/katana-cli

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

File details

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

File metadata

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

File hashes

Hashes for katana_cli-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 af4b18ddd5505c43963e2af38f686aab2d2a11ad7bd70793f1ab75896932c3ec
MD5 4a8321676125fa3db813236ea95d9f7a
BLAKE2b-256 c94443a610e055fdd19185e8ebf02b94b9a40d4cc4d5280457b30a6db191fe6f

See more details on using hashes here.

Provenance

The following attestation bundles were made for katana_cli-0.2.0-py3-none-any.whl:

Publisher: publish.yml on ninja-subnet/katana-cli

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