Skip to main content
SYS.ONLINE

15 posts tagged with "edge-ai"

View All Tags

Reachy Mini x Strands Agent on Jetson Thor - Part 15: Conversational Memory + Composable Motion Tools

· 10 min read
Chiwai Chan
Tinkerer

Conversational memory with a rotating conversation id plus six composable motion tools feeding the Reachy Mini Python SDK

This is Part 15, the final post in the series. Throughout the build, every wake has created a brand-new agent and destroyed it — which keeps idle at $0 but means the robot forgets everything the instant it replies. This post fixes that without giving up the cost-minimal lifecycle: the robot gains conversational memory across wakes, so you can ask a follow-up — "…and what was the first thing I said?" — and the fresh per-wake agent recalls it. It also rounds out the agent's body with six composable motion tools it can chain into novel gestures.

Reachy Mini x Strands Agent on Jetson Thor - Part 14: The Media Bus — One Owner per Device, Fan Out to Many

· 10 min read
Chiwai Chan
Tinkerer

Media bus: one broker owns the camera and one owns the mic, each fanning frames and PCM out over a Unix socket to many consumers

This is Part 14 of the series. Several features now want the camera — face tracking, the idle watcher, Cosmos vision, clip recording — and the voice loop wants the mic. But /dev/video0 and the ALSA mic are single-opener devices: once one process holds either, no one else can. Until now everything that needed a device had to live as a thread inside the one process that opened it.

Reachy Mini x Strands Agent on Jetson Thor - Part 13: Recording Interactions to S3 with Presigned URLs

· 9 min read
Chiwai Chan
Tinkerer

Sampling the shared camera buffer into an MP4, uploading to Amazon S3, and attaching a presigned URL to the reply message

This is Part 13 of the series. The telemetry from Part 12 tells a subscriber what the robot did — but not what it saw. This post adds that: each interaction (and each presence detection) is recorded to a short MP4, uploaded to Amazon S3, and a presigned download URL is attached to the outgoing message, so whoever receives the event can watch the exact clip.

Reachy Mini x Strands Agent on Jetson Thor - Part 12: Robot-State Telemetry to AWS IoT Core

· 8 min read
Chiwai Chan
Tinkerer

Each agent action snapshots the robot state and publishes it to AWS IoT Core over the trigger's MQTT connection

This is Part 12 of the series. The robot now does a lot — moves, looks, emotes, answers, notices presence. I want an external system (a dashboard, a data lake, another robot) to be able to follow exactly what Reachy is doing in near-real-time. So every agent action uploads a full snapshot of the robot's state — servos, head pose, daemon status, runtime flags — to AWS IoT Core.

Reachy Mini x Strands Agent on Jetson Thor - Part 11: Going Fully Local — Nemotron on Ollama, Amazon Bedrock Optional

· 9 min read
Chiwai Chan
Tinkerer

Strands Agent with a swappable LLM backend: local Nemotron on Ollama by default, Amazon Bedrock opt-in

This is Part 11 of the series. The robot's vision has been local since Part 4, but its brain — the reasoning model the Strands Agent runs on — has been Amazon Bedrock. This post moves the brain on-device too: local Nemotron served by Ollama becomes the default, and Amazon Bedrock is demoted to a single opt-in env var.

Reachy Mini x Strands Agent on Jetson Thor - Part 10: Real-Time Face Tracking with a Single Camera Owner

· 9 min read
Chiwai Chan
Tinkerer

A single camera-owner thread publishes the latest frame to the face tracker and Cosmos Reason 2

This is Part 10 of the series. The robot can already look on demand with Cosmos vision and notice who's around while idle. Now I want it to feel present: its head should follow your face in real time — and it has to do that while Cosmos vision and the idle watcher are also using the camera.

Reachy Mini x Strands Agent on Jetson Thor - Part 9: Idle Presence — Noticing Who's Around (Humans vs Cats)

· 9 min read
Chiwai Chan
Tinkerer

Idle presence watcher: a single frame goes to Cosmos Reason 2, and a minimal agent routes the observation to report_human_presence and report_cat_presence

This is Part 9 of the series. So far the robot only acts when triggered — a wake word or an MQTT message. Now I want it to show a little life between interactions: while resting, it should quietly notice who's in the room and have a place to hang future reactions — greet a person, perk up at a cat.

Reachy Mini x Strands Agent on Jetson Thor - Part 8: 80 Emotion Moves, by Sentiment and Voice Prefix

· 8 min read
Chiwai Chan
Tinkerer

Emotion moves: a voice prefix or MQTT message sentiment routes through the agent, which picks one validated move from the Reachy Mini emotions library and plays it

This is Part 8 of the series. The robot can move with primitive gestures, but those are deliberate, literal motions. For expression — reacting to good news, bad news, a greeting, a joke — I want something richer: a library of ~80 pre-choreographed emotion moves that the agent picks from to match the mood.

Reachy Mini x Strands Agent on Jetson Thor - Part 7: A Second Trigger — AWS IoT Core MQTT

· 9 min read
Chiwai Chan
Tinkerer

AWS IoT Core MQTT trigger over WebSocket and SigV4 feeding the single-owner worker queue

This is Part 7 of the series. The robot already wakes to "Hey Reachy" and runs the full per-wake loop. Now I want a second way to trigger it — a message published to AWS IoT Core — so another system (a home-automation rule, a sensor, a script) can ask Reachy to look, move, or react without anyone speaking.

Reachy Mini x Strands Agent on Jetson Thor - Part 6: Asking the Robot About IoT Data in S3 Tables — Athena & Iceberg Q&A

· 9 min read
Chiwai Chan
Tinkerer

Discover-before-guess flow: the agent calls list_iot_tables, get_table_schema, then query_iot_data, which resolve Lambda names from the iot-datalake stack and invoke Lambda, Athena, and S3 Tables

This is Part 6 of the series. So far the robot can move, see, and run the full per-wake loop. Now I want it to answer questions about real data"Hey Reachy, has the kitchen water sensor tripped today?" — by querying an AWS data lake of IoT sensor readings, and speaking the answer back in one sentence.

Reachy Mini x Strands Agent on Jetson Thor - Part 5: The Voice-Assistant Loop — Wake, Look, Speak

· 11 min read
Chiwai Chan
Tinkerer

Per-wake lifecycle: a fresh Strands Agent built around one request, then destroyed

This is Part 5 of the series — and the centerpiece. Part 3 gave the robot ears and Part 4 gave it eyes. This post is the loop that ties them — and everything still to come — together: "Hey Reachy" → transcribe → a fresh per-wake Strands Agent that picks a tool → speak one short sentence → tear down.

Reachy Mini x Strands Agent on Jetson Thor - Part 4: Local Vision with NVIDIA Cosmos Reason 2

· 11 min read
Chiwai Chan
Tinkerer

Local vision pipeline: look_and_describe posts the latest camera frame as image_b64 to the warm cosmos_server, which runs NVIDIA Cosmos Reason 2 on the Thor GPU and returns the answer

This is Part 4 of the series. In Part 3 the robot learned to listen. Now I want to give it eyes: the ability to look through its camera and answer a question about the room — identify an object, read visible text, count things, or describe what a person is doing — entirely on-device.

Reachy Mini x Strands Agent on Jetson Thor - Part 3: Offline "Hey Reachy" Wake-Up with Vosk (No LLM)

· 11 min read
Chiwai Chan
Tinkerer

Offline "Hey Reachy" wake-up pipeline: mic to arecord to Vosk to wake-token match to head raise

This is Part 3 of the series. In Part 2 I proved the hardware works — the head moves, the mic hears, the camera sees. Now the robot can start listening. This post covers the lowest layer of the voice stack: the "Hey Reachy" wake word, running fully offline with no LLM and no network.

Reachy Mini x Strands Agent on Jetson Thor - Part 2: Bringing the Robot to Life — Hardware Bring-Up & Self-Test

· 16 min read
Chiwai Chan
Tinkerer

Reachy Mini Lite hardware bring-up: udev USB permissions → daemon → Reachy Mini Python SDK → the robot subsystems

This is Part 2 of the series building a local-first voice & vision robot on an NVIDIA Jetson Thor. In Part 1 I covered the motion foundation — a Strands Agent given motion tools that drive the robot. But all of that assumes one thing: that the host can actually reach the robot, and that the hardware underneath works. This post is about earning that assumption.

Reachy Mini x Strands Agent on Jetson Thor - Part 1: Driving the Reachy Mini Lite with Strands Agent

· 17 min read
Chiwai Chan
Tinkerer

Strands Agent calling SDK-wrapping motion tools that drive the Reachy Mini Lite through the daemon

This is Part 1 of a series that builds a Reachy Mini Lite desk robot driven by a Strands agent running entirely on-device on an NVIDIA Jetson Thor. Say "Hey Reachy" (or publish an MQTT message) and a fresh agent wakes up, decides which tool it needs — move its head and body, see the room with a local vision model, express an emotion, or answer questions about IoT sensor data in an AWS data lake — speaks one short sentence, and tears itself down. Idle is pure-local and $0: no cloud, no LLM tokens, just an offline wake-word listener.