Metadata-Version: 2.4
Name: tiny_harness
Version: 0.3.0
Summary: A tiny agent harness
Author: MadaraUchiha-314
License-Expression: Apache-2.0
License-File: LICENSE
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.14
Classifier: Typing :: Typed
Requires-Dist: a2a-sdk[http-server]>=1.2.2
Requires-Dist: anthropic>=1.13.0
Requires-Dist: cryptography>=50.0.2
Requires-Dist: httpx>=0.28.1
Requires-Dist: jsonschema>=4.26.0
Requires-Dist: mcp>=2.3.0
Requires-Dist: openai>=3.28.0
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.45.1
Requires-Dist: packaging>=26.3
Requires-Dist: pydantic>=2.14.0
Requires-Dist: pyyaml>=6.0.3
Requires-Dist: temporalio[opentelemetry]>=1.34.0
Requires-Dist: textual>=8.2.8
Requires-Python: >=3.14
Project-URL: Homepage, https://github.com/MadaraUchiha-314/tiny-harness
Project-URL: Documentation, https://madarauchiha-314.github.io/tiny-harness/
Project-URL: Repository, https://github.com/MadaraUchiha-314/tiny-harness
Description-Content-Type: text/markdown

# tiny-harness

An opinionated, production-grade agent harness for customer-facing agentic workflows:
A2A 1.0 in and out, MCP tools, Agent Skills and Agent Plugins, one Temporal workflow per
task, hooks around every operation, and a TUI and a web renderer. It is being built in
the stacked pull requests of [issue #3](https://github.com/MadaraUchiha-314/tiny-harness/issues/3);
the spec chain lives under `docs/specs/issue-3/`.

## What is in the box

- An **A2A 1.0 server** (JSON-RPC and REST, streaming, push notifications) and an A2A
  client for remote agents; three extensions (task, channel, A2UI 0.9.1).
- A **core loop** of hooks around every operation: ingest, assemble, compact, call the
  model, run tools, decide completion. Intrinsic tools cover plans, sub-tasks, help
  requests, participants, skills and UI.
- **Temporal** owns the whole request lifecycle: one workflow per task, every model and
  tool call an activity, workflow-managed retries, a durable event log, continue-as-new.
- **Plugins** (Agent Plugins manifests) bring MCP servers, skills, hooks and prompt
  extensions; models are OpenAI (Responses API) and Anthropic adapters.
- **Two renderers**: a Textual TUI and a React web renderer on the official A2UI
  renderer, each an A2A client through the official SDK of its language; the web
  renderer is also hosted at
  [madarauchiha-314.github.io/tiny-harness/ui](https://madarauchiha-314.github.io/tiny-harness/ui/)
  and talks to any harness whose URL you give it.
- **Observability**: JSON logs and OpenTelemetry spans (GenAI conventions), redacted.

## Run the demo

```sh
export TEMPORAL_API_KEY="$(secret-tool lookup service temporal project tiny-harness)"
export OPENAI_API_KEY="$(secret-tool lookup service openai project tiny-harness)"
export TINY_HARNESS_PUSH_KEY="$(openssl rand -base64 32)"
bun install --cwd renderers/web && bun run --cwd renderers/web build
uv run python -m examples.demo            # A2A server + worker, web renderer at /ui
uv run tiny-harness tui --url http://127.0.0.1:8080
```

See [getting started](https://madarauchiha-314.github.io/tiny-harness/guide/getting-started)
for what happens next and
[deployment](https://madarauchiha-314.github.io/tiny-harness/guide/deployment) for
running it for real: the server must sit behind an authenticating perimeter.

## Install

```sh
pip install tiny_harness
```

## Develop

```sh
uv sync                    # creates .venv/ with every dev tool
uv run pre-commit install  # lint, type-check, unit tests + commit-message hooks
```

See [local development](https://madarauchiha-314.github.io/tiny-harness/guide/local-development)
for the full guide, and the [documentation site](https://madarauchiha-314.github.io/tiny-harness/)
for the tech stack, architecture and decisions.
