Skip to main content

The one-sentence pitch

Every other agent hits a wall. FERAL drafts a script, sandboxes it, runs it, and — if you let it — promotes it to a permanent skill. In one turn.

What it actually does

When a user asks FERAL to do something no existing skill covers, the orchestrator catches the capability gap and calls _on_capability_gap(). What happens next depends on your autonomy tier:

Worked example: CSV → JSON

Next time you ask anything about CSV grouping, the skill is already there.

How the draft is trusted

Generated code passes through three gates before it’s ever executed:
  1. AST safety check — no os.system, no arbitrary exec, no network to unknown hosts. Implemented in feral-core/agents/tool_genesis.py.
  2. Docker sandbox — scripts run in an isolated container with a read-only snapshot of the workspace and no network unless the manifest declares it.
  3. User autonomy tierstrict never promotes; hybrid requires an explicit approval click; loose is for users who want maximum velocity.

Publishing a promoted skill back to the registry

Once auto-promoted, a skill lives under ~/.feral/skills/generated/<id>/. Publish it to registry.feral.sh with one command so others can install it:
That’s the loop: idea → draft → verified → installed → shared.

File map

Why no other agent has this

The closest thing other frameworks offer is “write a shell command and run it.” That’s a one-shot. FERAL’s Tool Genesis is:
  • Persistent — the new skill lives across sessions.
  • Typed — it shows up in the LLM’s tool catalog with a real schema the model can call by name next turn.
  • Publishable — one command ships it to the public registry for others to install.
  • Tiered — autonomy levels let you dial the risk/velocity tradeoff.
It’s the difference between an agent that runs code and an agent that evolves its own capability surface.