Publish to registry.feral.sh
Ship once. Install everywhere.
Eight categories. One CLI. Ed25519-signed bundles verified on every install. Free, open source, no gatekeepers.
Step 1
Authenticate
feral publisher loginOpens GitHub OAuth. Captures your publisher token under ~/.feral/publisher.token.
Step 2
Register your key
feral publisher registerGenerates an Ed25519 keypair locally, uploads the public half. Private key never leaves your machine.
Step 3
Publish
feral publish --kind <kind> <dir>Validates the manifest, builds + signs the tarball, uploads. Prints the install command.
All eight categories
Every bundle is a tarball with manifest.json at the root. Required fields per kind:
Skill
skill
Python tool the agent calls. Drop in a manifest + impl.py and ship.
Required manifest keys:
skill_id, name, versionferal publish --skill ./my-skill/
Hardware Daemon
daemon
HUP-speaking process for a physical device (wristband, thermostat, camera, …).
Required manifest keys:
node_id, capabilities, name, versionferal publish --daemon ./my-daemon/
MCP Server
mcp
Model Context Protocol endpoint. FERAL spawns + talks to it.
Required manifest keys:
mcp_command, name, versionferal publish --mcp ./my-mcp-server/
Channel Plugin
channel
Messaging surface (Signal, WhatsApp, Matrix, custom bot variants).
Required manifest keys:
channel_id, name, versionferal publish --channel ./my-channel/
LLM Provider
provider
Alternate provider: Groq, Bedrock, Ollama, Together, …
Required manifest keys:
provider_id, models, name, versionferal publish --provider ./my-provider/
Memory Backend
memory
Replacement for the default memory store. Chroma, Qdrant, Honcho, …
Required manifest keys:
memory_id, interface, name, versionferal publish --memory ./my-memory/
Workflow Pack
workflow
Multi-step TaskFlow template (PR triage, standup composer, …).
Required manifest keys:
steps, name, versionferal publish --workflow ./my-workflow/
Agent Persona
agent
Specialist system prompt + narrow tool list the Mitosis engine spawns.
Required manifest keys:
system_prompt, name, versionferal publish --agent ./my-agent/
Trust model
- Every bundle is signed with your Ed25519 private key before upload. The registry stores the signature alongside the blob.
- On
feral install, the client re-verifies SHA-256 and the Ed25519 signature before extracting anything. - Publishers are GitHub-authenticated; your registry handle is your GitHub login. Repeat-offender accounts can be blocked.
- Verified badges are earned, not bought: they're on the
FEATURED_PUBLISHERSallowlist maintained by the FERAL team.