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.
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.
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 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.
tuimote's dashboard is best experienced as a progressive web app (PWA).
Software updates and changes to your custom panels require a PWA restart.
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.
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.
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.
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
tuimote whoami to let a tuimote session know its own
shorthand.tuimote session ls to get a list of running sessions, and
the ones that are inactive in the current repo.tuimote session start to spin up a new session or restart
an existing one, tuimote session stop to do the opposite.tuimote session view to show the latest session pane
non-interactively.tuimote session send to send a message to another live
session.tuimote session request to request a formal reply from
another session, with a retry mechanism and max token bounds.tuimote session self-compact is a handy way to tell
long-running sessions to keep the context window reasonable, without having
to resort to forced auto-compaction.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 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 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 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 is a basic code viewer that allows you to directly address files or file segments with your agent.
The Git panel is a very basic working tree and git log viewer, subject to future improvements.
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.
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.
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.
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.
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.
Use the /tuimote skill and tell your agent to customize your
repo card.

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.