TapeAgents
Build, debug, serve, and improve LLM agents through replayable Tape session logs.
- Source repo
- ServiceNow/TapeAgents
- Stars
- ★ 320
- Last updated
- 1y ago
- License
- Apache-2.0
- Primary language
- Python
- FA score
- 51/100 · Major gaps
At a glance
- How it runs
- Works with
- Portable with changes
- Cost
- Free software; you pay for model usage
- Setup effort
- Low · running in minutes
- 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.
- Not a fit if
- Teams wanting a ready-made GUI or hosted service
- Non-coders looking for a ready-made chat bot
- Source review
- 51/100 · Major gaps 1 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 | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| TapeAgents This agent | 51 · Major gaps | Library / SDKFree + model costs | ★ 320 | 1y ago | Python | — |
| CaveAgent | 63 · Some gaps | Library / SDKFree + model costs | ★ 219 | 1mo ago | Python | OpenAI API · Claude API |
| Build Your Own OpenClaw | 38 · Major gaps | CLIFree + model costs | ★ 1.9k | 4mo ago | Python | — |
| AIWG | 77 · Good | CLIFree + model costs | ★ 229 | today | TypeScript | Codex · Claude Code |
How does FollowAgents rate this agent?
Why each dimension lost points
The documentation and code describe interaction through tapes, LLMs, and environment steps, and the agent can be configured to store LLM calls; this makes the main data flow reasonably visible (2). The supplied code excerpt is incomplete and does not show permission isolation, user confirmation, sensitive-data safeguards, or rollback, so least privilege (1), confirmation (0), sensitive-data handling (1), external-effect controls (1), and rollback (1) are weakly evidenced. pyproject lists many dependencies but the packet provides no visible security audit results or complete lock evidence, so dependency security is (1). The README names contacts and acknowledges related projects, providing some attribution evidence (2). Publisher identity is unknown under the prompt and does not change the score.
The README's account of tapes, steps, prompts, and LLM calls is consistent with Agent, Node, Prompt, and event-stream concepts in agent.py, supporting self-consistency (2). pyproject limits supported Python to 3.10–3.12 while tox also lists 3.13; this configuration mismatch merits a deduction, and dependency availability is not established by the static packet, yielding (2) and (1), respectively. AgentStream raises a clear ValueError when no final tape is produced, and an unimplemented Node raises NotImplementedError, supporting failure messages (2); broader recovery behavior is not shown.
The README covers low-level state machines, multi-agent teams, single agents, and development and serving scenarios, with examples for GAIA, data science, finetuning, and WorkArena; audience and scenarios score (2). The framework emphasizes flexibility, but the packet does not clearly state safety boundaries, limitations, or unsuitable scenarios, so capability boundaries score (1). Examples and installation entry points are concrete, supporting trigger precision (2). The Python range mismatch and reliance of examples on external models and environments limit environment-fit evidence (2).
The README organizes the overview, getting started, examples, installation, documentation, and contacts, supporting information architecture (2). It provides pip, optional dependency, and source installation instructions (2). Agent, Node, and Tape naming aligns with the product concepts (2). Examples are extensive, though no FAQ is shown, so examples and FAQ score (2). No systematic known-limitations section is present (1). The repository includes the full Apache-2.0 text and matching metadata (3). pyproject gives a version and the README has release badges, but the packet shows no changelog or explicit version policy (1). Named team contacts provide some maintenance responsibility evidence, but no support or update commitment is shown (2).
The framework uses tapes as structured, replayable session records and describes debugging, streaming, and tape-based optimization; the examples indicate outputs can be inspected and reused, supporting usability and marginal value (2 each). Cost-benefit evidence is limited to feature claims, with no resource costs or comparison to alternatives (1).
Core capabilities are traceable to the README and its example entry points, and the basic agent concepts appear in agent.py, supporting claim traceability (2). README claims align with source concepts, while package metadata, license, and release workflow provide additional corroboration (2). The README and quickstart duplicate content, and some claims, such as lifecycle-wide value, remain product assertions rather than demonstrated outcomes, so fact-inference separation scores (1).
- 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.
- This is a low-confidence review of a static sample; agent.py is only partially supplied, and runtime behavior and tests were not independently verified.
- The Python support range in pyproject conflicts with the tox environment list. Deployments should assess data handling and external-action risks from LLM, tool, and environment integrations; the packet does not show general confirmation or rollback mechanisms.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
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().How are model API credentials configured?
Thanks — we use this to improve the page.