TapeAgents
Build, debug, serve, and improve LLM agents through replayable Tape session logs.
- Source repo
- ServiceNow/TapeAgents
- Stars
- ★ 318
- Last updated
- 11mo ago
- License
- Apache-2.0
- Primary language
- Python
- FA score
- 25/100 · Major gaps
At a glance
- Works with
- Portable with changes
- You'll need
- Typical use
- An agent engineer who needs replayable records of user input, model output, and environment observations while building a knowledge-grounded assistant.
- Main limitation
- The example uses
LiteLLM(model_name="gpt-4o-mini"), but the supplied material does not document model credentials, authentication, or configuration for other providers. - Source review
- 25/100 · Major gaps 8 safety controls not found
What does this agent do, and when should you use it?
TapeAgents is a Python framework for the LLM-agent development lifecycle built around a structured, replayable session log called a Tape. An agent processes the current tape and LLM output, appending thought, action, and control-flow steps, while the environment appends observation steps. It supports low-level state machines, high-level multi-agent team configurations, and single agents guided by multiple prompts. The project names TapeAgent studio and TapeBrowser for debugging, response streaming for serving, and Tape-based optimization and LLM fine-tuning as later-stage workflows. Its minimal example combines Agent, Node, DialogTape, LiteLLM, and tape_to_messages to execute a dialogue request and return a final tape.
A developer implements a Node: make_prompt converts a DialogTape into Prompt messages with tape_to_messages, and generate_steps reads an LLMStream and yields steps such as AssistantStep. The application creates an agent with Agent[DialogTape].create(llm, nodes=[MainNode()]), runs a starting tape through agent.run(start_tape).get_final_tape(), and can serialize the resulting tape as JSON. Documented examples include a GAIA agent that plans, searches the web, and uses a code interpreter; an AutoGen-style data_science team; and gsm8k_tuning for fine-tuning a small LLM on GSM-8k math problems. Examples run through uv run -m examples.<MODULE> <ARGS>.
- An agent engineer who needs replayable records of user input, model output, and environment observations while building a knowledge-grounded assistant.
- A team debugging multi-step agent behavior with the TapeAgent studio or TapeBrowser applications named by the project.
- A developer implementing an agent that plans, searches the web, and uses code interpretation for GAIA-style knowledge questions.
- A developer assembling collaborative agents with the AutoGen-style, low-code approach demonstrated by the
data_scienceexample. - A research or engineering team that wants to optimize agent configurations from successful or revised tapes, or fine-tune a small model for GSM-8k math tasks.
How do you install or deploy this agent?
Install the release with pip install tapeagents. For optional converter and fine-tuning dependencies, run pip install 'tapeagents[converters,finetune]'. For a source setup, install uv first and run make setup, which the README identifies as equivalent to uv sync --all-extras. The supplied material does not specify a Python version, model-service credentials, or LiteLLM authentication setup.
How do you use this agent?
Following the documented minimal pattern, initialize LiteLLM(model_name="gpt-4o-mini"), then define a MainNode subclass of Node. Its make_prompt returns Prompt(messages=tape_to_messages(tape)); its generate_steps yields AssistantStep(content=llm_stream.get_text()). Create the agent with Agent[DialogTape].create(llm, nodes=[MainNode()]), supply a DialogTape containing a UserStep, then call agent.run(start_tape).get_final_tape(). Run repository examples with uv run -m examples.<MODULE> <ARGS>; the required model credentials and configuration are not documented in the supplied material.
What are this agent's strengths and limitations?
- The Tape model preserves replayable session records and metadata linking tapes, steps, LLM calls, and agent configurations, supporting continued debugging after prompt or team-structure changes.
- It spans low-level Node/state-machine construction, prompt-guided single agents, and high-level multi-agent team configurations.
- The repository documents a lifecycle that includes debugging, response streaming, Tape optimization, and LLM fine-tuning, with GAIA, WorkArena, and GSM-8k examples.
- The example uses
LiteLLM(model_name="gpt-4o-mini"), but the supplied material does not document model credentials, authentication, or configuration for other providers. - Source setup requires uv, while the full setup uses
uv sync --all-extras; optional converters and fine-tuning also add dependencies. - TapeAgent studio, TapeBrowser, and response streaming are named capabilities, but the supplied material provides no deployment commands, API contract, or operational requirements for them.
How does this agent compare with similar options?
The README names LangGraph, AutoGen, AIWaves Agents, and DSPy as sources of inspiration, but provides no verifiable feature or performance comparison with them.
Key facts side by side with the most closely related agents.
| Agent | Source review | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|
| TapeAgents This agent | 25 · Major gaps | ★ 318 | 11mo ago | Python | — |
| CaveAgent | 62 · Some gaps | ★ 202 | 8d ago | Python | OpenAI API · Claude API |
| Build Your Own OpenClaw | 21 · Major gaps | ★ 1.9k | 2mo ago | Python | — |
| NVIDIA NeMo Agent Toolkit | 65 · Some gaps | ★ 2.6k | today | Python | — |
How does FollowAgents rate this agent?
Why each dimension lost points
Evidence shows no mechanisms for permission management, user confirmation, data flow transparency, sensitive data handling, dependency security, external effects, rollback, or source attribution. README and code do not mention security audits or permission controls, so all trust criteria score 0.
Self-consistency: README and pyproject.toml descriptions are consistent, but no runtime consistency evidence, score 1. Dependency availability: dependency list is complete, but availability not verified, score 1. Failure messages: no documentation of error handling or failure messages, score 0.
Audience and scenarios: README describes multiple use cases (build, debug, serve, optimize), score 2. Capability boundaries: no explicit boundaries or limitations, score 1. Trigger precision: no trigger mechanism, score 0. Environment fit: supports Python 3.10-3.12, but no other environment requirements, score 1.
Information architecture: README is well-structured with TOC and examples, score 2. Install notes: provides pip install and source build steps, score 2. Naming stability: version number exists, but no naming convention, score 1. Examples and FAQ: multiple examples, but no FAQ, score 2. Known limitations: not mentioned, score 0. License: Apache-2.0, score 2. Versioning and changelog: version number but no changelog, score 1. Maintenance responsibility: contacts provided, but no maintenance policy, score 1.
Output usability: example output provided, but not verified, score 1. Marginal value: framework offers unique features (Tape), score 2. Cost-benefit: no performance or cost data, score 1.
Claim traceability: claims in README not supported by evidence, score 1. Cross-source corroboration: paper and docs links, but not verified, score 1. Fact-inference separation: not distinguished, score 0.
- Not found in source: least-privilege scopingGrant only what the task needs: a dedicated account or read-only token, scoped to specific directories and repos.
- Not found in source: confirmation before actingTurn on (or add) a confirmation step before it acts, and try it in a sandbox or test environment before real data.
- Not found in source: data-flow disclosureWatch which external services it contacts (proxy or firewall logs) and keep sensitive data out until you know where it goes.
- Not found in source: sensitive-data handlingUse dedicated, low-privilege, revocable API keys — never production credentials — and keep secrets out of logs.
- Not found in source: dependency securityPin versions and run a dependency audit (npm audit, pip-audit) before installing; prefer running it in a container.
- Not found in source: disclosed external effectsEstablish which external systems it writes to, sends to or changes, and verify with test accounts or repos before production.
- Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
- Not found in source: verifiable attributionInstall from the official repo or registry and check the publisher and URL to avoid look-alike packages.
- No security audit or permission controls provided; assess before deployment.
- Dependency list includes many large libraries, may introduce security risks; consider using pip-audit.
- No rollback mechanism; use with caution in production.
FAQ
What is a Tape?
Can it support multi-agent systems?
data_science example.How do I run the smallest dialogue flow?
Agent[DialogTape].create, then call agent.run(start_tape).get_final_tape().