experiment / experimental

Seedling.

Getting a system to improve itself once, under supervision, is the hard part. Seedling tries that first step without letting it cheat.

All experiments ->
Status:
experimental (Experiment)
Built with:
Python, FastAPI, Playwright
Licence:
Apache-2.0

What it is

Seedling is a small, local, supervised self-improvement loop: two coding agents, two vision-model operators and a supervisor.

ZenCode is a deliberately tiny coding agent with three tools. The operators never get a shell or an API into it: they see a screenshot, pick one action, and Playwright performs it. The supervisor quarantines everything the agents ship and applies it only when a person presses the button.

The thesis

A system that can improve itself once, under supervision, is most of the way to one that can keep doing it.

The UI is the only interface, so the agent being improved has to stay legible to something that can only look at it. There are exactly two operators and no way to spawn a third, and improvements target source code, never the running instance. Everything that leaves a sandbox is treated as hostile until a person approves it.

What works today

  • Containment: shell commands run in one-shot Docker or Podman containers with no network, a read-only root, all capabilities dropped and CPU, memory and process caps. With no container runtime, commands are refused.
  • File tools reject absolute paths and traversal outside the sandbox, and child processes get an allowlisted environment.
  • Update archives are checked, hashed and parked in quarantine. Nothing applies automatically.
  • The supervisor dashboard and ZenCode, each with a demo mode labelled as sample data.
  • One measured cycle: ZenCode, running Qwen3-8B locally, rewrote the operator's action parser in its sandbox. Its score on a fixed corpus of 43 model replies went from 23 to 31, and it was applied through the supervisor after quarantine.

Limitations and scope

  • In that cycle ZenCode was driven by a script and by follow-up messages a person chose, not by the vision operator. A cycle where the vision operator drives ZenCode has not been shown; the operator loop is observational.
  • Applying an artifact copies it over the code in place, with no backup and no automatic rollback.
  • Only the action parser is tested before a person applies an artifact. No score gates Apply.
  • It needs Python 3.12+, Docker or Podman, a local OpenAI-compatible model server, a desktop session and fixed ports.
  • The optional desktop shell has not been verified for this release.

Source

The code is public. Everything on this page comes from Seedling's own README; the README is the place to check what has changed since.