Skip to main content
Everything runs on the robot. You SSH in, edit code, restart. That’s it.

Connect to MARS

1

Find your robot's IP

Open the Innate app. Go to ConfigurationWiFi. Note the IP address — and the hostname, which usually works just as well and is easier to remember.
2

SSH in

Password: goodbot<number>goodbot21 for MARS the 21st, goodbot27 for MARS the 27th. See Connecting via SSH for hostname, Ethernet, and USB-C options.
3

Open your IDE over SSH (don't skip this)

This step is the foundation of the whole MARS development workflow. All your code lives and runs on the robot — there is no local build to sync. Working in your IDE over Remote SSH means you edit the files directly where they execute, with hot reload picking up your changes. Skipping this and editing over plain ssh + terminal editors works, but is far slower in practice.
Use Cursor, Windsurf, VSCode, or any editor with Remote SSH support. In plain VSCode, install the Remote - SSH extension first (Cursor and Windsurf ship with it built in).
  1. Open Command Palette (Cmd+Shift+P / Ctrl+Shift+P).
  2. Run Remote-SSH: Connect to Host….
  3. Enter jetson1@<YOUR-ROBOT-IP> (e.g. jetson1@mars-the-21st.local).
  4. Open the folder /home/jetson1/innate-os/.
Once connected, your editor behaves exactly as if the robot’s filesystem were local: file tree, search, extensions, and the integrated terminal all run on MARS.
Set up SSH keys to skip the password prompt every time:

Optional: Fork the open-source repo

You don’t need to fork to start developing. Agents and skills in ~/innate-os/workspace/custom_agents/ and ~/innate-os/workspace/custom_skills/ work out of the box (both directories are gitignored, so your work survives OS updates). Fork when you want to save, version-control, and share your work — or modify the OS itself (ROS2 nodes, drivers, launch files).
MARS runs innate-os, fully open source. Forking gives you your own remote repo to push changes to:
1

Fork on GitHub

Go to github.com/innate-inc/innate-os and click Fork.
2

Clone your fork onto the robot

SSH into MARS and replace the default repo:
3

Copy your .env file

The .env file contains your INNATE_SERVICE_KEY and is not checked into git. Copy it from the backup into your fresh clone:
4

Make your fork launch on startup

The systemd service points to ~/innate-os/. Since you cloned into the same path, it just works. Verify:

Launch and restart

MARS auto-launches all ROS2 nodes on boot via systemd. Agent and skill files in workspace/ hot-reload while the robot is running — both new files and edits are picked up automatically within seconds. You only need to restart when you change anything outside workspace/ (ROS2 nodes, drivers, launch files), or as a fallback if a change doesn’t get picked up:
Or use the shorthand:

Watch the nodes boot

This attaches you to the tmux session where every ROS node runs. After a restart, give the nodes ~30 seconds to come up: each pane should settle into steady log output with no red error text or repeating restart loops. If a pane keeps crashing, that’s where to look first. See the Innate CLI Reference for all available commands.

Shutting down gracefully

Always shut down properly before unplugging power. A hard power cut can corrupt the filesystem.
Wait for the LED to turn off, then disconnect power.

Project structure

When you SSH in, the key directories are:

Next steps

Quick Development

Build your first agent in 5 minutes.

Advanced Development

Modify ROS2 nodes, recompile, visualize topics.

Innate CLI

Every command at your fingertips.

Foxglove Setup

Visualize what your robot sees in real time.