zip
AGENTS.md2 starsChanged 5 months agoMITView on GitHub
If you are an AI agent (Claude, Codex, Cursor, OpenClaw, anything) picking up work on this repo, read this first. It points you at the right context in the right order and tells you what NOT to do. Zip is a layered AI/robotics system. The headline component right now is Jarvis — a vision-first agent on a Jetson Orin Nano Super (depth + perception + 3D Gaussian-splat reconstruction; LLM exploration is dormant pending a hybrid PC-brain architecture). The embodied side…
- Reads credentials
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,439 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository3 other files it gives its agents.
- .github/copilot-instructions.mdCopilot instructions
- autonomous-devSkill
- drive-safetySkill
The file
We split this AGENTS.md into the rules it gives an agent
9 rules. About 0 are common, 4 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 3
If you are an AI agent (Claude, Codex, Cursor, OpenClaw, anything) picking up work on this repo, read this first.
- Distinctive: line 54
If you find yourself wanting to break one of these, stop and open an ADR proposing the change.
- Very specific: line 89
Add a "convenience" PWM control path that doesn't go through motion.py.
- Very specific: line 91
Commit node_modules/, .pio/, .venv/, models/, *.engine, *.onnx, or other build/runtime artifacts.
- Very specific: line 131
Use Agent tool with Explore subagent for read-only code surveys.
- Very specific: line 132
Use Agent with general-purpose for multi-step research.
- Distinctive: line 144
Don't go in circles: if you've tried the same approach 3 times and it hasn't worked, switch strategies or escalate.
- Distinctive: line 149
If a directory has a CLAUDE.md, prefer its guidance over this file for changes in that directory:
- Very specific: line 159
If you have a memory system (e.g., Claude's C:\Users\<user>\.claude\ projects\C--Zip\memory\), you'll find:
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AGENTS.md — Orientation for autonomous agents
If you are an AI agent (Claude, Codex, Cursor, OpenClaw, anything) picking up work on this repo, read this first. It points you at the right context in the right order and tells you what NOT to do.
What this project is, in three sentences
Zip is a layered AI/robotics system. The headline component right now is Jarvis — a vision-first agent on a Jetson Orin Nano Super (depth + perception + 3D Gaussian-splat reconstruction; LLM exploration is dormant pending a hybrid PC-brain architecture). The embodied side is Zip v2 — an Elegoo Smart Car chassis driven from a Next.js cockpit via a Python brain on the Jetson over a WebSocket. Zip v1 is the archived predecessor (OpenAI voice + ROS 2), preserved as a reference predicate, not a migration target.
Required reading, in order
README.md— elevator pitch + tree shape.docs/ARCHITECTURE.md— the umbrella picture: PC + Jetson + robot, who owns what, the bus, the pub/sub model.docs/ROADMAP.md— phase tracking across the robot, Jarvis vision, and Jarvis LLM tracks.docs/GLOSSARY.md— terminology (Zip vs Jarvis vs OpenClaw, sticky topics, deadman, brain, HUD, etc.).docs/KNOWN_ISSUES.md— gotchas. Read this before debugging anything that smells weird.docs/adr/— decisions and the reasoning behind them. Skim the index; deep-read whichever ADR your change interacts with.
For component-level depth, also read:
zip-v2/docs/PROTOCOLS.md— every wire format (UART JSON, WebSocket envelopes, HTTP MJPEG).zip-v2/docs/DEPLOY.md— cold-start a fresh Jetson.jarvis/README.mdand component READMEs.- The component's local
CLAUDE.mdif one exists.
The three immovable rules (do not violate)
These have ADRs explaining why:
- UNO owns time (ADR 0002) — PWM, motor ramps, the deadman watchdog live on the ATmega328P. Never duplicate motion logic in the brain or HUD.
- UART is exactly 500000 baud (ADR 0003) — not 460800 ("about that"). 500000.
- Wheels lock by default on the bench (ADR 0005) —
ZIP_MOTION_LOCKED=1is the default. Don't silently un-default it.
If you find yourself wanting to break one of these, stop and open an ADR proposing the change. Don't just do it.
What you CAN proceed on without asking
- Documentation: cross-references, typo fixes, expanding examples in
any
*.mdfile. - HUD UI polish that doesn't touch the WebSocket protocol.
- Adding tests (especially the empty V2 cockpit E2E coverage).
- Refactoring within a single file/module without changing public API.
- Per-component
CLAUDE.mdimprovements in the directory you're editing in.
What you SHOULD pause and ask about
- Anything that touches the motion gateway (
zip-v2/brain/zip_brain/motion.py). Safety-critical. Default to no. - Anything that touches UNO firmware motor code (
zip-v2/firmware/uno/src/main.cpp). Real-time, hard to test, easy to brick the robot. - Anything that adds a new dependency to the brain — the Jetson has 8 GB of unified memory and any package that grabs CUDA memory competes with perception. Ask first.
- Anything that changes the wire format (UART JSON, WebSocket envelopes). Triple-coupling: brain + HUD + firmware. Get sign-off before designing.
- Anything that pushes to a remote, opens a PR, deploys, or runs
destructive
gitoperations. Always ask. - Anything that unlocks the wheels without explicit human request.
What you should NEVER do
- Bypass the motion gateway (e.g., direct UART writes from a script).
- Silently change
ZIP_MOTION_LOCKEDdefault to0. - Hardcode credentials. The
secrets.hfor ESP32 Wi-Fi is gitignored for a reason; the OpenAI key for the V1 routes is in.env. - Add a "convenience" PWM control path that doesn't go through
motion.py. - Commit
node_modules/,.pio/,.venv/,models/,*.engine,*.onnx, or other build/runtime artifacts..gitignorecovers these; respect it. - Force-push to
masteror rewrite shared history. - "Fix"
next lint(it's a known upstream bug; the placeholder script is intentional).
How to verify your changes
| You changed | Verification |
| HUD code | cd zip-v2/hud && npm run typecheck && npm run build (and visual test against live or mocked brain) |
| Brain (Python) | ssh zip-jetson && sudo systemctl restart zip-brain && journalctl -u zip-brain -f for 60 s without exceptions |
| UNO firmware | pio run -e uno (size report), then upload + pio device monitor -b 500000 and exercise N=120 diagnostics |
| ESP32 firmware | pio run -e esp32cam_sta, upload, check http://zip-esp32-cam.local/health |
| splat-lab Python | scp to Jetson, run launcher, eyeball SuperSplat viewer in browser |
| Docs only | grep -r "broken-link-i-just-created" . to avoid dangling refs |
Workflow conventions
Use the right tool for the job
- File reads / searches:
Read,Grep,Glob. NOTcat,grep,findviaBash. - Edits:
Editfor surgical changes;Writeonly for new files or full rewrites (andReadfirst if the file exists). - Bash: for git, npm, ssh, pio, complex pipes. Not for read/edit.
Commits
- One logical change per commit.
- First line: imperative, ≤72 chars, prefix like
phase:,fix:,safety:,docs:,refactor:. - Body explains why, not what. Reference the relevant ADR or phase doc.
- Co-author your work with the model that did it (per the repo convention; see existing log).
When using subagents (parallel research)
- Use
Agenttool withExploresubagent for read-only code surveys. - Use
Agentwithgeneral-purposefor multi-step research. - Brief the subagent like a smart colleague — include file paths, the question, and the desired output format. Don't say "based on your findings, implement X" — synthesis is your job.
When you're stuck
- The robot is on a desk; you can't drive-test from a remote session. Mock the brain, or stop and ask the human to drive-test on hardware.
- The Jetson may be unreachable (powered off / USB-C disconnected). If
ssh zip-jetsontimes out, tryssh zip-jetson-wifi. If both fail, the human needs to power the Jetson back on — you can't. - Don't go in circles: if you've tried the same approach 3 times and it hasn't worked, switch strategies or escalate.
Per-component agent docs
If a directory has a CLAUDE.md, prefer its guidance over this file
for changes in that directory:
zip-v2/hud/CLAUDE.md— HUD-specificzip-v2/firmware/CLAUDE.md— firmware-specificjarvis/splat-lab/CLAUDE.md— splat-lab-specificjarvis/llm/CLAUDE.md— OpenClaw / Ollama specific
Memory (per-agent persistent state)
If you have a memory system (e.g., Claude's C:\Users\<user>\.claude\
projects\C--Zip\memory\), you'll find:
project_zip_v2_session_handoff.md— current sprint state pointerreference_repo_rename_2026_06_04.md— URL history (zip-v2 → zip, Zip → zip-v1-archive)reference_openclaw_jetson_deploy.md— the hard-won 8 GB Ollama tuningreference_jetson_perception_deploy.md— YOLO on Jetson recipereference_avr_baud_math.md— why 460800 is a trapfeedback_jetson_ssh_use_openssh.md— use stock Windows OpenSSH
These are snapshots from past sessions. Verify against current code before asserting as fact — files may have moved, branches may have changed.
Final advice
The author cares about safety, clarity, and not breaking working things. When in doubt, default to small, reversible, well-explained changes and ask before doing anything that could destroy work, embarrass on production, or unlock the wheels.
Welcome aboard.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

