Install teaport
This page walks you through installing teaport on a Jetson Orin Nano Dev Kit (8 GB). When you finish, the device answers you from the browser of a phone or a laptop. Allow 30 to 45 minutes. Downloading the engine and its models, about 15 GB, takes most of that time.
Before you begin
Section titled “Before you begin”- A Jetson Orin Nano, NX, or AGX, flashed with JetPack 7.2. JetPack 7.2 ships Linux for Tegra (L4T) R39.2 with CUDA 13.2; the installer accepts L4T R38 or R39. The Orin Nano with 8 GB of memory is the reference device.
- SSH access or a screen, and a home network.
- An agent: OpenClaw on the device, or NemoClaw, which is NVIDIA’s OpenClaw package. The agent gives you the browser interface, the Talk session, and the tools. You can skip the agent, but then nothing can talk to the device. See Install an agent.
- Your own large language model (LLM). Use a cloud key from OpenRouter, Groq, or Cerebras, or a local OpenAI-compatible server. See Configuration.
- A phone or laptop with a browser on the same network. Its microphone and speaker carry the audio. Nothing to plug in: the device is already powered and on the network.
- About 15 GB of free disk space for the engine and its models. The installer warns when it finds less.
Install JetPack 7.2
Section titled “Install JetPack 7.2”This step is necessary. The engine ships for JetPack 7.2 on L4T R38 or R39 with CUDA 13. On any other release, the installer stops.
Use NVIDIA SDK Manager or the Jetson Linux flashing tools, and follow NVIDIA’s flashing guide. Teaspoon AI does not host a copy of JetPack. Do not use the JetPack 7.2 ISO: NVIDIA records a known problem where the ISO does not make the 25 W and MAXN SUPER power modes available.
Prepare the Jetson
Section titled “Prepare the Jetson”Set the power mode and the swap file, and stop the desktop. See Prepare the Jetson. This step is optional but recommended.
Install an agent
Section titled “Install an agent”Choose one of the two agents. If both are present, the installer uses NemoClaw.
Option A — OpenClaw on the device
Section titled “Option A — OpenClaw on the device”OpenClaw runs on Node.js. JetPack 7.2 does not include Node.js. Install Node.js 24 and the OpenClaw release this teaport release is tested with, 2026.9.7:
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -sudo apt-get install -y nodejssudo npm install -g openclaw@2026.9.7The installer warns when the OpenClaw on the device is another release.
Give OpenClaw a minimal configuration and start its gateway:
cat > /tmp/oc-init.json <<'JSON'{ "gateway": { "mode": "local", "bind": "loopback", "port": 18789 } }JSONopenclaw config patch --file /tmp/oc-init.jsonopenclaw gateway installCheck the gateway:
openclaw gateway statusThe line Runtime: must say running, and Connectivity probe: must say ok. The gateway listens on 127.0.0.1:18789; the installer fronts it with Caddy.
Option B — NemoClaw
Section titled “Option B — NemoClaw”NemoClaw is NVIDIA’s installer. It runs OpenClaw inside a container. Run it in your own terminal and give your own consent:
bash <(curl -fsSL https://www.nvidia.com/nemoclaw.sh)Run NemoClaw as your own user. Do not use sudo. The installer looks for ~/.nemoclaw/sandboxes.json in your home folder. If NemoClaw installs into another user’s home folder, the installer does not find it.
You can skip both. The installer then finishes in voice-only mode. To add an agent later, install OpenClaw or NemoClaw and run the installer again.
Install teaport
Section titled “Install teaport”On the Jetson, run:
bash <(curl -fsSL https://get.teaspoon.tech/teaport)The address serves a small bootstrap script. The bootstrap clones the teaport repository into a temporary directory and runs the installer from that checkout. The installer reads the release manifest and downloads the engine and the models that it names.
The installer asks you:
- The engine license. Press Enter to read it, then type
accept. - Your LLM endpoint, model, and API key. The model question offers
gpt-oss-120bas the default. The key can stay empty for a keyless local server. - Your Discord server and user IDs, and the bot token. The installer asks these only
when you set
TEAPORT_ENABLE_BRIDGE=1to add the Discord bridge.
For OpenRouter, the base URL is https://openrouter.ai/api/v1.
Every question has an environment variable, so you can also run the installer unattended:
TEAPORT_ACCEPT_EULA=1 accepts the license, and TEAPORT_LLM_BASE_URL, TEAPORT_LLM_MODEL,
and TEAPORT_LLM_API_KEY preset the LLM answers. The flags and variables are in
Installer reference.
You can run the installer again at any time. A re-run repairs the existing installation; it
does not create a second one. It keeps settings that you added to /etc/teaport/brain.env
yourself.
The installer does these tasks:
- It downloads the engine, release 1.6, with its models and the pronunciation dictionary
into
/opt/teaport. - It builds the brain in a Python 3.12 environment.
- It installs the
teaportcommand and the configuration helper. - It installs the plugin into your agent and connects the agent to the brain.
- It installs the Caddy reverse proxy and Avahi, and serves the browser page at
https://teaport.local. If another device on the network already uses that name, the installer names this oneteaport-ab12.localinstead, whereab12is the end of its Wi-Fi address, the same name as its Wi-Fi setup network. - It starts the services and checks the installation.
Optional components
Section titled “Optional components”teaport has three optional components. The installer sets up none of them by default:
- Phone calls. teaport can take calls on a phone line over SIP (Session Initiation
Protocol). Phone calls are off by default;
teaport sip configureturns them on. See Set up phone calls. - The Discord bridge. The bridge joins a Discord voice channel and follows one user
into the conversation. Turn it on with
TEAPORT_ENABLE_BRIDGE=1when you install. See Set up the Discord bridge. - A microphone on the device. A ReSpeaker XVF3800 microphone array on the Jetson hears
and speaks without a phone. Turn it on with
TEAPORT_ENABLE_LOCAL_AUDIO=1. See Use a microphone on the device.
Check the installation
Section titled “Check the installation”-
On the Jetson, run this command:
Terminal window teaport statusAll three services show
active, with the engine and brain ports and the memory use. -
Run the health check:
Terminal window teaport doctorThe doctor checks the install root, the engine and its models, the brain, the LLM configuration, the services, and the ports. Every check prints
ok, or a warning that says what to fix. -
Optional: to confirm that speech recognition uses the fast path, read the engine’s first messages:
Terminal window sudo journalctl -u teaport-engine | grep -i marlinYou must see
Detected Marlin INT4 model (single-file format). Any other message means the engine uses a slower path.
If a check fails, see Troubleshooting.
Start your first conversation
Section titled “Start your first conversation”The installer printed a web address at the end, similar to the following:
browser: open https://teaport.local/#token=a-long-token from a LAN device (accept the one-time cert).Open that address on the phone or laptop. Accept the certificate warning once: the device signs its own certificate, and the browser needs HTTPS before it allows the microphone.
Start a Talk session in the page and speak. The device answers through the phone or the laptop’s microphone and speaker.
Pair another laptop or phone
Section titled “Pair another laptop or phone”You can add a browser, or the OpenClaw app on a phone, to the device without the token or a terminal.
- In a conversation with the device, say “add my laptop” or “connect my phone”. The request works in the room and in a Talk session. It does not work on a phone call.
- The device shows a QR code on its screen. Point the laptop’s or the phone’s camera at the screen, and open the link.
- The page in the browser offers two choices. Nothing is used until you press one.
- Open the dashboard here opens the dashboard in this browser and pairs it.
- Use the OpenClaw app shows a setup code for the app. Press Copy code, open the OpenClaw app, open Add Gateway from its menu (or Settings, then Gateway, if the app already has a gateway), paste the code, and connect. Paste it within a few minutes: it works one time.
- After you choose, the screen shows Finish on your device. When the new device is connected, the screen shows Paired, and the device says so. The app gets limited access: everything except the administrator’s settings.
The code stays on the screen when the conversation that asked for it ends: you can ask from the OpenClaw app or a Talk page on the same phone, then switch to the camera to scan it. Say “never mind” to take it down.
The code works one time, and for 5 minutes at most. If you need a new code, ask again: the screen shows a new code, the old one stops working, and a device that is still connecting with the old code is still recognized. Either choice can take a few seconds to start.
The link opens over HTTPS. A phone that has not trusted the device’s certificate yet must do that first: see The phone does not pair, steps 1 to 3. The OpenClaw app always needs that; a browser can sometimes go past the warning. Pressing a choice uses the code up even when the dashboard or the app then does not connect, so after you trust the certificate, ask the device for a new code.
The certificate is named for the device, for example Teaport ab12 Local Authority, so
a phone that trusts two devices lists two entries you can tell apart. The page in the
browser names it and has the steps for an iPhone, Android, Windows, and a Mac. If the
installer was given your own certificate (see
Use your own certificate), there is
nothing to trust, and the page leaves the step out.
What’s next
Section titled “What’s next”The installation is done. From here:
- Configure teaport: every setting, including the LLM credentials.
- teaport CLI reference: every
teaportcommand. - Architecture: how the engine, the brain, and the agent fit together.