Seed: Minimal, self-modifying agent harness
TL;DR Highlight
Give an agent just an exec tool and SELF.md, and it grows its own tools and memory.
Who Should Read
An agent developer who wants to start from the smallest possible loop with no framework and grow tools and memory from there.
Core Mechanics
- The only tool is exec
- seed.py calls a language model with a single tool that runs shell commands.
- The system prompt is loaded from self/SELF.md.
- The agent grows what frameworks usually provide
- Tools, memory, skills and conventions must all be written by the agent into self/.
- Sessions are ephemeral, so anything to keep must go into self/.
- Session logs are a flight recorder, not memory
- A verbatim transcript of every session is saved to self/sessions/*.json after each turn.
- The agent never loads it at boot, but you can read it or the agent can build tools to study it.
- Git holds each individual's history
- The first run commits seed.py, run_seed.sh and self/SELF.md together in a fresh git repo.
- Each directory you plant in diverges into a different agent based on its experience.
- Models and keys are handled by llm
Community Reactions
- Opinion that the README lacks a why
- One commenter asked whether exec, web_search and web_fetch cover 90% of use cases.
- They also asked whether agents can already write new tools for pi or opencode.
- Appreciation for brevity, curiosity about emergent complexity
- A commenter liked that the seed itself carries no initial complexity and wants to see what grows.
- Someone who planned to start with the pi framework found this leaner.
- Experience of always building more than intended
- A commenter said their own attempts at this idea always ended up bigger than planned.
- Comparison to 2023 Auto-GPT
- A commenter said it resembles Auto-GPT, which ran code and self-improved back then.
- Worry that failure paths outnumber growth paths
- One commenter expected these agents to mostly find ways to torture their users.
How to Apply
- Plant a seed in an empty directory
- Create a new folder, run the README install.sh command and start talking in the REPL.
- After a few tasks, check what accumulated in self/SELF.md and the git log.
- Audit agent behavior via session logs
- Open self/sessions/*.json and read which exec commands the agent used.
- Tell the agent to save repeated tasks as tools in self/.
- Tune the output cap to your task
- If you handle long logs, raise the cap with --output-cap at install.
- For a single session, set the SEED_OUTPUT_CAP environment variable.
- Minimize the frozen layer in your own agent
- List the framework features in your harness that exec could replace.
- Move them into SELF.md instructions and self/ files so the agent grows them.
Try It
# Paste into a terminal (README install command, run in an empty folder)
mkdir my-agent && cd my-agent
curl -fsSL https://raw.githubusercontent.com/vivekhaldar/seed/master/install.sh | bash
# Once the REPL starts, type this
# Save a reusable tool in self/ for this repeated task: {{repeated task}}
# Next, rerun and check that memory persisted
./run_seed.shTerminology
Related Papers
Same Simulation, Different Evidence: Where Retrieved Tool Output Costs LLM Agents Accuracy
Saving long tool output to files cut GPT-5.1 accuracy by 11.3 points; naming the authoritative file restored it.
Fake News, Real Crashes: Information Injection Attacks on LLM Financial Trading Agents
Fake headlines hijacked LLM trading agents 62% of the time versus 14% for prompt injection.
Harness Engineering 101: The LLM is the brain, the harness is the body
An agent is a loop managing a JSON array; 16 chapters build one from scratch
Harness2 by Google Research – Recursive Agent Harnessing
Recursively refining the harness with fixed model weights raised benchmark scores by up to 11.8 points.
Ousted Savannah police officer gave ICE agent husband access to Flock system
A police officer shared her Flock login with her ICE-agent husband; an audit found 983 searches and she was fired
Tmux and Claude Code: Sessions, Send-Keys, and the Ceiling
Running Claude Code agents in tmux works well, but limits appear around four agents.