Project Status : IN PROGRESS
Code Status : GOOD
Development Status : ACTIVE
The Jaeger app format — the consistent way Jenkins Robotics apps
are built (JROS, Mochi, JP01-CC01, and whatever comes next). One
design system, many independent codebases: this repo holds the spec
and the reference chassis; every app copies app/ into its own
tree and owns it. Nothing is imported across repositories, ever.
docs/JAEGER_APP_FORMAT.md the spec (format 0.1) — the normative part
app/ the reference chassis (the thing you copy)
tests/test_app_format.py conformance tests (copied along with app/)
template/ skeleton new-app (chassis + site + CI)
site/ the landing page (GitHub Pages, served by Actions)
demos/app-demo/ ⭐ the format, generic: supervisor, crash
button, windows, tray
demos/jros-demo/ ⭐ JROS's shape: tier-1 agent (chat with
Lilith-demo), full folder map — agent/
nodes/ core/ hardware/
demos/mochi-demo/ ⭐ Mochi's shape: FrameNode renderer
subprocess, Library + MochiScript,
mini window, enabled=false plugins
CHANGELOG.md what changed per format version
Design rationale, per-app migration maps, and the decisions behind all
of it: JROS/docs/JROS_APP_FRAMEWORK_PLAN.md.
cd demos/jros-demo # JROS's shape — chat, avatar, supervisor
../../.venv/bin/python main.py
cd demos/app-demo # the format, generic
../../.venv/bin/python main.py(Each demo's README has its tour. Both can run at once — distinct bus ports.)
Setup (already done if .venv/ exists):
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]" # everything: demos + tests + lint
# or, minimal chassis deps only: pip install -e .
# or, chassis + ZMQ bus backend: pip install -e ".[zmq]"Dependencies are declared in pyproject.toml (the chassis's only
hard dep is pyyaml — the optional groups make the "stdlib + pyyaml +
optional pyzmq" contract installable). The editable install is an
empty wheel on purpose: import app always resolves to each
app's own chassis copy, never to site-packages.
Tests:
.venv/bin/python -m pytest tests/ -q # conformance (24)
cd demos/app-demo && ../../.venv/bin/python -m pytest tests/ -q
cd demos/jros-demo && ../../.venv/bin/python -m pytest tests/ -q- Copy
template/to your new repo; copyapp/andtests/test_app_format.pyin next to it. - Fill
jaeger.toml(structure: nodes, surfaces, bus, event loop) andconfig.yaml(behavior knobs). - Write nodes under
nodes/<category>/(hardware / software / …), surfaces undersurfaces/. python main.py. Conformance tests must pass in your venv.
Status (2026-06-12): format 0.1. Fused mode + thread/subprocess
backends + qt/none event loops are real and tested; split mode,
autostart, hotkey popup, and the external backend are specified in
the plan but reserved — they land in a future format version.
Did this project help you? Consider supporting!
Consider Subscribing: https://bit.ly/2DgZyuq
Patreon ➔ https://www.patreon.com/JenkinsRobotics
Venmo ➔ https://venmo.com/u/JenkinsRobotics
SUPPORT US ►
Consider Subscribing: https://www.youtube.com/@Jenkins_Robotics
Patreon ➔ https://www.patreon.com/JenkinsRobotics
Venmo ➔ https://venmo.com/u/JenkinsRobotics
FOLLOW US ►
Discord ➔ https://discord.gg/sAnE5pRVyT
Twitter ➔ https://twitter.com/j
Instagram ➔ https://www.instagram.com/jenkinsrobotics/
Facebook ➔ https://www.facebook.com/jenkinsrobotics/
GitHub ➔ https://jenkinsrobotics.github.io