Codync
免费开源的 1:1 Grok Bot 与 Muse 替代方案。可在 iPhone、Mac 或 Linux 桌面上将 Claude 代码、Codex、Cursor 以及 40 多个编码代理作为持久机器人使用。支持群组聊天、线程、应用。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Say it. Fix it. Prove it.
See a real run, no install: the purple-box incident, from the snapshot to the proof. It is the static report of examples/purple-box/.
Watch the 3-minute video: the same loop, said, fixed and proved, on the live simulator.
| Criterion | What it shows | Where |
|---|---|---|
| Impact (30%) | Say what went wrong on screen, get a proven fix in the robot's code. Frozen-code pass (new seed, code frozen): 8/8 repaired and passed the incident and control checks; Wonder's cause named a planted line in 4 of 8, the kept patch touched one in 7 of 8. 7 of the 8 repeat first-pass mutations, 1 is new; pass of Oct 28, before the current gate and control rule. Live: contact in 5/5 runs before the fix, 0/5 after | Results, Where this could go |
| Use of Meta tooling (25%) | One job per model. Muse Glimmer (open weights, on this PC) watches and names. SAM 3.1 tracks. Muse Wonder finds the cause. Muse Code fixes. Muse Voice Transcribe listens. Every call is logged | How it works, models.json |
| Technical depth (20%) | Distances from SAM 3.1's masks. A diagnosis whose every citation is checked against the frames, log lines and code it was sent. An exact replay in a deterministic twin. Rollback and retry. A gate before each tool call | results/bug_suite.md, Safety |
| Demo (25%) | The purple-box incident from the sentence to the proof, as a page anyone can open, and the live console | The report, The console |
Open weights: Muse Glimmer runs on this PC → provenance. Try it in ~2 min, no GPU → quickstart.
The loop is not tied to the biped. A hand-written MuJoCo arm (a 43-line scene, a 45-line controller) has a planted bug, clearance = 0.0, so it sweeps through a red block. The same SAM 3.1 measurement, Muse Wonder diagnosis, citation check, gated Muse Code fix and pixel proof run on it through thin adapters (blinkflow/arm/); as with the duck, Muse Code may touch only the robot's controller (blinkflow/arm/robot/), not the world or the harness, and the fix is accepted on a mixed basis: contact and the two control scenes are measured from pixels, and reaching the target (within 20 mm) is read from the simulator's own end-effector position.
| Before: contact | After: target reached |
|---|---|
Contacts 1 → 0, controls 2/2 clean, Muse Wonder's cause grounded with no bad references, and Muse Code's fix is one line, made on the first attempt (0.0 → 0.15). The finished loop cost $0.27. One limit: SAM 3.1 did not find the arm from text, so the arm is tracked from a box marked once on the first frame, the same before and after. The run is in examples/arm/ and the numbers and limits are in results/arm.md.
Two more runs, with the same loop and the same rule: a sign error in the controller's lift (fixed with one logic line on the first attempt) and the clearance bug driven by a real spoken sentence through Muse Voice Transcribe, same fix and proof. results/arm.md.
All arm runs so far, from their ledgers: $1.86.
For the judges · What is new · The arm · The robot · How it works · Why the Meta stack · The code · Results · Try it in ~2 min · Run the full loop · Glimmer provenance · Limits · Pre-existing vs built · Safety
Microduck is a small open-source biped robot by Pollen Robotics / Hugging Face. Two pre-existing layers move it:
side_memory_seconds = 0.0). The purple box leaves the sensor's view before the right leg has passed it, and the leg hits the box it should have steered around. In the example, Muse Code turns the memory back on (3 s).For people who write robot software and test it in a simulator: you say what went wrong on screen, BlinkFlow finds the cause in the robot's code, fixes it, and proves the fix on the same scene.
BlinkFlow watches a robot simulator the way you do: through the screen. When the robot does something wrong, you say what you saw. BlinkFlow rewinds to that moment, works out which part of the robot's program caused it, writes the fix, and plays the same scene again to prove the problem is gone. If the fix doesn't work, it undoes it and tries again.
What it films is the simulator's window on your screen, not a camera on the robot. It runs Meta's open-weight Muse Glimmer on this PC: the rolling buffer and the continuous Glimmer checks stay local; when an incident is called, the incident clip goes to SAM 3.1, and selected frames, the log and the code go to Muse Wonder.
| Step | What happens | Meta model |
|---|---|---|
| Remember | The last 60 seconds of the simulator window are kept locally | — |
| Watch | Or nobody says anything: about once a second the newest frame is checked locally for a robot touching, nearly touching, fallen or stuck; a raised hand is confirmed on pixels before the loop starts, and the moment comes from BlinkFlow's own clock (results/watcher.md) | Muse Glimmer (local), SAM 3.1 |
| Listen | Hold F9 (or, with --tap-to-talk, tap the arm of the Ray-Ban Meta glasses, and tap again when done) and say what you saw ("three seconds ago its right leg hit the purple box"), or type it; the moment is the key press on BlinkFlow's own clock minus the time you said; the sentence is read locally (results/voice.md) | Muse Voice Transcribe, Muse Glimmer (local) |
| See | Objects in those seconds are named locally and then followed pixel by pixel; the masks become measurements (distance between objects per frame, first contact) | Muse Glimmer (local), SAM 3.1 |
| Understand | Key frames + measurements + time-aligned logs + the robot's code → the cause, plus a plain-language explanation. Every claim cites its source: a key frame, a measurement, a log tick or a code line, and a check marks the diagnosis grounded or not: the file, function and lines exist, every key frame and tick it names was sent, and any reference that names none is listed in bad_refs. An ungrounded diagnosis is kept and shown as such; the fix is still judged on pixels, not rejected for it | Muse Wonder |
| Fix | A coding agent patches the code in the target folder, each of its calls checked by BlinkFlow's gate; a git commit is taken first | Muse Code (Python SDK) |
| Prove | The same scene, replayed exactly in a deterministic twin, and checked again on pixels; failed fixes are rolled back and retried. For the demo incident, then confirmed on the live simulator (results/live_check.md) | SAM 3.1, Muse Code |
Capture and measurement work on any window; the rest does not. BlinkFlow watches pixels, through GPU screen capture (DXGI Desktop Duplication + NVENC), of the window named by the sidecar's --title; there is no plugin in the simulator. That capture and measurement part should apply to any simulator (Isaac Sim, Gazebo, CARLA, Unreal), but it has not been tested on them. Diagnosis needs the controller's source and logs, and the proof needs a deterministic replay adapter for the robot (two are written: Microduck and the arm).
sidecar/capture.py on Windows keeps the ring of 1 s segments; blinkflow/capture.py (Sidecar) starts it and cuts snapshots from WSL.blinkflow/models.py (glimmer), called to name objects in see.py (name_objects), describe key frames in diagnose.py (build_frames), read the sentence in voice.py (parse) and watch in watch.py (Watcher).blinkflow/sam.py (track) calls it, Meta's meta-sam-parser decodes the masks (masks.py keeps them, decoded, for the page), see.py (gap, base_of, measure) turns them into distances and a first contact.Measured during the hackathon; each number links to the file it comes from.
| What | Result | Source |
|---|---|---|
| Bug suite, stratified by layer (11 mutations drawn with a sealed seed, 8 gave an incident); blind to the mutation; perception rules were revised between passes | 5/8 on the first pass, 8/8 on the third: incidents gone, control clean in all five scenes. Changes on the mutated line: 5/8 on the first pass, 6/8 on the third | results/bug_suite.md |
| Same suite, frozen-code pass: a new seed, the code frozen, one pass, no reruns. 7 of the 8 kept bugs repeat a first-pass mutation (same value), 1 is new; the pass ran before the current gate | 8/8 repaired and passed the incident and control checks (incidents gone, control clean in all five scenes). Muse Wonder's cause named a planted line in 4/8; the kept patch touched one in 7/8. Pass of Oct 28, before the current gate and control rule | results/bug_suite.md |
| First suite (6 bugs), blind to the mutation, one pass | 6/6 fixed; Muse Wonder's cause on the mutated line in 5/6 | results/bug_suite.md |
| Live simulator, the demo incident, 20 s per run | contact in 5/5 runs without the fix, 0/5 with it (an earlier pass, with a CPU-heavy job beside it: 3/5, 0/5) | results/live_check.md |
| Seen → fixed and verified (machine time) | 368.0 s for the example run (examples/purple-box/); 386.6 s for the run the film shows (Oct 31). Since Oct 31 "verified" includes the control: the clock stops only after the four other scenes are replayed with the change and come out clean. The 135.8–234.0 s over 10 purple-box loops (median 169.2 s, the spread mostly Muse Wonder, 55–120 s) come from earlier runs, before that change, when the clock stopped at the replay of the incident and the control ran after it |
Every run writes a models.json: each model call with the model, where it ran (this PC, Meta, Baseten, the cache), tokens or frames, seconds and cost. Cost details (the SAM 3.1 cache, Muse Code's model, tools/spend.py): docs/RUNNING.md.
A recorded live run of the demo incident is in examples/purple-box/: the 60 s snapshot, the sentence, the evidence, Muse Wonder's diagnosis, both answers, Muse Code's change, the replays before and after, the control scenes and the model calls. No GPU, no simulator, no key. A person tapped the arm of Ray-Ban Meta glasses, said "a couple of seconds ago the robot hit the purple box" into their microphone, and tapped again (said.wav); Muse Voice Transcribe wrote it down, and the same person answered yes to "Fix it?" (after 3.3 s) and to "Keep the fix?" (after 4.0 s), both in the console. That was run 20261031-235414 (386.6 s, $0.38), the one the film shows, kept at 9a585ea. Its control followed objects Glimmer named, and one scene's object was seen in no frame, which counted as clean; that rule changed on Nov 1, so the example was run again from the same inputs: the same clip (outside/), the same sound and key press (voice clip), with both questions answered automatically (--auto). Run 20261101-093835: seen → fixed and verified in attempt 1, 368.0 s of machine time, control included (4/4 other scenes clean, each against its own obstacle), $0.95.
1. The report. Python 3 (tested on 3.12), standard library only:
git clone https://github.com/samoxis/blinkflow && cd blinkflow
python3 -m venv .venv && . .venv/bin/activate
python3 -m blinkflow.console report examples/purple-box/events.jsonl --out report
Open report/index.html over a local server that answers byte-range requests, since the replays seek in their videos (python3 -m http.server does not, and they snap back to the start); the console's own server does, on the same example: python3 -m blinkflow.console serve --events examples/purple-box/events.jsonl --port 8000, then http://localhost:8000. Either way: the whole loop step by step, the masks, the distance to first contact, the cause with its key frame, log row and code line, the replay before | after, the clock and the bill.
2. Measure it again. The contact is re-derived from SAM 3.1's saved replies, offline (needs ffmpeg):
pip install -r requirements-judge.txt
cp -r examples/purple-box /tmp/pb
python3 -m blinkflow.see /tmp/pb/window/snapshot.json --out /tmp/pb/window/evidence --reuse
/tmp/pb/window/evidence/evidence.json comes out identical to examples/purple-box/window/evidence/evidence.json (first contact, closest gap, the gap in every frame) except for the two paths it names. It writes into the evidence folder, hence the copy.
What needs a key. Nothing above. Asking the models again does: SAM 3.1 and Muse Wonder need MODEL_API_KEY (Meta Model API), a diagnosis with Muse Spark needs BASETEN_API_KEY (Baseten), and both also need the robot's code. Keys are read from the environment or ~/.config/blinkflow/env, never from the repo.
The loop itself on a new machine: BlinkFlow sees the incident, Muse Wonder finds the cause, Muse Code fixes the target, the twin replays the scene and SAM 3.1 checks it again. Step by step in docs/RUNNING.md:
ffmpeg, an NVIDIA GPU that holds Muse Glimmer (Ollama), the Muse Code CLI, MODEL_API_KEY.pip install -r requirements.txt, then python3 -m blinkflow.gate install.python3 tools/make_target.py ~/duck-target, and Pollen Robotics' simulator with the demo scene (blinkflow-demo-scene).Checked on Oct 28 from a fresh clone, a new venv and a target made by tools/make_target.py (same files as the one every run used): the purple-box loop, without the SAM cache, fixed it in attempt 1, contacts 1 → 0, in 167.3 s for $0.83 (results/fresh_setup.md, which also says what was not redone from scratch).
Glimmer is the open-weight model that names objects, describes key frames and reads the person's sentence, on an RTX 4090 through Ollama. To check that without this PC, examples/purple-box/ carries:
The model: muse-glimmer, 27.9B, quantization Q4_K_M, projector clip 1.9B, served by Ollama 0.40.11, digest de878ce33ad8. The weights are Ollama's public library model muse-glimmer:30b-q4_K_M (also its latest), unchanged: the public manifest's SHA-256 is that digest, and its model and projector layers are the SHA-256 of the two weight files on this PC.
glimmer-model.txt: ollama show muse-glimmer on this PC, the SHA-256 of both weight files, the public manifest, and the one curl | sha256sum that checks it without a GPU.models.json: every model call of the run. Glimmer's six are muse-glimmer, local, with tokens in and out and seconds (the sentence, the names, four key frames). Of the 52 SAM 3.1 calls, 30 were paid ($0.63 of the run's $0.95) and 22 are cached, $0, each with the hash of the video bytes, concept and parameters it answers./api/ps, the glimmer.vram event in events.jsonl): 16.7 GB, all in VRAM, Q4_K_M, context 8192. Glimmer's six calls, with their times and tokens, are in events.jsonl and models.json.provenance.txt, from the Oct 31 run the film shows (voice live samples; a rerun from a clip does not): ollama ps (Windows) and nvidia-smi (WSL) every ~3 s from the start of the run to its end, all 145 samples muse-glimmer:latest, ID de878ce33ad8, 16 GB, 100% GPU, context 8192.glimmer.jsonl: Glimmer's raw replies from the run, each with what it was asked and the image it saw.python3 tools/pack_example.py <run>/events.jsonl examples/<name> packs any run the same way: paths made relative to the example, the home folder written as ~, no keys, and never the scorer's ground truth.
A local page that shows the loop live, one step at a time, with the model behind each step, from the last 60 seconds rewinding to the moment to the replay before | after, the clock and the bill. "Fix it?" and "Keep the fix?" can be answered there or in the terminal. python3 -m blinkflow.console serve (http://localhost:8777); the other commands (the static report, the film mode, the teaser, the side shot) are in docs/RUNNING.md.
BlinkFlow needs three things: a screen, a log and a folder of code. Only the deterministic twin and the target are specific to the duck; the rest of the loop is not, so it could serve:
On a real robot the proof changes: the real world never repeats exactly, but the robot's recorded sensor log can be replayed through the fixed brain ("with exactly what it saw, would it turn now?"), then checked in simulation, then on the robot, and only with a person's "Keep the fix?".
When there is no simulator to replay in, the same recorded sensor inputs (here recorded in the simulator, not on a robot) can be replayed through the brain before and after a fix (blinkflow/sil/, built Nov 1). On 4 of the 8 suite bugs the fixed brain brakes 2.85–8.2 s before the recorded impact while the buggy one keeps walking; on the other 4 and on the purple box the result is inconclusive (the first difference is a small steering change). Open-loop decision evidence only, not an outcome proof: results/sil.md.
results/bug_suite.md).Built during the Meta Global AI Developer Hackathon, Oct 26 – Nov 4, 2026. Indie Developer track, theme: Push the Frontier. The build log is in
DEVLOG.md.
New vs pre-existing: BlinkFlow's implementation was built after the kickoff on Oct 26, 2026; evidence bundles include declared pre-existing target snapshots (NOTICE files); the robot, its simulator and its brain existed before — see Pre-existing vs built during the hackathon.
The rules ask entrants to separate earlier work from new work. BlinkFlow's implementation was built after the kickoff session on Oct 26, 2026. Evidence bundles include declared pre-existing target snapshots (NOTICE files in examples/purple-box-sil/ and examples/suite-sil/).
Existed before, used only as the test target, not part of this repo:
blinkflow-demo-scene of the author's microduck_rl fork: scene_demo.xml, apartment_demo.xml, duck_viser_hook.py + .pth, duck_cam_director.py and the incident's camera script shots_incident.json.tools/make_target.py re-states it as text edits.tools/make_target.py replaces it: rewritten from scratch on Oct 28, no code copied, and it makes the same target file for file.The arm uses the same MuJoCo (3.10.0) as the duck's simulation, declared above. Its scene (blinkflow/arm/world/), controller (blinkflow/arm/robot/), twin and adapters (blinkflow/arm/) and its example (examples/arm/) are new work from Nov 1.
The log replay uses microduck_brain.record.replay, part of Pollen's pre-existing brain, unchanged. The adapter, measurement, classification and tests (blinkflow/sil/) and its examples (examples/purple-box-sil/, examples/suite-sil/) are new work from Nov 1.
run.py reads truth.json only as an eligibility guard on the incident (a real contact, and pixels and physics agreeing within 0.1 s) before diagnosis, not as input to the models.blinkflow/arm/, examples/arm/) was built on Nov 1 with Codex (GPT-6.1 Sol), in a separate repo from a written brief, and moved here. So was the log replay (blinkflow/sil/, examples/*-sil/).Muse Code runs under muse serve's default profile (not :unrestricted), which does not stop a read or a write outside the target, so a PreToolUse hook (muse-gate/, python3 -m blinkflow.gate install) refuses any tool call that names a path outside the target before it runs. That hook is a filter that checks every Muse Code call against the target folder, not an isolation: it reads the paths a call names, so code that reaches outside without naming the path (a script that builds one as it runs, say) is not stopped by it. Every fix starts from a git commit; BlinkFlow asks "Fix it?" before Muse Code writes and "Keep the fix?" after the proof, and a no rolls the change back. How it was measured, and how to undo a kept fix: docs/SAFETY.md.
The icon was made with Meta's Muse Image; provenance in results/icon/.
The deterministic twin (blinkflow/twin.py) is new code, but the physics, the scenes, the depth sensor and the walking policies it runs are imported from Pollen Robotics' Microduck (microduck_rl), not copied.
This repository is Apache-2.0 (see LICENSE). SAM 3.1's masks are decoded with Meta's meta-sam-parser 0.1.0 (SAM License), installed as a dependency (requirements-judge.txt), not included here. Microduck and its simulation are by Pollen Robotics and Hugging Face, Apache-2.0. Code in this repository is written with AI coding assistants under the author's direction.
blinkflow/diagnose.pyaskcheckblinkflow/fix.py (muse_code, gate, audit) and the PreToolUse hook muse-gate/hooks/pre_tool_use.py.blinkflow/twin.py (Twin, Video), the scenes in blinkflow/scenes/.blinkflow/prove.py (replay, verdict, control); blinkflow/fix.py (fix, undo, terminal_ask).blinkflow/arm/robot/, the controller and Muse Code's only target (brain.py, brain.toml); outside it, blinkflow/arm/world/ (the scene, scene.xml, and the names given to SAM 3.1) and, in blinkflow/arm/, the twin (twin.py), the adapters to SAM 3.1's box prompt, the proof and Muse Wonder (see.py, prove.py, diagnose.py), the loop (run.py) and the offline re-check (recheck.py).blinkflow/sil/: inputs recorded in the simulator, replayed through two brains with Pollen's microduck_brain.record.replay, one Python process per brain with no site packages and sockets refused (replay.py, _worker.py), the per-case classification and summary (suite.py), the reports (report.py), the twin check (sanity.py) and the offline re-check (recheck.py).results/loop_times.md, results/quick_loop.md |
| Control after the fix, on pixels | 5/5 scenes clean, all 5 measured in the example run, as part of the acceptance, each control scene following its own obstacle as the scene defines it (until Nov 1 Glimmer named them, and an obstacle seen in no frame could pass as clean); earlier, the same in the 166.4 s run; the twin's log agrees | results/loop_times.md, results/console/ |
| Watcher (nobody speaks) | 0 false alarms in 16 runs without an incident; 14/17 incidents caught. Optimistic: the suite gave Glimmer a look every 0.97 s, live beside the simulator it is ~1.45 s | results/watcher.md |
| Voice | 5/5 TTS sentences heard, read and seen; real speech through Ray-Ban Meta glasses (F9, or a tap on their arm): transcribed, read, seen, fixed, as in examples/purple-box/ | results/voice.md |
| Muse Code alone, from the sentence only (ablation) | On both bugs tried, the purple box (a setting) and b7 (a line of code), the cause was findable from the code alone (3/3 runs each); what BlinkFlow adds is the fix on the first attempt and the proof, the twin replay and the control that say which change works. Of 18 Muse Code turns, four failed the path audit and two returned no change; replay and controls accepted all 12 retained candidates. Muse Code's time alone: 39–597 s with the precise sentence, 105–772 s with the vague one. Re-checking the ablation offline needs the local raw run folders (not in the repo) | results/ablation.md |
| A second robot: a 3-joint MuJoCo arm with a planted zero clearance | contacts 1 → 0 from pixels (first contact 2.035 s on pixels, 2.010 s in MuJoCo's log), controls 2/2 clean, Muse Wonder grounded (bad_refs=[]), Muse Code one line on the first attempt; contact and the controls measured from pixels, reaching the target read from the simulator's end-effector position; $0.27 the loop. The arm is tracked from a box on the first frame, not from text | results/arm.md |
| Log replay (SIL), open-loop: recorded inputs through the buggy and the fixed brain | 8 suite bugs: 4 a discrete decision before impact (the fixed brain brakes 2.85–8.2 s earlier, the buggy one walks on), 4 continuous-only (inconclusive); purple box continuous-only. Decision evidence, not an outcome proof; the recordings are from the simulator (the twin), not a physical robot; $0 | results/sil.md |
| Pixel rule against ground truth | 92 saved looks re-measured: 60/64 incidents caught, false alarms 1 → 0 after one correction | results/control.md |
| Cost of one loop (model calls) | $0.95 for the example run: 30 of its 52 SAM 3.1 replies paid ($0.63), 22 from the cache ($0), Muse Wonder $0.31. The run the film shows (Oct 31): $0.38, 50 of 58 SAM 3.1 replies cached; $0.84 (run 233019, 29 of 58 SAM replies cached). Earlier: $0.88 for the profiled loop; $0.34–$1.71 over the 10 runs (measuring the four control scenes adds SAM 3.1) | results/quick_loop.md, results/loop_times.md |