A single MoE serving with internal scaffolded harness directions employed during serving.
C
0
1 commits
updated Sep 10, 2026
An experiment: agentic LOCI as the execution scaffold, colibrì as the MoE serving substrate, testing whether several agents can collapse into several logical roles over one MoE model instance without losing specialisation.
Desktop/LOCI Advanced/
├── colibri/ upstream, unmodified (JustVugg/colibri v1.10.2)
├── ConversationalAgenticMemory/ upstream, unmodified (Jonas-Schewior/…, "MnemOS")
├── integration/ everything this experiment adds
│ ├── loci_advanced/ the library
│ │ ├── colibri_gateway.py speaks colibri's engine serve protocol over stdio
│ │ ├── roles.py RoleSpec: a prompt + sampling, never a model
│ │ ├── harness.py architectures A / B / C / D
│ │ ├── memory.py Blackboard + EpisodicMemory (MnemOS EngramDB)
│ │ ├── tools.py prompt-level tool calling (OLMoE has no native)
│ │ ├── metrics.py .coli_usage / ROUTE_TRACE parsing, scoring, IO
│ │ ├── tasks.py the 5 benchmark tasks + their rubrics
│ │ └── config.py paths and knobs
│ ├── run_experiment.py the A/B/C/D benchmark (--greedy control)
│ ├── run_all.sh everything, in order
│ ├── demo_end_to_end.py one task, printing role -> model-instance map
│ ├── cam_bridge.py upstream MnemOS agents against colibri over HTTP
│ ├── tests/ pytest: execution / serving / integration
│ ├── tools/ build_engine.sh, verify_model.py,
│ │ reaggregate.py, summarize.py,
│ │ combine_runs.py, expert_overlap.py
│ ├── patches/ olmoe-route-trace.patch (measurement only)
│ ├── _build/ patched build of colibri's c/ (generated)
│ └── _vendor/colibri-bin/ upstream Windows release binaries (downloaded)
├── models/olmoe_merged_int8/ the converted model container (generated)
├── results/ runs, traces, JSON/CSV (generated)
├── ARCHITECTURE_ANALYSIS.md what the two repos actually contain
├── HYPOTHESIS.md the claim, and how to falsify it
└── EXPERIMENTS.md what was measured
Both upstream checkouts are untouched — git -C colibri status --short and
git -C ConversationalAgenticMemory status --short are both empty. The one
change to colibri's C source (7 lines, measurement only) is applied to a
copy in integration/_build, from integration/patches/.
Four configurations run the same roles on the same model.
A task -> single agent -> 1 instance, 1 call
B task -> planner | researcher | critic, then tool,
then aggregator -> 5 instances, 5 calls
C task -> planner -> tool -> researcher -> critic -> synth -> 1 instance, 5 calls
D the same pipeline as C, one instance per role -> 5 instances, 5 calls
EnginePool(shared=True|False) is the only architectural switch. D is the
control: it is byte-for-byte the same harness, prompts and call order as C,
differing only in whether the roles share a process. B vs C varies topology
and instance count; C vs D varies instance count alone. The gateway
records the engine pid and an instance_id on every generation, so "five
roles, one model" is a fact in the trace rather than a claim in a README.
Per request, colibri's engine itself reports completion tokens, tokens/second,
the expert-cache hit rate for that request, and its resident set size. Those
numbers are copied through unmodified. Metrics this stack cannot produce (VRAM,
concurrent batching, native tool calls) are listed with reasons in
metrics.UNAVAILABLE and are never filled in with estimates.
| Model | allenai/OLMoE-1B-7B-0125-Instruct |
| Parameters | 6.9B total / ~1.3B active per token |
| Experts | 64 per layer, top-8 routed, 16 layers → 1024 experts |
| Container | colibri merged int8, ~7 GB, built by colibri/c/tools/convert_olmoe_merged.py |
| Backend | colibri olmoe engine, pure C, CPU only (no CUDA/Metal path exists for this engine) |
| Why this one | it is the only MoE family colibri supports that fits this machine: the next smallest is Qwen3.6 at ~20 GB, then DeepSeek V4 Flash at 85 GB. Small enough to run several instances at once, which configuration B requires. |
Host used for the recorded runs: AMD Ryzen AI MAX+ 395 (16 cores / 32 threads), 63.6 GB RAM, Radeon 8060S iGPU (unused — the engine is CPU-only), Windows 11, Python 3.12.10.
"Sufficiently large" is the load-bearing word in the hypothesis, and 1.3B active parameters over 64 experts per layer is not it. The same harness was therefore run a second time against a model two orders of magnitude larger in expert count, on different hardware and a different colibri engine:
| Model | GLM-5.2 (glm_moe_dsa), colibri E8-IQ3 container with int8 MTP, 281 GB on disk |
| Experts | 256 per layer, top-8 routed + 1 shared, 78 layers (3 dense) → 19,456 routed experts |
| Backend | colibri colibri engine, CUDA expert tier + NVMe expert streaming |
| Host | NVIDIA DGX Spark, GB10, 20 cores, 119 GB unified memory, Ubuntu, Python 3.12.3 |
| Measured rate | ~0.93 tok/s prefill, ~0.64 tok/s decode with speculation on |
Nothing in integration/ is model-specific: the family is selected by
LOCI_FAMILY, and the engine's placement policy is passed through verbatim in
LOCI_ENGINE_ENV. The only code the second model needed was a second chat
template and a numeric request id — see ARCHITECTURE_ANALYSIS.md §2.
Everything below is run from Desktop/LOCI Advanced.
python -m venv --system-site-packages .venv
./.venv/Scripts/python.exe -m pip install safetensors huggingface_hub pytest
./.venv/Scripts/python.exe -m pip install -r ConversationalAgenticMemory/requirements.txt
Upstream ships prebuilt Windows binaries — no compiler needed for the stock path:
mkdir -p integration/_vendor && cd integration/_vendor
curl -sL -o colibri-win.zip \
https://github.com/JustVugg/colibri/releases/download/v1.10.2/colibri-v1.10.2-windows-x86_64.zip
python -c "import zipfile;zipfile.ZipFile('colibri-win.zip').extractall('colibri-bin')"
Optional but recommended — build the patched engine so per-role expert traces
work (needs a mingw gcc; see the header of integration/tools/build_engine.sh):
bash integration/tools/build_engine.sh
./.venv/Scripts/python.exe colibri/c/tools/convert_olmoe_merged.py \
--repo allenai/OLMoE-1B-7B-0125-Instruct --out ./models/olmoe_merged_int8
Resumable: rerun the same command if it stops. Then prove it loads:
cd integration && ../.venv/Scripts/python.exe tools/verify_model.py
That writes models/olmoe_merged_int8/.loci_ready, which is what the
engine-dependent tests key off.
cd integration && ../.venv/Scripts/python.exe -m pytest tests -q
The stub-engine tests run in under a minute with no model. The engine-backed
tests are skipped until .loci_ready exists.
Upstream's own suite still passes untouched:
cd ConversationalAgenticMemory && ../.venv/Scripts/python.exe tests/run_all.py
cd integration && ../.venv/Scripts/python.exe demo_end_to_end.py
Prints the role → model-instance → pid map, the tool step, per-role engine statistics, expert routing, and the final answer.
cd integration && ../.venv/Scripts/python.exe run_experiment.py
# subsets:
../.venv/Scripts/python.exe run_experiment.py --arch C D --tasks t1_moe_routing
Writes results/run-<timestamp>/results.json, runs.csv, one .coli_usage
history per engine and (patched build only) one ROUTE_TRACE stream per engine.
Then derive the tables:
../.venv/Scripts/python.exe tools/reaggregate.py # recompute aggregates
../.venv/Scripts/python.exe tools/summarize.py # the comparison table
../.venv/Scripts/python.exe tools/combine_runs.py ../results/run-*/
colibri seeds its sampler once per process (sample.h), so a shared
instance and per-role instances walk different random streams from identical
prompts. Run C and D greedily to take the sampler out of the comparison:
../.venv/Scripts/python.exe run_experiment.py --arch C D --greedy --out ../results/run-greedy
../.venv/Scripts/python.exe tools/reaggregate.py ../results/run-greedy
../.venv/Scripts/python.exe tools/expert_overlap.py
# on the Spark, with colibri's GLM container already converted
cd ~/loci-advanced && bash run_spark_glm.sh # ~5 h, all five steps
python3 integration/tools/spark_report.py ~/loci-advanced/results
run_spark_glm.sh runs, in order: the per-role routing study, C, A, the
concurrency comparison, and the instance-count probe (which is expected to end
in a refusal — that is the measurement). Per-step commands are in
EXPERIMENTS.md §11.
The role can also be pushed below the prompt, as a serve-protocol command that re-places hot experts before prefill. That needs the lobe port:
python patches/apply_colibri_lobes.py --colibri _build_glm/c/colibri.c # build copy only
python tools/make_lobes.py results/spark-glm/.../route_trace.txt \
--out lobes_loci --per-layer 8 # one .coli per role
python -m loci_ui.server --live --port 8770 \
--engine _build_glm/c/colibri --lobes lobes_loci \
--record ui_session.jsonl --vram-gb 24 --ram-gb 40 --pin-gb 32
Open http://<host>:8770. The grid is 78 layers × 256 experts; per turn it
shows which experts the router woke, which of those were already pinned (hit)
and which were not (miss), the tier/pin placement the engine does at load — the
hot pins, filled before any token — and every [LOBE] / [REPIN] /
[PREFILL] line the engine prints.
A recording replays with no server at all:
python tools/make_ui_artifact.py ui_session.jsonl --meta meta.json --out page.html
The recorded GLM-5.2 session is in results/spark-glm/ui-session/. Read
EXPERIMENTS.md §12 before drawing conclusions from it: the mechanism works and
costs ~85 ms per switch, but on a 2458-slot hot store it moved zero experts,
because AUTOPIN had already pinned 86–92 % of every role's manifest.
cd integration && ../.venv/Scripts/python.exe cam_bridge.py
Starts colibri's own openai_server.py on the OLMoE engine and drives the
unmodified agents.engram.Engram against it.
Environment variables, all optional:
| variable | default | meaning |
|---|---|---|
LOCI_MODEL | models/olmoe_merged_int8 | model container |
LOCI_ENGINE | patched build if present, else the release binary | engine executable |
LOCI_RESULTS | results/ | output root |
LOCI_CACHE | 64 | expert cache slots per layer (64 = every expert) |
LOCI_BITS | 8 | expert quantisation bits the container was written with |
LOCI_CTX | 3072 | context cap (engine hard limit is 4096) |
LOCI_THREADS | 16 | OMP_NUM_THREADS (physical cores) |
LOCI_FAMILY | olmoe | native chat template: olmoe or glm |
LOCI_TRACE | unset | force the ROUTE_TRACE verdict; needed for GLM, whose engine traces without a patch |
LOCI_ENGINE_ENV | {} | JSON of extra engine environment (CUDA_EXPERT_GB, RAM_GB, SERVE_BATCH, KV_SLOTS, MTP …) |
integration/run_spark_glm.sh and run_spark_glm2.sh set all of these for the
GLM-5.2 arm; the placement values in them are copied from colibri's own
run_glm.sh rather than invented here.
At temperature=0, configuration C (five roles, one model instance) and
configuration D (the same five roles, one model instance each) produced
byte-identical answers on all five benchmark tasks — while C used
8.06 GB against D's 39.95 GB (4.96x less) and was slightly faster. Sharing
one MoE across logical roles cost nothing measurable.
The other half of the hypothesis failed at that scale: every role routes to essentially every expert (1022–1024 of 1024 slots, near-uniform), so OLMoE's internal experts are not what differentiates the roles.
Re-run on GLM-5.2 (19,456 experts, DGX Spark) it comes out the other way. Each role touches 57–66 % of the expert grid, per-layer entropy is 6.50 of 8.00 bits, and on the length-controlled comparison role identity moves the router more than topic does (Δcosine +0.0876, against +0.0395 on OLMoE). The "every role uses every expert" result was an artefact of having only 64 experts to use.
And the cost argument stops being an argument: five GLM-5.2 instances cannot
be started on a 119 GB machine at all — colibri refuses the fifth rather than
be OOM-killed — so the traditional multi-agent configuration is not expensive
but unbuildable, while the five-role shared-instance pipeline runs in one 41 GB
process. What the second scale takes away is the case for the pipeline: five
roles cost 6.4× the latency of a single agent for a score the rubric can no
longer tell apart. Details and caveats in EXPERIMENTS.md §10.
EXPERIMENTS.md — the measurements, each labelled Verified experimentally,
Partially verified, Not verified, Blocked by hardware or Blocked by
repository limitations.HYPOTHESIS.md — F1…F6, the conditions under which the idea is wrong.ARCHITECTURE_ANALYSIS.md — what is actually in the two repositories,
including the things that do not work.allenai/OLMoE-1B-7B-0125-Instruct1 commits
C
49.0%
Python
28.4%
HTML
12.4%
Cuda
6.2%
Objective-C++
1.9%
Makefile
1.0%
A single MoE serving with internal scaffolded harness directions employed during serving.
C
0
1 commits
updated Sep 10, 2026
An experiment: agentic LOCI as the execution scaffold, colibrì as the MoE serving substrate, testing whether several agents can collapse into several logical roles over one MoE model instance without losing specialisation.
Desktop/LOCI Advanced/
├── colibri/ upstream, unmodified (JustVugg/colibri v1.10.2)
├── ConversationalAgenticMemory/ upstream, unmodified (Jonas-Schewior/…, "MnemOS")
├── integration/ everything this experiment adds
│ ├── loci_advanced/ the library
│ │ ├── colibri_gateway.py speaks colibri's engine serve protocol over stdio
│ │ ├── roles.py RoleSpec: a prompt + sampling, never a model
│ │ ├── harness.py architectures A / B / C / D
│ │ ├── memory.py Blackboard + EpisodicMemory (MnemOS EngramDB)
│ │ ├── tools.py prompt-level tool calling (OLMoE has no native)
│ │ ├── metrics.py .coli_usage / ROUTE_TRACE parsing, scoring, IO
│ │ ├── tasks.py the 5 benchmark tasks + their rubrics
│ │ └── config.py paths and knobs
│ ├── run_experiment.py the A/B/C/D benchmark (--greedy control)
│ ├── run_all.sh everything, in order
│ ├── demo_end_to_end.py one task, printing role -> model-instance map
│ ├── cam_bridge.py upstream MnemOS agents against colibri over HTTP
│ ├── tests/ pytest: execution / serving / integration
│ ├── tools/ build_engine.sh, verify_model.py,
│ │ reaggregate.py, summarize.py,
│ │ combine_runs.py, expert_overlap.py
│ ├── patches/ olmoe-route-trace.patch (measurement only)
│ ├── _build/ patched build of colibri's c/ (generated)
│ └── _vendor/colibri-bin/ upstream Windows release binaries (downloaded)
├── models/olmoe_merged_int8/ the converted model container (generated)
├── results/ runs, traces, JSON/CSV (generated)
├── ARCHITECTURE_ANALYSIS.md what the two repos actually contain
├── HYPOTHESIS.md the claim, and how to falsify it
└── EXPERIMENTS.md what was measured
Both upstream checkouts are untouched — git -C colibri status --short and
git -C ConversationalAgenticMemory status --short are both empty. The one
change to colibri's C source (7 lines, measurement only) is applied to a
copy in integration/_build, from integration/patches/.
Four configurations run the same roles on the same model.
A task -> single agent -> 1 instance, 1 call
B task -> planner | researcher | critic, then tool,
then aggregator -> 5 instances, 5 calls
C task -> planner -> tool -> researcher -> critic -> synth -> 1 instance, 5 calls
D the same pipeline as C, one instance per role -> 5 instances, 5 calls
EnginePool(shared=True|False) is the only architectural switch. D is the
control: it is byte-for-byte the same harness, prompts and call order as C,
differing only in whether the roles share a process. B vs C varies topology
and instance count; C vs D varies instance count alone. The gateway
records the engine pid and an instance_id on every generation, so "five
roles, one model" is a fact in the trace rather than a claim in a README.
Per request, colibri's engine itself reports completion tokens, tokens/second,
the expert-cache hit rate for that request, and its resident set size. Those
numbers are copied through unmodified. Metrics this stack cannot produce (VRAM,
concurrent batching, native tool calls) are listed with reasons in
metrics.UNAVAILABLE and are never filled in with estimates.
| Model | allenai/OLMoE-1B-7B-0125-Instruct |
| Parameters | 6.9B total / ~1.3B active per token |
| Experts | 64 per layer, top-8 routed, 16 layers → 1024 experts |
| Container | colibri merged int8, ~7 GB, built by colibri/c/tools/convert_olmoe_merged.py |
| Backend | colibri olmoe engine, pure C, CPU only (no CUDA/Metal path exists for this engine) |
| Why this one | it is the only MoE family colibri supports that fits this machine: the next smallest is Qwen3.6 at ~20 GB, then DeepSeek V4 Flash at 85 GB. Small enough to run several instances at once, which configuration B requires. |
Host used for the recorded runs: AMD Ryzen AI MAX+ 395 (16 cores / 32 threads), 63.6 GB RAM, Radeon 8060S iGPU (unused — the engine is CPU-only), Windows 11, Python 3.12.10.
"Sufficiently large" is the load-bearing word in the hypothesis, and 1.3B active parameters over 64 experts per layer is not it. The same harness was therefore run a second time against a model two orders of magnitude larger in expert count, on different hardware and a different colibri engine:
| Model | GLM-5.2 (glm_moe_dsa), colibri E8-IQ3 container with int8 MTP, 281 GB on disk |
| Experts | 256 per layer, top-8 routed + 1 shared, 78 layers (3 dense) → 19,456 routed experts |
| Backend | colibri colibri engine, CUDA expert tier + NVMe expert streaming |
| Host | NVIDIA DGX Spark, GB10, 20 cores, 119 GB unified memory, Ubuntu, Python 3.12.3 |
| Measured rate | ~0.93 tok/s prefill, ~0.64 tok/s decode with speculation on |
Nothing in integration/ is model-specific: the family is selected by
LOCI_FAMILY, and the engine's placement policy is passed through verbatim in
LOCI_ENGINE_ENV. The only code the second model needed was a second chat
template and a numeric request id — see ARCHITECTURE_ANALYSIS.md §2.
Everything below is run from Desktop/LOCI Advanced.
python -m venv --system-site-packages .venv
./.venv/Scripts/python.exe -m pip install safetensors huggingface_hub pytest
./.venv/Scripts/python.exe -m pip install -r ConversationalAgenticMemory/requirements.txt
Upstream ships prebuilt Windows binaries — no compiler needed for the stock path:
mkdir -p integration/_vendor && cd integration/_vendor
curl -sL -o colibri-win.zip \
https://github.com/JustVugg/colibri/releases/download/v1.10.2/colibri-v1.10.2-windows-x86_64.zip
python -c "import zipfile;zipfile.ZipFile('colibri-win.zip').extractall('colibri-bin')"
Optional but recommended — build the patched engine so per-role expert traces
work (needs a mingw gcc; see the header of integration/tools/build_engine.sh):
bash integration/tools/build_engine.sh
./.venv/Scripts/python.exe colibri/c/tools/convert_olmoe_merged.py \
--repo allenai/OLMoE-1B-7B-0125-Instruct --out ./models/olmoe_merged_int8
Resumable: rerun the same command if it stops. Then prove it loads:
cd integration && ../.venv/Scripts/python.exe tools/verify_model.py
That writes models/olmoe_merged_int8/.loci_ready, which is what the
engine-dependent tests key off.
cd integration && ../.venv/Scripts/python.exe -m pytest tests -q
The stub-engine tests run in under a minute with no model. The engine-backed
tests are skipped until .loci_ready exists.
Upstream's own suite still passes untouched:
cd ConversationalAgenticMemory && ../.venv/Scripts/python.exe tests/run_all.py
cd integration && ../.venv/Scripts/python.exe demo_end_to_end.py
Prints the role → model-instance → pid map, the tool step, per-role engine statistics, expert routing, and the final answer.
cd integration && ../.venv/Scripts/python.exe run_experiment.py
# subsets:
../.venv/Scripts/python.exe run_experiment.py --arch C D --tasks t1_moe_routing
Writes results/run-<timestamp>/results.json, runs.csv, one .coli_usage
history per engine and (patched build only) one ROUTE_TRACE stream per engine.
Then derive the tables:
../.venv/Scripts/python.exe tools/reaggregate.py # recompute aggregates
../.venv/Scripts/python.exe tools/summarize.py # the comparison table
../.venv/Scripts/python.exe tools/combine_runs.py ../results/run-*/
colibri seeds its sampler once per process (sample.h), so a shared
instance and per-role instances walk different random streams from identical
prompts. Run C and D greedily to take the sampler out of the comparison:
../.venv/Scripts/python.exe run_experiment.py --arch C D --greedy --out ../results/run-greedy
../.venv/Scripts/python.exe tools/reaggregate.py ../results/run-greedy
../.venv/Scripts/python.exe tools/expert_overlap.py
# on the Spark, with colibri's GLM container already converted
cd ~/loci-advanced && bash run_spark_glm.sh # ~5 h, all five steps
python3 integration/tools/spark_report.py ~/loci-advanced/results
run_spark_glm.sh runs, in order: the per-role routing study, C, A, the
concurrency comparison, and the instance-count probe (which is expected to end
in a refusal — that is the measurement). Per-step commands are in
EXPERIMENTS.md §11.
The role can also be pushed below the prompt, as a serve-protocol command that re-places hot experts before prefill. That needs the lobe port:
python patches/apply_colibri_lobes.py --colibri _build_glm/c/colibri.c # build copy only
python tools/make_lobes.py results/spark-glm/.../route_trace.txt \
--out lobes_loci --per-layer 8 # one .coli per role
python -m loci_ui.server --live --port 8770 \
--engine _build_glm/c/colibri --lobes lobes_loci \
--record ui_session.jsonl --vram-gb 24 --ram-gb 40 --pin-gb 32
Open http://<host>:8770. The grid is 78 layers × 256 experts; per turn it
shows which experts the router woke, which of those were already pinned (hit)
and which were not (miss), the tier/pin placement the engine does at load — the
hot pins, filled before any token — and every [LOBE] / [REPIN] /
[PREFILL] line the engine prints.
A recording replays with no server at all:
python tools/make_ui_artifact.py ui_session.jsonl --meta meta.json --out page.html
The recorded GLM-5.2 session is in results/spark-glm/ui-session/. Read
EXPERIMENTS.md §12 before drawing conclusions from it: the mechanism works and
costs ~85 ms per switch, but on a 2458-slot hot store it moved zero experts,
because AUTOPIN had already pinned 86–92 % of every role's manifest.
cd integration && ../.venv/Scripts/python.exe cam_bridge.py
Starts colibri's own openai_server.py on the OLMoE engine and drives the
unmodified agents.engram.Engram against it.
Environment variables, all optional:
| variable | default | meaning |
|---|---|---|
LOCI_MODEL | models/olmoe_merged_int8 | model container |
LOCI_ENGINE | patched build if present, else the release binary | engine executable |
LOCI_RESULTS | results/ | output root |
LOCI_CACHE | 64 | expert cache slots per layer (64 = every expert) |
LOCI_BITS | 8 | expert quantisation bits the container was written with |
LOCI_CTX | 3072 | context cap (engine hard limit is 4096) |
LOCI_THREADS | 16 | OMP_NUM_THREADS (physical cores) |
LOCI_FAMILY | olmoe | native chat template: olmoe or glm |
LOCI_TRACE | unset | force the ROUTE_TRACE verdict; needed for GLM, whose engine traces without a patch |
LOCI_ENGINE_ENV | {} | JSON of extra engine environment (CUDA_EXPERT_GB, RAM_GB, SERVE_BATCH, KV_SLOTS, MTP …) |
integration/run_spark_glm.sh and run_spark_glm2.sh set all of these for the
GLM-5.2 arm; the placement values in them are copied from colibri's own
run_glm.sh rather than invented here.
At temperature=0, configuration C (five roles, one model instance) and
configuration D (the same five roles, one model instance each) produced
byte-identical answers on all five benchmark tasks — while C used
8.06 GB against D's 39.95 GB (4.96x less) and was slightly faster. Sharing
one MoE across logical roles cost nothing measurable.
The other half of the hypothesis failed at that scale: every role routes to essentially every expert (1022–1024 of 1024 slots, near-uniform), so OLMoE's internal experts are not what differentiates the roles.
Re-run on GLM-5.2 (19,456 experts, DGX Spark) it comes out the other way. Each role touches 57–66 % of the expert grid, per-layer entropy is 6.50 of 8.00 bits, and on the length-controlled comparison role identity moves the router more than topic does (Δcosine +0.0876, against +0.0395 on OLMoE). The "every role uses every expert" result was an artefact of having only 64 experts to use.
And the cost argument stops being an argument: five GLM-5.2 instances cannot
be started on a 119 GB machine at all — colibri refuses the fifth rather than
be OOM-killed — so the traditional multi-agent configuration is not expensive
but unbuildable, while the five-role shared-instance pipeline runs in one 41 GB
process. What the second scale takes away is the case for the pipeline: five
roles cost 6.4× the latency of a single agent for a score the rubric can no
longer tell apart. Details and caveats in EXPERIMENTS.md §10.
EXPERIMENTS.md — the measurements, each labelled Verified experimentally,
Partially verified, Not verified, Blocked by hardware or Blocked by
repository limitations.HYPOTHESIS.md — F1…F6, the conditions under which the idea is wrong.ARCHITECTURE_ANALYSIS.md — what is actually in the two repositories,
including the things that do not work.allenai/OLMoE-1B-7B-0125-Instruct1 commits
C
49.0%
Python
28.4%
HTML
12.4%
Cuda
6.2%
Objective-C++
1.9%
Makefile
1.0%