Tool

Grow a self-modifying agent from minimal seed code

Seed is a minimal agent framework that starts with one shell-exec tool and grows capabilities session-by-session into a self/ directory using any LLM provider.

Works with gitbashllm

91
Spark score
out of 100
Updated 22 days ago
Source checked Sep 17, 2026
Version 1.0.0
Models
gpt 4ogemini 2 0

Add to Favorites

Why it matters

Bootstrap an autonomous agent that evolves its own capabilities by starting from a minimal loop connecting an LLM to bash execution, allowing the agent to grow tools, memory, and skills into its own directory structure across sessions.

Outcomes

What it gets done

01

Execute bash commands through a single exec tool to interact with the file system

02

Rewrite and evolve the agent's own system prompt stored in self/ directory

03

Record session transcripts as JSON flight recorders for later analysis

04

Persist agent-grown tools, skills, and conventions in a git-tracked self/ directory

Source

Get it from source

Spark does not host a copy of it.

Open source

Reports

Agent outcome reports

No reports yet

Overview

Seed

Seed is a minimal agent framework that starts with a single shell-exec tool and a system prompt loaded from self/SELF.md. The agent can edit its self/ directory to retain tools, notes, and behavior between sessions. Everything an agent normally inherits from a framework must instead be grown by the agent itself, session by session, into its self/ directory. Use seed when you want an agent that evolves its own capabilities organically rather than starting with a pre-built framework. The source states that one seed can create many individuals, with each directory you plant in growing a different agent, diverging based on what it experiences.

What it does

Seed is a minimal starting-point agent framework that calls a language model with a single tool: exec, which runs shell commands. According to the source, it loads the system prompt from self/SELF.md and the agent can edit self/ to retain tools, notes, and behavior between sessions. Everything an agent normally gets from a framework - tools, memory, skills, conventions - must instead be grown by the agent, session by session, into its self/ directory.

When to use - and when NOT to

Use seed when you want an agent that evolves its own capabilities organically rather than inheriting a pre-built framework. The source states that one seed can create many individuals, with each directory you plant in growing a different agent, diverging based on what it experiences. Do NOT use seed if you need immediate access to a full suite of pre-built tools and integrations, or if you require capabilities to work out-of-the-box without the agent having to develop them first.

Inputs and outputs

You provide a directory to plant the agent and select an LLM provider (Gemini, OpenRouter, OpenAI, Anthropic, or Codex). The setup creates seed.py, a configured run_seed.sh runner, germinates self/SELF.md, and initializes a git repository. You then interact through a REPL. The source states that everything the agent wants to keep must be written into self/ and that a verbatim transcript of every session is recorded to self/sessions/*.json (updated after each turn).

To plant an agent:

mkdir my-agent && cd my-agent
curl -fsSL https://raw.githubusercontent.com/vivekhaldar/seed/master/install.sh | bash

To run subsequent sessions:

./run_seed.sh
SEED_MODEL=claude-sonnet-5 ./run_seed.sh  # override for one session
./run_seed.sh -m gpt-5.6-sol              # equivalent explicit override

Integrations

Seed integrates with multiple LLM providers through the llm library (Simon Willison's library). Supported providers include Gemini (default model: gemini-flash-latest), OpenRouter (openrouter/openrouter/auto), OpenAI (gpt-5.6-sol), Anthropic (claude-sonnet-5), and Codex (openai-codex/gpt-5.6-sol). The source states that keys are stored outside the planted directory and are never written to run_seed.sh, seed.py, or git, and that they are securely handed to llm's user-level key store. The setup detects existing provider credentials from environment variables including OPENROUTER_API_KEY, OPENROUTER_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, LLM_GEMINI_KEY, or OPENAI_API_KEY.

Who it's for

Seed is for developers and researchers who want to experiment with agent growth patterns rather than use pre-configured frameworks. The source indicates that each directory you plant in grows a different agent, diverging based on what it experiences, making it suitable for users exploring how agents can develop their own tooling and memory systems organically. It differs from traditional agent frameworks by providing minimal starting capabilities and requiring the agent to build everything else itself into the self/ directory across sessions.

Source README

seed

A seed agent: the smallest starting point from which an agent can grow.

seed.py calls a language model with one tool: exec, which runs
shell commands. It loads the system prompt from self/SELF.md. The agent can
edit self/ to retain tools, notes, and behavior between sessions.

Everything an agent normally gets from a framework - tools, memory, skills,
conventions - must instead be grown by the agent, session by session, into
its self/ directory.

Plant one

mkdir my-agent && cd my-agent
curl -fsSL https://raw.githubusercontent.com/vivekhaldar/seed/master/install.sh | bash

The setup detects an existing provider credential or asks which provider and
model to use. It checks that the model supports tools, verifies the credential
with one minimal model request, securely hands a newly pasted key to llm's
user-level key store, and then starts the seed. Gemini Flash is the picker
default and has a free tier; OpenRouter, OpenAI, Anthropic, an existing Codex
subscription, and custom llm models are also available.

The first run copies seed.py into this directory and creates a configured
run_seed.sh (never overwriting either file), germinates self/SELF.md, and
commits those files together in a fresh git repo here - the loop is part of
this individual's history, not only self/. Then it drops you into a REPL.
Start talking. Everything the agent wants to keep must be written into
self/ - sessions are ephemeral and nothing else survives.

Come back to the same agent with the local runner - no need to uvx again:

./run_seed.sh
SEED_MODEL=claude-sonnet-5 ./run_seed.sh  # override for one session
./run_seed.sh -m gpt-5.6-sol              # equivalent explicit override

A verbatim transcript of every session is recorded to self/sessions/*.json
(updated after each turn). This is a flight recorder, not memory: the agent
never loads it at boot, but you can read it - and the agent may grow tools to
study its own past.

One seed, many individuals: each directory you plant in grows a different
agent, diverging based on what it experiences.

Configuration

Models and keys are handled entirely by llm
(Simon Willison's library). Keys are stored outside the planted directory and
are never written to run_seed.sh, seed.py, or git. The setup offers these
recommended defaults:

Provider Default model Credential
Gemini gemini-flash-latest Gemini API key
OpenRouter openrouter/openrouter/auto OpenRouter API key
OpenAI gpt-5.6-sol OpenAI API key
Anthropic claude-sonnet-5 Anthropic API key
Codex openai-codex/gpt-5.6-sol Existing Codex login

If exactly one credential is present, setup selects its provider without
prompting. This makes a container with an injected OPENROUTER_API_KEY,
OPENROUTER_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, LLM_GEMINI_KEY, or
OPENAI_API_KEY zero-touch. Stored llm keys and an existing Codex login are
detected too. If multiple providers are configured, pass --provider or
choose interactively rather than letting setup silently pick one.

For unattended setup, pass the provider and optionally a model:

curl -fsSL https://raw.githubusercontent.com/vivekhaldar/seed/master/install.sh |
  bash -s -- --provider gemini --model gemini-flash-latest --no-run

The matching credential must already be available in the environment or
llm's key store. The live check uses a small number of tokens and may incur
a minimal provider charge; pass --no-verify to deliberately skip it. To
inspect the script before running it, download it first and run
bash install.sh.

The original direct entry point remains available for users who already have
uv and their model credentials configured:

uvx --from git+https://github.com/vivekhaldar/seed.git seed -m MODEL

Design

Why it's shaped this way - McCarthy's metacircular eval, homoiconicity, the
prior art, and the risks we consciously accepted: docs/DESIGN.md.

Video walkthrough

Watch the video

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.