Synapse is a tiny, annotation-driven pub/sub bus for FIRST Tech Challenge robots. Nodes talk over named, typed topics while one dedicated thread keeps every hardware touch safe.
MIT licensed · 40 KB JAR · zero runtime dependencies
topic log — newest first
waiting for messages…
The bus never sleeps — click any control to publish your own message.
In the field Synapse runs the robot code of FTC Team 23684 · Tech Titans
40 KB
JAR, minified
0
runtime dependencies
4
threaded architecture
60 Hz
gamepad-to-topic input
Purpose-built for FTC: fast enough for a 50 Hz drivetrain, strict enough to protect your I²C bus.
Annotate a method and Synapse wires it to the topic, the thread pool, and the hardware thread — no manual tick counting, no references between subsystems.
@SubscribedTo callbacks fire the instant a value publishes. @RunPeriodically(hz = 50) loops never drift with the main OpMode loop. @OnHardwareThread hops any callback onto the only thread allowed to touch hardware. Named, typed topics mean your telemetry is a live map of the robot, not a pile of print statements.
Slow callbacks cannot starve periodic loops. Slow periodic loops cannot starve hardware writes.
| Pool | Threads | Bounded | Used for |
|---|---|---|---|
| Scheduler | 8 | — | @RunPeriodically loops |
| Callback | 4–16 | 256 | @SubscribedTo handlers |
| Action | unbounded | no | @RunnableAction invocations |
| Hardware | 1 (dedicated) | — | All hardware reads/writes |
setPower or reading a sensor
from two threads at once can garble serial-bus responses or crash
deep in the SDK. Synapse makes off-thread hardware access fail
fast — never silently.
Running Synapse in an OpMode? Tell us what's working and what's grinding your gears — it directly shapes the roadmap.
One dependency line. One hardware thread. No surprises at the competition table.
implementation "com.aaravlabs:synapse:0.4.0"