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:
| Tier | Behavior |
|---|---|
strict | Write a throwaway Python/Bash/Node script via workspace_scripts__run, execute in Docker sandbox, return stdout. Nothing persists. |
hybrid | Draft a skill proposal (code + tests + manifest). Surface it in Settings → Proposed Skills. You approve or reject. |
loose | Draft, sandbox-verify, auto-promote to a permanent skill, and use it in the same turn. No approval needed. |
Worked example: CSV → JSON
How the draft is trusted
Generated code passes through three gates before it’s ever executed:- AST safety check — no
os.system, no arbitraryexec, no network to unknown hosts. Implemented inferal-core/agents/tool_genesis.py. - Docker sandbox — scripts run in an isolated container with a read-only snapshot of the workspace and no network unless the manifest declares it.
- User autonomy tier —
strictnever promotes;hybridrequires an explicit approval click;looseis 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:
File map
| Concept | File |
|---|---|
| Gap detection + dispatch | feral-core/agents/orchestrator.py::_on_capability_gap |
| Script drafting + AST gate | feral-core/agents/tool_genesis.py |
| Workspace-scoped exec | feral-core/skills/impl/workspace_scripts.py |
| Skill promotion + hot reload | feral-core/skills/registry.py::reload_skill |
| Proposed Skills UI | feral-client/src/pages/Settings.jsx |
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.
