Releases: acnlabs/fly-harness
Release list
v0.5.6
Patch pin of the harness. This tag is v0.5.6 on main (96f2a1c, merge of PR #31). Kernel unchanged from v0.5.5.
fly-harness sits around a biological sim: obs → encode → Model.tick → decode → action. Start with the shipped 24-neuron fixture. Same loop if you later plug in a sim you run and swap that Model.
What 0.5.6 ships
Docs and public copy since v0.5.5 (already on main):
- Slim public English + Chinese READMEs (front door, not a walkthrough dump)
- In-repo walking clip (
docs/media/visual-demo/fly-walking.mp4) as usage, not a kernel feature, not FlyGym’s product video - Identity first:
obs → encode → Model.tick → decode → action - Fixture-first start:
pip install fly-harness+fly-harness-checkis enough; a running sim is not an install prerequisite docs/usage.md/docs/docking.mdopenings and example CLI banners aligned with that identity- Unchanged public step —
FlyHarness.step(obs) -> action - Microkernel unchanged —
BrainState, Encoder / Decoder, sparseload_connectome,ModelBackendport (numpy/scipy only)
What this is not
- Not a kernel change (patch bump only)
- Not
Formula: Agent = Model + harnessas a slogan - Not a hosted 166k brain or Google-hosted sim
- Not the FlyWire website
- Not a marketplace of models
- Not a consciousness or upload claim
v0.5.5
Patch pin of the harness (not a fly-brain upload). This tag is v0.5.5 on main (0520834, merge of PR #22). Kernel unchanged from v0.5.4. Formula: Agent = Model + harness. The harness does not dock a specific model.
What 0.5.5 ships
This patch retags PR #21 for PyPI. Kernel unchanged:
- Same-loop swap-Model example —
examples/swap_brain.pykeeps the FlyGym body andobs → FlyHarness.step → action; only the Model changes (toy in-process LIF vs listed idflybrain.malecns). Missing extra or MaleCNS files skips B honestly (never a fake 166,700 brain, never a download). Does not claim better walking than FlyGym controllers - CPG-layer usage note — FlyGym / CPG are usage, not the harness kernel.
FlyHarness.stepis the brain-level slot (encode →ModelBackend.tick→ decode), above the body's motor CPG - Unchanged public step —
FlyHarness.step(obs) -> actionis unchanged - Microkernel unchanged —
BrainState, Encoder / Decoder, sparseload_connectome,ModelBackendport (numpy/scipy only)
What this is not
- Not a kernel change (patch bump only)
- Not docking a specific model as a core harness feature
- Not a hosted 166k brain or Google-hosted sim
- Not the FlyWire website
- Not a marketplace of models
- Not a consciousness or upload claim
v0.5.4
Patch pin of the harness (not a fly-brain upload). This tag is v0.5.4 on main (f34467a, merge of PR #20). Formula: Agent = Model + harness. The harness does not dock a specific model.
What 0.5.4 ships
This patch retags PR #19 for PyPI, and adds project.urls. FlyHarness.step(obs) -> action is unchanged.
- Optional
snapshot()/restore(...)— sameModelBackendfamily asreset. A harness loop can checkpoint without knowing the engine. Missing mapping raisesSnapshotUnsupportedError(not a silent no-op). See docs/docking.md - Toy in-process LIF — implements the port via existing
BrainState.save/BrainState.load(fixture JSON, not a universal Model format) - Direct / HTTP / biorouter — forward only when a mapping already exists. HTTP stays
POST /tick,POST /reset,GET /status. No invented/snapshotwire format. Core does not invent flybrain / c302 / NEURON checkpoint formats - PyPI
project.urls— Source, Documentation (docs/docking.md), Changelog (Releases)
What this is not
- Not a fourth usage scenario and not
fly-harness-check --save - Not a chat shell, web UI, or plugin marketplace
- Not docking a specific model as a core harness feature
- Not
fly-harness[c302]/fly-harness[openworm] - Not a hosted OpenWorm / c302 API
- Not a Google-hosted sim or the FlyWire website
- Not a consciousness or upload claim
v0.5.3
Patch pin of the harness (not a fly-brain upload). This tag is v0.5.3 on main (2ad4a15, merge of PR #18). Kernel unchanged from v0.5.2. Formula: Agent = Model + harness. The harness does not dock a specific model.
What 0.5.3 ships
This patch retags PR #17 for PyPI. Kernel unchanged. pip 0.5.2 did not include fly-harness-check; 0.5.3 does.
fly-harness-check— alsopython -m fly_harness/python -m fly_harness.check. Afterpip install fly-harness, prove the kernel is alive. Default is the toy in-process LIF (no extras). Printsmodel_id,n_neurons,timestamp, and one obs→action step. Fixture id:fly-harness.in-process-lif(24 neurons)- Three-scenario usage walkthrough — README + docs/usage.md:
- Fixture reflex — just installed, no extras
- Direct
ModelBackend— wrap a sim you already run - biorouter ids
flybrain.malecns/c302.celegans— usage (deploy a running sim + list an id), not a harness feature
- Unchanged public step —
FlyHarness.step(obs) -> actionis unchanged - Microkernel unchanged —
BrainState, Encoder / Decoder, sparseload_connectome,ModelBackendport (numpy/scipy only)
What this is not
- Not a kernel change (patch bump only)
- Not a chat shell, web UI, or plugin marketplace
- Not docking a specific model as a core harness feature
- Not
fly-harness[c302]/fly-harness[openworm] - Not a hosted OpenWorm / c302 API
- Not a Google-hosted sim or the FlyWire website
- Not a consciousness or upload claim
v0.5.2
Patch pin of the harness (not a fly-brain upload). This tag is v0.5.2 on main (bb8e244, merge of PR #16). Kernel unchanged from v0.5.1. Formula: Agent = Model + harness. The harness does not dock a specific model.
What 0.5.2 ships
This patch retags PR #15 for PyPI. Kernel unchanged:
- biorouter lists
c302.celegans— OpenRouter-shaped model id for a deployed worm sim. Switching species is deploy a running sim + list an id (usage, not a harness feature) - FakeC302 in CI — 302 hermaphrodite neurons so tests can select the id without NEURON, OpenWorm Docker, or a connectome download
- No extra — not
fly-harness[c302]/fly-harness[openworm]. Not a new whole-brain PyPI package. Not a hosted OpenWorm API - Unchanged public step —
FlyHarness.step(obs) -> actionis unchanged - Microkernel unchanged —
BrainState, Encoder / Decoder, sparseload_connectome,ModelBackendport (numpy/scipy only)
What this is not
- Not a kernel change (patch bump only)
- Not docking a specific model as a core harness feature
- Not a hosted OpenWorm / c302 API
- Not OpenWorm Docker in CI
- Not a Google-hosted sim or the FlyWire website
- Not a marketplace of models
- Not a consciousness or upload claim
v0.5.1
Patch pin of the harness (not a fly-brain upload). This tag is v0.5.1 on main (a1fecef, merge of PR #14). Kernel unchanged from v0.5.0. Formula: Agent = Model + harness. The harness does not dock a specific model.
What 0.5.1 ships
These landed on main after v0.5.0 (PRs #11–#13); this patch only retags them for PyPI:
- biorouter → flybrain.malecns example (PR #11) —
examples/biorouter_flybrain_loop.pydrivesFlyHarness.stepthrough local biorouter to the third-partyflybrain.malecnsprovider id. Default CI path usesFakeFlyBrain(32 neurons) - body-loop example (PR #12) —
examples/body_loop.pycomposes FlyGym body adapter + biorouter + flybrain extra through the sameFlyHarness.stepcontract - Docking guide (PR #13) —
docs/docking.mdis the third-partyModelBackendusage guide (how to use the harness with an external model). Wiring flybrain / FlyGym is using the harness, not a harness feature - Unchanged public step —
FlyHarness.step(obs) -> actionis unchanged - Microkernel unchanged —
BrainState, Encoder / Decoder, sparseload_connectome,ModelBackendport (numpy/scipy only)
What this is not
- Not a kernel change (patch bump only)
- Not docking a specific model as a core harness feature
- Not a Google-hosted sim or the FlyWire website
- Not ~160k "parameters" (MaleCNS v1.0 is 166,700 neurons)
- Not a marketplace of models
- Not a 140k/166k whole-brain runtime in the core
- Not caveclient / live FlyWire
- Not a consciousness or upload claim
v0.5.0
Sparse neural harness (not a fly-brain upload). This tag is the v0.5.0 pin on main (edcabe6, merge of PR #10). It does not ship a 140k FlyWire or ~166k MaleCNS connectome. Formula: Agent = Model + harness. The harness does not dock a specific model.
What 0.5.0 ships
- Third-party flybrain Model (usage, not a harness feature) — optional extra
fly-harness[flybrain]is an adapter so biorouter / the example can talk toflybrain(MaleCNS v1.0 LIF, 166,700 neurons, not 160k "parameters"). Core stays a model-agnosticModelBackendport;FlyBrainBackendis not on the default public core surface - biorouter lists
flybrain.malecns— OpenRouter-shaped provider id, registered only when the extra and on-disk MaleCNS files are already present. Missing / unknown → skip or HTTP 404. Never downloads MaleCNS in CI - Example —
examples/flybrain_loop.pyusesFlyHarness.step. Default is in-processFakeFlyBrain(32 neurons).--realonly if extra + data are already on disk - Unchanged public step —
FlyHarness.step(obs) -> actionis unchanged - Microkernel —
BrainState, Encoder / Decoder, sparseload_connectome,ModelBackendport (numpy/scipy only) - Earlier extras unchanged — biorouter, FlyGym body adapter, and FastMCP stdio remain extras, not core
What this is not
- Not docking a specific model as a core harness feature
- Not a Google-hosted sim or the FlyWire website
- Not ~160k "parameters" (MaleCNS v1.0 is 166,700 neurons)
- Not a marketplace of models
- Not a 140k/166k whole-brain runtime in the core
- Not caveclient / live FlyWire
- Not a consciousness or upload claim
v0.4.0
Sparse neural harness (not a fly-brain upload). This tag is the v0.4.0 pin on main (705c0ff, merge of PR #7). It does not ship a 140k FlyWire or ~166k MaleCNS connectome.
What 0.4.0 ships
- Optional biorouter extra —
fly-harness[biorouter]; local stdlib HTTP process, not FastAPI - CLI
biorouter— alsopython -m fly_harness.router; binds127.0.0.1by default - Same idea, different substrate — OpenRouter routes existing LLMs; biorouter routes existing deployed biological simulation models (
modelid) - Not a marketplace — local port/process only; not OpenRouter-the-company, not billing, not a hosted cloud gateway
- Unchanged public step —
FlyHarness.step(obs) -> actionis unchanged - Microkernel —
BrainState, Encoder / Decoder, sparseload_connectome,ModelBackendport (numpy/scipy only) - Earlier extras unchanged — FlyGym body adapter and FastMCP stdio remain extras, not core
What this is not
- Not a marketplace of models
- Not the harness itself (biorouter is an extra)
- Not FlyWire dumps / a 140k/166k whole-brain runtime
- Not caveclient / live FlyWire
- Not a consciousness or upload claim
v0.3.0
Sparse neural harness (not a fly-brain upload). This tag is the v0.3.0 pin on main (9f791af, merge of PR #6). It does not ship a 140k FlyWire or ~166k MaleCNS connectome.
What 0.3.0 ships
- ModelBackend port — swappable bio-sim docking; a port, not a marketplace
- Default in-process LIF — in-process LIF/rate dynamics remain the default backend
- Direct vendor docking — attach a running vendor sim through the same contract
- In-process OpenRouter-shaped router — model id shaped like OpenRouter, still in-process (not a hosted marketplace)
- Unchanged public step —
FlyHarness.step(obs) -> actionis unchanged;BrainStateis not aModelBackend - Microkernel —
BrainState, Encoder / Decoder, sparseload_connectome(numpy/scipy only) - Optional extras unchanged — FlyGym body adapter and FastMCP stdio remain extras, not core
What this is not
- Not a marketplace of models
- Not a 140k/166k whole-brain runtime
- Not caveclient / live FlyWire
- Not a consciousness or upload claim
v0.2.0
Sparse neural harness (not a fly-brain upload). This tag is the v0.2.0 pin on main (5affd59). It does not ship a 140k FlyWire or ~166k MaleCNS connectome.
What 0.2.0 ships
- Microkernel —
BrainState,FlyHarness.step(obs) -> action,Encoder/Decoder(numpy/scipy only) - Sparse
load_connectome— local NPZ/CSV edge lists into a circuit subset (memory bounded by the subset) - Optional FlyGym extra — body adapter (
fly-harness[flygym]); not the core product - Optional MCP extra — FastMCP stdio wrapping
FlyHarness.step(fly-harness[mcp]) - Composed example — MCP + FlyGym through the 24-neuron reflex fixture
- GitHub Actions —
pip install -e ".[dev]"andpyteston PRs andmain(no MuJoCo/FlyGym/MCP extras required)
What this is not
- Not a 140k/166k whole-brain runtime
- Not caveclient / live FlyWire
- Not a consciousness or upload claim