Plugin architecture
What Is a FlockPlugin?
A plugin is a goal environment adapter: it encodes goals into runnable tasks, verifies observations against goals, and scores outcomes for evolution.
#![allow(unused)]
fn main() {
#[async_trait]
pub trait FlockPlugin: Send + Sync {
fn name(&self) -> &'static str;
fn encode_task(&self, goal: &Goal) -> TaskDescriptor;
async fn verify_goal(&self, goal: &Goal, observation: &serde_json::Value) -> AgentReport;
fn fitness(&self, goal: &Goal, report: &AgentReport) -> FitnessVector;
fn tools(&self) -> Vec<ToolSpec> { vec![] }
}
}
Supporting traits:
GoalVerifier— verify-only surface for RLM loopsCrucibleAdapter— verify + automatic remediation hints (CruciblePluginAdapter)
Coordination hooks (optional, via context at runtime):
PluginContext— blackboard read/write, budget snapshotCoordinationContext— zone list, perception radius,deposit_signal/read_signal
Current plugins
| Plugin | Kind | LLM | Description |
|---|---|---|---|
| gridworld | Simulator | No | Deterministic 5×5 grid; agents navigate to target; boids coordination deposits |
| shell | Executor | No | Bounded subprocess (argv, cwd, timeout); exit code + output verification |
| crucible | Adapter | No | Wraps any FlockPlugin with remediation on failure |
Lifecycle
register → encode → scheduler run → verify → episode snapshot → evolve fitness
- Register —
PluginRegistry::builtin()loads built-ins + manifest TOML - Encode —
encode_task(goal)produces initialTaskDescriptorpayload - Run — scheduler enqueues in plugin primary zone; host executes; observations flow back
- Verify —
verify_goalreturnsAgentReportwithNextAction - Episode — runtime writes
.flock/episodes/<goal-id>.json - Evolve —
flock evolvereads episodes; plugin name inenvironment_fingerprintseeds archive lookup
Plugin manifest (plugin.toml)
name = "gridworld"
description = "Deterministic 5x5 grid navigation simulator"
version = "0.1.0"
[zones]
primary = "grid"
default = ["grid", "goal"]
[blackboard]
slots = ["state", "last_observation"]
Manifests live at crates/flock-plugins/<name>/plugin.toml. Discovery scans that tree at registry init.
Add a plugin in under 10 minutes
flock plugin new myplugin
flock plugin list
flock run --goal "your goal" --plugin myplugin
Installed plugins register automatically via plugins.toml + build.rs — no registry.rs edit.
Extension points
| Extension | Location |
|---|---|
| Plugins | flock-plugin-api, flock-plugins |
| RunHost backends | flock-runtime::RunHost, flock-rah, flock-herdr |
| Evolve hooks | flock-evolve — GepaHook, EpisodeLogProposer |
| Governance | flock-governance — VERIFICATION_MANIFEST |
| Multiplexer | flock-multiplexer — pane deposits → observations |