Skip to main content

cat-claws

Agent-SDK backends for the CatLLM ecosystem: classify text through a Claude subscription (Claude Agent SDK) or a ChatGPT subscription (openai-codex SDK) instead of per-token API billing.

(Distribution name cat-claws; imports as catclaws. Source repo: cat-agent.)

Status: alpha, under active development. See MASTERPLAN.md for the design and step tracker, and OPENAI_MASTERPLAN.md for the Codex backend's execution record.

Install

Each backend's SDK is an extra — install the one(s) you use:

pip install "cat-claws[claude]"   # Claude backend (claude-agent-sdk)
pip install "cat-claws[codex]"    # Codex backend (openai-codex, bundles the codex binary)
pip install "cat-claws[claude,codex]"  # both

A bare pip install cat-claws installs neither SDK; calls then return a clear per-row install hint instead of classifying.

Design in one paragraph

One row = one sealed, fresh-context agent call (no tools, single turn, no settings/AGENTS.md/CLAUDE.md loading), using cat-stack's validated classification prompt byte-for-byte. The model answers in JSON; parsing and the wide 0/1 output matrix reuse cat-stack's existing machinery. Throughput comes from concurrent one-shot calls, never from shared conversations or corpus-in-one-prompt (which would contaminate rows and break research validity).

Quick start

import catclaws

# Claude subscription (requires Claude Code installed and logged in):
df = catclaws.classify(
    input_data=["I moved for a new job", "Rent got too expensive"],
    categories=["Employment", "Cost of living", "Other"],
    description="Why did you move?",
    agent="claude",                 # default; user_model=None -> claude-sonnet-5
)

# ChatGPT subscription (requires `codex login`; the SDK bundles the binary):
df = catclaws.classify(
    input_data=["I moved for a new job", "Rent got too expensive"],
    categories=["Employment", "Cost of living", "Other"],
    description="Why did you move?",
    agent="codex",                  # user_model=None -> gpt-5.5
)

No API key needed for either backend. Engine users reach the same adapters via catstack.classify(..., model_source="claude-agent") / model_source="codex-agent".

Notes for agent="codex": reasoning is explicitly set per call (thinking_budget=0 → effort "none"), so your ~/.codex/config.toml defaults are never silently inherited. Images (and rendered PDF pages) are supported on both backends; the codex SDK takes file paths, so each image is written to a private temp file for the call and deleted afterwards.

Methodology note

The two backends answer the same frozen prompt. On the 24-row synthetic parity run (2026-07-11, benchmarks/parity_run.py) claude-sonnet-5 and gpt-5.5 agreed on 96/96 cells (Cohen's kappa 1.000, 0 errors). Synthetic one-liners are easy; expect some divergence on real survey text — measure and disclose per study (benchmarks/RESULTS.md holds the running record), and never tune the prompt to force agreement.

Metadata

Release files for cat-claws 0.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cat-claws 0.3.2
File Size Uploaded
cat_claws-0.3.2.tar.gz 65.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cat-claws 0.3.2
File Interpreter ABI Platform
cat_claws-0.3.2-py3-none-any.whl Python 3 none any Details

Total release size: 83.4 kB

Release files / cat_claws-0.3.2.tar.gz

Download URL cat_claws-0.3.2.tar.gz
Size 65.8 kB
Tags Source
SHA-256 checksum
How to use checksums
a0c42594ef9e03b175aa385e817fc4b7cfcb117c1ab3bcbd56f29aecfe214c84
BLAKE2b-256 checksum
How to use checksums
1cfd8309fe1c26187017144dd60da3ff2e43115a10c2166c55b703977d012485
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.14

Release files / cat_claws-0.3.2-py3-none-any.whl

Download URL cat_claws-0.3.2-py3-none-any.whl
Size 17.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
09d34e920ab5faf23d6b2c661f155159ada41f62e8c115c9db035c2e2fc1b8ed
BLAKE2b-256 checksum
How to use checksums
d33146a9debea9feb29ec5ed811ae7ae9c76ef31d1f4edbc9989c89a06942ef5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.14

Release history Release notifications | RSS feed

0.3.3

2 release files

This release

0.3.2 This release

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release 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