Skip to content

Releases: acnlabs/fly-harness

v0.5.6

Choose a tag to compare

@cursor cursor released this 20 Sep 00:46

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-check is enough; a running sim is not an install prerequisite
  • docs/usage.md / docs/docking.md openings and example CLI banners aligned with that identity
  • Unchanged public step — FlyHarness.step(obs) -> action
  • Microkernel unchanged — BrainState, Encoder / Decoder, sparse load_connectome, ModelBackend port (numpy/scipy only)

What this is not

  • Not a kernel change (patch bump only)
  • Not Formula: Agent = Model + harness as 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

Choose a tag to compare

@cursor cursor released this 18 Sep 15:08
0520834

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.py keeps the FlyGym body and obs → FlyHarness.step → action; only the Model changes (toy in-process LIF vs listed id flybrain.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.step is the brain-level slot (encode → ModelBackend.tick → decode), above the body's motor CPG
  • Unchanged public step — FlyHarness.step(obs) -> action is unchanged
  • Microkernel unchanged — BrainState, Encoder / Decoder, sparse load_connectome, ModelBackend port (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

Choose a tag to compare

@NeilJo-GY NeilJo-GY released this 17 Sep 12:51

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(...) — same ModelBackend family as reset. A harness loop can checkpoint without knowing the engine. Missing mapping raises SnapshotUnsupportedError (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 /snapshot wire 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

Choose a tag to compare

@NeilJo-GY NeilJo-GY released this 17 Sep 05:45
2ad4a15

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 — also python -m fly_harness / python -m fly_harness.check. After pip install fly-harness, prove the kernel is alive. Default is the toy in-process LIF (no extras). Prints model_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:
    1. Fixture reflex — just installed, no extras
    2. Direct ModelBackend — wrap a sim you already run
    3. biorouter ids flybrain.malecns / c302.celegans — usage (deploy a running sim + list an id), not a harness feature
  • Unchanged public step — FlyHarness.step(obs) -> action is unchanged
  • Microkernel unchanged — BrainState, Encoder / Decoder, sparse load_connectome, ModelBackend port (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

Choose a tag to compare

@cursor cursor released this 16 Sep 14:18
bb8e244

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) -> action is unchanged
  • Microkernel unchanged — BrainState, Encoder / Decoder, sparse load_connectome, ModelBackend port (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

Choose a tag to compare

@cursor cursor released this 16 Sep 11:55
a1fecef

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.py drives FlyHarness.step through local biorouter to the third-party flybrain.malecns provider id. Default CI path uses FakeFlyBrain (32 neurons)
  • body-loop example (PR #12) — examples/body_loop.py composes FlyGym body adapter + biorouter + flybrain extra through the same FlyHarness.step contract
  • Docking guide (PR #13) — docs/docking.md is the third-party ModelBackend usage 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) -> action is unchanged
  • Microkernel unchanged — BrainState, Encoder / Decoder, sparse load_connectome, ModelBackend port (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

Choose a tag to compare

@cursor cursor released this 16 Sep 10:53
edcabe6

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 to flybrain (MaleCNS v1.0 LIF, 166,700 neurons, not 160k "parameters"). Core stays a model-agnostic ModelBackend port; FlyBrainBackend is 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.py uses FlyHarness.step. Default is in-process FakeFlyBrain (32 neurons). --real only if extra + data are already on disk
  • Unchanged public step — FlyHarness.step(obs) -> action is unchanged
  • Microkernel — BrainState, Encoder / Decoder, sparse load_connectome, ModelBackend port (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

Choose a tag to compare

@cursor cursor released this 16 Sep 05:32
705c0ff

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 — also python -m fly_harness.router; binds 127.0.0.1 by default
  • Same idea, different substrate — OpenRouter routes existing LLMs; biorouter routes existing deployed biological simulation models (model id)
  • Not a marketplace — local port/process only; not OpenRouter-the-company, not billing, not a hosted cloud gateway
  • Unchanged public step — FlyHarness.step(obs) -> action is unchanged
  • Microkernel — BrainState, Encoder / Decoder, sparse load_connectome, ModelBackend port (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

Choose a tag to compare

@cursor cursor released this 15 Sep 16:17
9f791af

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) -> action is unchanged; BrainState is not a ModelBackend
  • Microkernel — BrainState, Encoder / Decoder, sparse load_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

Choose a tag to compare

@cursor cursor released this 15 Sep 15:24
5affd59

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]" and pytest on PRs and main (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