Current collected state Current
Observed since 20 Oct, 22:09 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Ergonomic agent harness on top of agentharness-core: Agent, @tool, and testable, replayable runs. Imports as `agentharness`.
The ergonomic, batteries-included layer over agentharness-core.
from agentharness import Agent, tool
@tool
def add(a: int, b: int) -> str:
"""Add two numbers."""
return str(a + b)
agent = Agent(model=my_model, tools=[add], system="You are helpful.")
run = agent.run("What is 2 + 3?")
print(run.result) # "2 + 3 = 5."
run.trace.save("run.jsonl") # the whole run is recorded and replayable
@tool turns a typed Python function into a tool — the JSON schema is generated from
type hints, no hand-written schemas.Agent wraps a model + tools + optional system prompt. run() executes to completion;
stream() yields live events; arun()/astream() are the async variants.from agentharness_core import replay).Test agents like ordinary code, with no network:
from agentharness.testing import FakeModel, assert_used_tool, assert_answer
agent = Agent(model=FakeModel([...]), tools=[add])
run = agent.run("What is 2 + 3?")
assert_used_tool(run, "add")
assert_answer(run, "2 + 3 = 5.")
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 25 Jun 2026 | 1 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 22:09 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:d64488d9f3912b71fa75adf9094125479677d9fa694f4c910edbf0b199008a28