Layers
Reusable pieces of an agent. Same idea as Docker, except order only matters for conflicts and merges. Each layer caches on its own.
SlopKit Rig
rig buildrig pullrig attachcurl -fsSL https://rig.slopkit.dev/install.sh | bash
Each agent is composed from multiple components called "layers". You can mix them freely, re-using different parts of their setup but keeping differences where it matters.
OpenCode or Claude Code, generated from the same composed agent. Add a harness by adding a module.
You can pick any nix package, so your agents always have their favourite programs available.
Composed AGENTS.md. Later layers override. Some paths merge.
Native. A local path or a pinned GitHub repo. Installed once. Each harness gets its own links.
Extra files in the agent home. Later layers add or replace them.
Servers start inside the same root as the agent.
SecretSpec scopes. Injected at process start. Not written into the image.
Default deny. Layers grant domains, CIDRs, write paths. No grant, no access.
Each layer can pull many others. Everything is composable and easily reused.
Commands at session.start and similar. Every harness maps the same ids.
Run locally on your machine, share with colleagues, or deploy to a remote runtime.
The agent only works on this laptop
Publish the image. Other people pull the same layers you built.
Secrets landed in the image
Layers declare SecretSpec keys. Tokens are injected at process start.
The agent can hit the whole network
Default deny. Layers grant domains, CIDRs, and write paths.
Prompt and tools drifted between machines
Composed AGENTS.md and the layer list travel with the image.
And your remote rig is ready.
All layers are merged into a single filesystem image and agent configuration.
rig build agency-tester
You can push your built image for other people or runtimes to use.
rig push repo.slopkit.dev/agency-tester:latest
You are in the agent's environment. Each session gets its own root and sandbox.
rig attach agency-tester
Pull a published agent on Getting started. Session flags, layer fields, and webhook routes are in Docs.