Self-hosted · Runs on your hardware
One Docker Command

Your hardware. One browser to control it.

Turn a Jetson, Raspberry Pi, or local server into a browser-based control station. Add live video, controls, and telemetry without building a frontend.

See how it works
JetsonRaspberry PiROS2MQTTWebSocketREST APILive VideoPWADocker Ready
flintbay.local / tracked-robot
Online
Front camera
LIVE
LIVE VIDEO · LOCAL NETWORK
Battery
78%
Controls ready
STOP

Build the control station your machine needs

Start with a camera, joystick, buttons, and battery state. Add only what your operator needs from 42 reusable widgets across six categories.

Control

Drive, switch, and adjust hardware with controls designed for repeated operator use.

ButtonJoystickSliderNumber InputToggleColor PickerSelectDirection Pad

Your robot works. Why build another control app?

A joystick and a video player are easy to prototype. A control station that reconnects, keeps state in sync, survives long sessions, secures access, and works across devices is a separate software project.

Flintbay packages that reusable layer. You build the machine and its logic; Flintbay handles the browser control surface.

Why run it locally?

Responsive

Keep the control path close to the machine.

Private

Telemetry stays on infrastructure you control.

Available

Your local control station does not need the internet.

A separate frontend to maintain
Video, controls, and telemetry split across tools
Reconnect and stale-state edge cases
Authentication built from scratch
Layouts tied to one machine
Cloud dependency for local hardware

From endpoints to a working cockpit

Run Flintbay on a Jetson, Raspberry Pi, laptop, or server. Connect ROS2, MQTT, REST, or WebSocket, then arrange live video, controls, and telemetry without writing frontend code.

You bring:

  • A robot, test bench, or connected device
  • ROS2, MQTT, REST, or WebSocket endpoints
  • Camera and telemetry sources

Flintbay provides:

  • Live media widgets
  • Joystick & D-Pad
  • Buttons & setpoints
  • Gauges & charts
  • Transforms & bindings
  • Command feedback
  • Users, roles & audit
  • Saved device layouts

Built for hardware you can touch

Start with a robot cockpit. Reuse the same control surface for a test bench, lab, or any local device with an API.

Robot Builders

Put live video, a joystick, drive controls, battery, and connection state in one browser view.

R&D & Test Benches

Build a reusable panel for actuators, sensors, cameras, and setpoints instead of another throwaway UI.

Makers & Robotics Labs

Give a TurtleBot, rover, or Jetson project a control station that opens on a laptop, tablet, or phone.

Connected Hardware

The same widgets can control lighting, irrigation, home-built automation, or anything exposed through an API.

Control, media, and telemetry together

Compose the operator view around the machine: interactive controls, live media, current state, history, and structured data on the same page.

Protocol-independent widgets

Connect MQTT, REST, WebSocket, and ROS2 through declarative bindings. Keep the layout while the transport or payload evolves.

Application plumbing included

Authentication, workspace roles, account management, audit and platform logs, reconnect behavior, command modes, and state synchronization are part of the platform—not a new backlog for every robot.

AI-assisted setup through MCP

Connect a supported AI client and create sources, endpoints, widgets, and bindings through structured tools instead of editing generated frontend code.

Explore the control station

Get an account on the live instance with a workspace of your own. Connect the built-in hardware emulator, arrange widgets, and drive them from the browser before installing anything. Email, a password, one activation link.

A public instance that may be reset without notice. Treat anything you build there as temporary, and don't reuse a real password.

Deployment

Keep the control station with the machine

Flintbay ships as one Docker image with the web app, API, PostgreSQL, and Redis. Run it on the robot's Jetson, a Raspberry Pi, a laptop, or a nearby server so the interface is ready whenever the hardware is.

Edge-ready

AMD64 and ARM64 images cover servers, laptops, Jetson, and Raspberry Pi.

Persistent by default

Saved layouts and configuration survive container restarts and image updates.

Local-first

Control traffic and telemetry can stay on the same network as the hardware.

Application security included

Authentication, sessions, workspace roles, rate limits, and audit logs are already part of the stack.

Full setup guide on GitHub
docker-compose.yml
# Run the control station beside your hardware
services:
flintbay:
image: ghcr.io/flintbayhq/flintbay:0.1.1
ports:
- "19580:19580"
- "8189:8189/udp" # live video
- "8189:8189/tcp"
environment:
FLINTBAY_PUBLIC_URL: http://localhost:19580
volumes:
- flintbay_data:/var/lib/flintbay
restart: unless-stopped
volumes:
flintbay_data:
$ docker compose up -d
✔ Control station ready at :19580

0.1.1 is the current release. :latest tracks the newest stable one; pin a version like this in production so an upgrade is something you choose.

Built for the moment you just want to drive

Flintbay is a solo project that started with a simple goal: replace a pile of physical controls with a camera, joystick, buttons, and telemetry in the browser. It now runs beside real hardware on Jetson and exists so the next machine does not need another control app from scratch.

Support the project
Built to be used, not babysat

Open the browser.Control your hardware.

Camera, controls, and telemetry in one local operator view.
Deploy Flintbay, connect your endpoints, and build the panel around your machine.

Deploy it yourself
Runs locally
Realtime control
Access control included