Griptape
TL;DR
Griptape is an Apache-2.0 Python framework from Griptape for building LLM apps from Agents, sequential Pipelines and parallel Workflows of tasks, with swappable drivers for models, memory and storage. Other structures can run as tasks for multi-agent pipelines, and MCP servers plug in as tools. It suits Python teams wanting explicit task graphs.
Key facts
| Type | Framework |
|---|---|
| Languages / SDKs | Python |
| License | Apache-2.0 |
| Pricing model | Unknown |
| Orchestration pattern | Pipeline |
| GitHub stars | 2,581 (as of 2026-09-30) |
| GitHub forks | 261 |
| Last push | 2026-09-28 |
| Latest release | v1.13.0 |
| Repository | griptape-ai/griptape |
| Website | www.griptape.ai |
| Documentation | docs.griptape.ai |
| Last verified | 2026-09-30 |
Key features
- Workflows are DAGs of tasks that run concurrently once their parents finish, with context variables such as parents_output_text. (source)
- Pipelines run tasks in order, with each task able to read the previous task's output. (source)
- StructureRunTask and StructureRunTool call other Agents, Pipelines or Workflows through a Structure Run Driver, either locally or on Griptape Cloud. (source)
- Task Memory stores large or sensitive tool outputs outside the prompt so later tools can query them. (source)
- Conversation Memory keeps chat history, with drivers for local files, Redis, Amazon DynamoDB and Griptape Cloud. (source)
- Prompt Drivers wrap model providers so an app can switch LLM vendors without changing task code. (source)
- MCPTool lets an agent call tools on an MCP server, for example one started over stdio with npx. (source)
- Rulesets attach named lists of rules to agents or tasks to steer output without long prompts. (source)
Architecture and orchestration pattern
Pattern: Pipeline
Everything runs inside a structure. An Agent is a structure with one prompt task and optional tools; a Pipeline runs tasks in list order; a Workflow is a directed acyclic graph in which tasks name their parents or children and run in parallel as soon as their inputs are ready. Tasks read shared context such as parent_output or parents_output_text through Jinja templates.
Multi-agent setups are built by nesting structures. A StructureRunTask (inside a Pipeline or Workflow) or a StructureRunTool (given to an agent) runs another structure through a Structure Run Driver, which can be local or point to a structure deployed on Griptape Cloud. There is no manager agent that plans assignments; the developer lays out the task graph.
Conversation Memory keeps chat history and can be persisted through drivers (local file, Redis, DynamoDB, Griptape Cloud). Task Memory holds large or sensitive tool results off the prompt and lets later tool calls query them, and Meta Memory adds extra metadata to the model context.
Human in the loop
unknown: the framework docs and the repository's docs folder were searched for approval, human-in-the-loop, pause and interrupt. Only generic on_before_run / on_after_run task hooks and event listener drivers are documented; no approval step or pause-and-resume mechanism for a person was found.
Protocols
| Protocol | Support | Note |
|---|---|---|
| MCP | Yes evidence | Client: MCPTool connects to an MCP server (stdio or streamable HTTP) and lets an agent call its tools; it needs the MCP Python SDK 2.x. |
| A2A | Unknown | README and framework docs do not mention A2A; GitHub code search for a2a matched only text inside docs log files. |
| AG-UI | Unknown | README, docs and GitHub code search for ag-ui returned nothing, and Griptape is not in the AG-UI README integration list. |
Best for
- Multi-step LLM jobs where each step and its dependencies should be written out explicitly as a Pipeline or Workflow.
- Fan-out research jobs: parallel prompt tasks with web search and scraping tools feeding one summary task, as in the README example.
- Apps where large or sensitive tool results should stay out of the model prompt (Task Memory).
- Running against local models through the Ollama prompt driver extra.
Not for
- Multi-agent chats where agents decide dynamically who speaks next; Griptape task graphs are laid out by the developer.
- Workflows that need a built-in human approval or pause step; none is documented.
- Teams that need a TypeScript, Java or .NET SDK.
Quickstart
pip install "griptape[all]" -U from griptape.drivers.structure_run.local import LocalStructureRunDriver
from griptape.rules import Rule
from griptape.structures import Agent, Pipeline
from griptape.tasks import StructureRunTask
# The default prompt driver uses OpenAI: export OPENAI_API_KEY first.
def researcher() -> Agent:
return Agent(rules=[Rule("List three plain facts about the topic you are given.")])
def editor() -> Agent:
return Agent(rules=[Rule("Turn notes into one short newsletter paragraph.")])
team = Pipeline(tasks=[
StructureRunTask(structure_run_driver=LocalStructureRunDriver(create_structure=researcher)),
StructureRunTask(("Rewrite these notes: {{ parent_output }}",),
structure_run_driver=LocalStructureRunDriver(create_structure=editor)),
])
team.run("Honeybees")
print(team.output.value)
Common pitfalls
- Requires Python 3.10 or newer.
- The quickstart uses OpenAI and expects
OPENAI_API_KEY; other providers need their driver extra, e.g.griptape[drivers-prompt-anthropic]orgriptape[drivers-prompt-ollama]. uv add griptape/pip install griptapeinstalls only core dependencies; many drivers fail to import until their extra (or[all]) is installed.- Per the migration guide,
MCPToolnow needs the MCP Python SDK 2.x (installgriptape/tools/mcp/requirements.txt), and its WebSocket transport was removed in favour ofstreamable_http. - Templates now render in a Jinja2 sandbox, so private or dunder attributes in task inputs resolve to undefined.
Pros
- Clear separation between sequential Pipelines and parallel DAG Workflows, with task outputs passed through named context variables. (source)
- Task Memory keeps bulky or sensitive tool output away from the LLM prompt. (source)
- Driver abstraction swaps model, memory, vector store and file providers without rewriting task logic. (source)
- The same structures can run locally or on Griptape Cloud through Structure Run Drivers. (source)
- Uses semantic versioning and keeps a migration guide for breaking changes. (source)
Cons
- The migration guide lists breaking changes for the next version, including MCPTool moving to MCP SDK 2.x and dropping its WebSocket transport. (source)
- An open issue reports truncated output from the Anthropic prompt driver, possibly from its default max_tokens of 1000. (source)
- An open issue reports that AnthropicPromptDriver drops stop_reason, so a max_tokens cut-off looks like a complete answer. (source)
- Python only; the framework docs describe no SDK for other languages. (source)
Alternatives
FAQ
Does Griptape support MCP?
Yes, as a client: MCPTool connects an agent to an MCP server over stdio or streamable HTTP and needs the MCP Python SDK 2.x. A2A and AG-UI support were not found.
Is Griptape free?
The framework is Apache-2.0 licensed. The same company runs Griptape Cloud for hosting structures; no public pricing page was found, so its pricing is not stated here.
What is the difference between a Pipeline and a Workflow in Griptape?
A Pipeline runs tasks one after another. A Workflow is a directed acyclic graph where tasks with finished parents run in parallel and can read all parent outputs.
How do multiple agents work together in Griptape?
Each agent is its own structure. A StructureRunTask in a Pipeline or Workflow, or a StructureRunTool given to an agent, runs another structure locally or on Griptape Cloud.
What language is Griptape?
Python 3.10 or newer.
Sources
- Griptape GitHub repository (README)
- Griptape website
- Griptape Cloud product page
- Griptape framework documentation (quickstart and install)
- Workflows
- Pipelines
- Structure Run Drivers
- Task Memory
- Conversation Memory
- Prompt Drivers
- Official tools: MCP
- Rulesets
- Tasks (on_before_run / on_after_run hooks)
- Migration guide
- Issue #1982: Anthropic prompt driver truncating output
- Issue #2333: AnthropicPromptDriver drops stop_reason