tuimote / docs / user guide

Basic setup

System and software requirements

Hosts run a resource-friendly Rust binary on macOS (Apple Silicon) and Linux (ARM & x86). If you can run Claude or Codex, you can run tuimote a dozen times over. Paired with the efficient Pi harness, it runs smoothly even on a Raspberry Pi 4, enabling a comfortable remote control experience from any device.

The host

tmux and git have to be installed, as well as at least one supported agentic harness.

To unlock agentic background tasks such as prompt improvement, issue research, and summary generation, the Pi harness needs to be installed and configured, ideally with a Flash-class model. You can configure different background task runners, but this is entirely untested.

Optional software

Pre-installed panels can extend their functionality with various open source programs such as pandoc for LaTeX artifacts, mermaid for diagram artifacts, lilypond for sheet music artifacts, or macmon, btop, htop, and nettop for system monitoring. Installing the gh CLI tool enables issue management for your GitHub-hosted repos.

tuimote also has experimental support for the command line editors Helix, vim, neovim, and nano via the dedicated editor sessions.

If your machine has zsh-completions, bash-completions or fish, the message composer and prompt editor will offer completions when in !command or shell mode.

Any other command line software can be accessed in a pure shell session, but it won't integrate with tuimote's features. You can always create your own panel to extend your personal tuimote's capabilities instead.

Clients

Clients just need a browser and, preferably, a way to install progressive web apps (PWA). tuimote works great on phones, tablets, laptops and desktop computers alike.

Progressive Web App (PWA)

tuimote's dashboard is best experienced as a progressive web app (PWA).

Software updates and changes to your custom panels require a PWA restart.

Security

At its core, tuimote is a way to access shells on your machine(s) from any device, with a central graphical user interface optimised for using and managing AI harnesses. This means that any tuimote user has full system access to all federated servers. While a lot of effort is going into making the system securable, it still relies on the user not making risky decisions.

⚠ Never use tuimote in untrusted environments. Never forward tuimote's port to the public internet. To access it away from your local network, set up a secure tunnel.

Create a long, secure password and enable two-factor authentication. As a second layer of defense, it's strongly recommended to enable HTTPS. tuimote can issue its own certificate, but you can also bring your own or use Tailscale. Using HTTPS also comes with the added benefit of enabling more modern network protocols and better browser support.

HTTPS certificate

Use the command tuimote trust on your main tuimote server to print instructions for how to install and activate the certificate on your client devices, allowing you to access the dashboard securely.

Federation

You can configure the federation feature to connect multiple tuimote servers into one. It is possible to enable network auto-discovery for a quicker setup, especially when your devices don't have a stable network identity. Use a strong, unique password as your shared secret. For long-term setups, you can also configure the network statically. Don't forget to repeat the setup on each peer to enable two-way visibility.

After finishing your setup, disable the dashboard on all of the peers that you won't access directly. To do this, use the command tuimote dashboard off on the peer machine. You can still change the peer's settings via the CLI.

Session communication & management via the CLI

tuimote sessions can talk to each other, across harness and even device boundaries. This works via the tuimote CLI. Your agents will automatically see the /tuimote skill to understand this feature.

The most commonly used commands are

Many session commands are wrappers around tmux send-keys and tmux capture-pane, extended by features useful for inter-session communication (e.g. automatically showing who a message came from). To get a full view of all session commands, type tuimote session --help.

Panels

Panels are a way to bridge the gap between the harness-first experience in the terminal and the GUI benefits of an IDE & Desktop AI chats. Panels are JavaScript plugins that can execute and parse CLI tools, run their own shells, interact directly with the harnesses, send messages to sessions or spin up new ones. While the main purpose of panels is to create your own custom ones, there are a few core panels that ship with tuimote natively:

The Issues panel

The Issues panel allows for an issue-first workflow and supports both basic local issue management, as well as working with remote GitHub issues via the gh CLI. Issues can be filed, researched, commented and improved manually and agentically, and fully formulated issues can be sent directly to the harness for implementation.

The Docs panel

The Docs panel provides quick access to documents, and can be used as a feature-rich artifacts feature, as is commonly known from the most popular Desktop AI apps. In addition to Markdown and HTML, the Docs panel also supports niche open source document formats like LaTeX, Mermaid, and Lilypond, and it can even handle some basic CSV-based table calculation. A versioning system keeps track of changes to the documents as they are refined by the agent according to your instructions.

The Code panel

The Code panel is a basic code viewer that allows you to directly address files or file segments with your agent.

The Git panel

The Git panel is a very basic working tree and git log viewer, subject to future improvements.

Build your own

The main purpose of panels is to allow users to create easily reachable GUIs for the parts of their workflows that benefit from such a representation. The only requirement is that your project exposes a CLI to the panel API for your custom panel to consume. Examples: A database tool that gives you access to your 5 most common interactions with one tap; A server log viewer filters and highlights what's most important to you. A simple, phone friendly bug tracker GUI. Basically, if it's on the command line, you'd like to use it, and it would benefit from a visual representation and/or quick shareability to your LLM agent, consider creating a panel for it.

Use the /tuimote-panel skill to give your agent all the knowledge necessary to get one up and running.

Other neat things

Session Conversion & Transfer

tuimote can convert sessions between different harnesses (as of 21/08/26 confirmed and maintained between Claude Code, Codex, OpenCode & Pi). This is particularly useful in case of API outages, when running out of usage credits, or when transferring the precise context of a session into a harness with different abilities.

Disclaimer: conversion can be lossy, as some features between different harnesses are not compatible.

With session conversion also comes the ability to transfer sessions between repos and even between devices of the same federation.

Document Maintenance Automation ("tasks")

Tasks can be configured in your repo settings, and they allow you to send custom prompts and command outputs into the running session or run background agents based on specific triggers, such as token count reached, commit, or file touched. Compared to a specific harness' hooks this is not as flexible, but can be used reliably across all kinds of agents.

Templates, Drafts, Slash Commands

In terminal sessions, the prompt or command is written into the message composer before it is sent into the TUI pane. If the message is getting more complex, it is possible to expand the composer into a full prompt editor with the ability to save drafts, access the prompt history, and let a background agent research & improve the prompt based on insights from previous sessions.

It is also possible to configure templates, accessible via //double-slash notation. These work similar to normal /slash-commands with the added ability to inject cli command outputs into the prompt, via the notation {{cmd: your command here}}. That way it is possible to design situationally flexible, reusable prompts.

Commit & Issue Attributions

If you want, tuimote can track which issues and commits were touched by a specific tuimote session. Via the session info and session history browsers, you can then investigate similar previous sessions and instruct your agents to take their insights and caveats into account.

Dashboard Customization

Use the /tuimote skill and tell your agent to customize your repo card.

About

Portrait of Jakob Schmidt

tuimote is just a glue layer between other people's much more fundamental work. Sessions are persisted by tmux, delivered to you by tokio-rs/axum, and displayed to you by xterm.js. Further Rust ecosystem deps handle things like authentication, encryption and more. Without these systems and their rock-solid reliability none of this could work.

tuimote is created and maintained by Jakob Schmidt, a classically trained musician and sound engineer by trade, and an enthusiastic tech nerd since he built his first Linux machine as a 12-year-old.

LLM-boosted workflows can be incredible productivity multipliers, but they also run massive risks. Don't stop owning the code, always try to understand its consequences. By contributing, you can help turn tuimote into a tool that improves understanding instead of eroding it.

tuimote is forever-free software licensed under AGPL-3.0-only.