Your coding agents, on your own machines, from your phone.
You leave Claude Code working on the laptop, or on a box at home, and walk away. Then it stops to ask whether it may run something — and you are not there. Shrooms Agents puts those sessions on your phone and in Basecamp: you see the reply as it is written, allow what it wants to run, answer its questions, send it a photo or a voice note.
shrooms is what makes that simple. Your machines are already on one mesh, so the phone reaches the laptop wherever both are — no port forwarding, no cloud relay, no account, no tunnel service. And the mesh is the lock: the agent listens only on mesh addresses, so only your own devices can reach it.
On each machine that runs coding agents — shrooms already installed there:
curl -fsSLO https://raw.githubusercontent.com/vpavlin/shrooms/master/scripts/install-agent.sh
sudo bash install-agent.sh --voice
It runs the agent as you — never as root — and opens it to the mesh only;
--voice adds voice notes (the whole setup).
On the phone, Shrooms Agents is an Android app beside shrooms: in F-Droid,
add the repository https://apps.vpavlin.xyz/fdroid/repo and
install Shrooms and Shrooms Agents, then open it from the "agents" link in
the shrooms app. In Basecamp, add the repository
https://apps.vpavlin.xyz/basecamp/logos-repo.json and install
shrooms_core, shrooms and
shrooms_agents. Building them yourself:
setting up.
Each machine runs shrooms-agent, which keeps that machine's
sessions: a name, a directory, and the coding agent working in it —
Claude Code, or
pi on any model, one on your own hardware
included. The phone app and the Basecamp module find every agent on your
mesh and show all their sessions together.
shrooms-agent listens only on the machine's mesh addresses —
never on its LAN or public ones — so the only devices that can reach it
are your mesh's members. There is no account, no token, no server in the
middle, and nothing to log in to: being admitted to the mesh is the
authorisation, and revoking a device from the mesh revokes it here too.
What that means, said plainly. Every member of the mesh can drive the agents on it, and an agent can do whatever its user can do on that machine. That is right for a mesh of your own devices, which is what this is for. It is not right for a mesh you share with other people — run the agent only where every member is you.
The agent runs as an ordinary user, never as root, and is a separate program from the shrooms daemon: the network stays the boring, privileged part, and the part that runs code on request stays out of it.
What the installer does, Claude Code and pi on a headless machine, voice notes, and what to check when something does not connect: setting up.