ibara
Give your agents a computer you own.
ibara gives your agents computer use across the Omarchy machines you own. Put a spare computer to work: your agent gets its own desktop, browser and apps, and you keep working on yours.
ibara.app · Docs · Benchmarks · Roadmap


Every computer you add shows up as a live picture in a console on the others, where you can watch it, send it files and take control of it.
Your agents work on those computers' real desktops, with their own cursor, while you approve what matters and step in whenever you like.
ibara runs on Omarchy (Arch Linux with Hyprland). Ubuntu 26.04 amd64 has separate standalone Console and GNOME target packages; see Ubuntu installation and compatibility. Your computers reach each other over your own Tailscale network. It is free and open source.
Want it set up for you? Cirlet offers paid setup and support.
Install
On an Omarchy computer, run this as yourself, not as root:
curl -fsSL https://github.com/MayberryDT/ibara/releases/latest/download/install | sh
The installer downloads the newest release and checks its signature and each package's digest. It installs 3 packages with pacman: ibara, and ibara-stream and ibara-view for Take Control. Then it runs ibara setup, which asks for your password once and puts the ibara mark in your bar.
Install ibara on each computer you want to use, then open the console from the bar and choose Add Computer. Your own computers on your tailnet add each other in one step.
To check a release by hand before you install it, see release verification.

What you can do

- See every computer at once on the fleet wall, with a live picture, who is using it and what it is doing.
- Watch one computer's screen, follow its agent tasks step by step, and read its history in Activity.
- Send files by dropping them on a computer, and collect what an agent made for you.
- Take Control of a computer in a viewer window, with the keyboard, mouse and clipboard, then Hand Back.
- Let agents do real work on a real desktop: open apps, click, type, save files, fill in web pages and run commands.
- Approve the steps that matter before they happen: sending, spending, deleting and changing access ask first by default.
- Share a computer with a friend for an hour, a day, a week or until you revoke it, with a single-use invite code.
- Wake, restart, lock or put a computer to sleep, and apply your Omarchy theme to the whole fleet.
- Catch up on what happened while you were away, one line per computer.
Connect any agent
ibara works with any agent that can use MCP servers, such as Codex, Claude Code, opencode and omp. There is nothing to configure by hand. Open the console, choose Copy Prompt under Connect an Agent, and paste the prompt to your agent. On a computer without the console, ibara prompt prints the same prompt.
The prompt has the agent do three things itself, so ibara never edits any agent's files:
- add
ibara mcp to its MCP settings as a user-level server named ibara. One entry reaches every computer you have added, including ones you add later;
- link the ibara skill, which the package installs at
/usr/share/ibara/skills/ibara, into its skills folder. The skill says when to use ibara and how to work so results can be trusted, and it updates with ibara;
- add a short marked block to its user-level instructions file (AGENTS.md, CLAUDE.md or similar), so every session knows ibara is there and when to reach for it.
The agent gets 11 tools, described in agent tools.
Compositors
Hypoland is also supported through optional compositor input. ibara selects it
automatically on Hypoland, which has no plugin system. Screen capture,
accessibility reads, app launch, clicks, US keyboard text, shortcuts, scrolling,
and drags within one window work without the Cua plugin. Other text uses
accessibility insertion when the app supports it. This route has reduced input
safety: it checks window geometry before input, cannot enforce the plugin's
surface and popup rules, and cannot detect a person's physical keystrokes.
Mouse movement stops input between steps. Dispatcher keys require a seat
keyboard. Doctor and agent status state these limits. This was tested on a nested Hypoland desktop; old GPU hardware and
Take Control on Hypoland still need verification.
On stock Hyprland, the plugin remains the default. To select the fallback when
the plugin is unavailable, put this in ~/.config/ibara/settings.toml:
[agents]
input_backend = "dispatchers"
Use "auto" to return to the normal compositor choice, or "plugin" to require
the plugin. A plugin refusal never retries input through dispatchers.
How it works
flowchart LR
subgraph here["Your computer"]
agent["Your agent<br/>(Codex, Claude Code, …)"]
mcp["ibara mcp"]
console["ibara console<br/>(Omarchy bar plugin)"]
service["ibarad<br/>(console service)"]
viewer["ibara-view"]
agent -- "MCP over stdio" --> mcp
console -- "local socket" --> service
end
subgraph there["Another of your computers"]
entry["Agent entry<br/>(SSH on port 2222)"]
daemon["ibarad"]
journal[("Journal:<br/>tasks, approvals,<br/>access, history")]
cua["Cua driver and<br/>Hyprland plugin"]
stream["ibara-stream"]
desktop["Hyprland desktop"]
entry --> daemon
daemon --> journal
daemon --> cua --> desktop
daemon --> stream --> desktop
end
mcp -- "SSH over Tailscale" --> entry
service -- "SSH over Tailscale" --> entry
viewer -- "video stream,<br/>one-time ticket" --> stream
Every computer runs the same ibara, so every computer is a peer. Each one runs ibarad, the service that owns its desktop for agents: it keeps a journal of every task, step, approval and access change, and it writes each step down before carrying it out, so a restart never loses track of what happened.
Agents and consoles reach another computer through its agent entry, an SSH server that listens only on Tailscale addresses and accepts only the keys of computers you paired. ibarad checks every call against that computer's access rules, then acts through Cua's driver, which reads apps through accessibility and moves the agent's own cursor, so you can see where it is working. Web pages are read through a small browser extension that never clicks or types by itself.
When you take control, the computer pauses its agents and starts ibara-stream. Your console's ibara-view connects with a ticket that works once, for your viewer only.
Architecture explains each part in more depth.
Security model
ibara gives people and agents real power over real computers, so we designed it to be clear about who can do what.

- Nothing listens on the internet. The agent entry, pairing and Take Control's stream listen only on this computer's Tailscale addresses. If the ufw firewall is on, setup opens those ports on the Tailscale interface only.
- Adding a computer needs proof. Tailscale tells ibara which computer and which login is asking. Your own computers add each other when your console on the asking computer vouches for the request. Anyone else's computer waits until a person at your computer accepts a 6-digit code that both screens show, or brings a single-use invite code you made.
- Every computer and every agent has its own permissions: Watch, Files, Take Control, Agent Tasks and Administer. Each is Allowed, Ask First or Denied. A friend's invite never includes Administer, and you can change or remove any permission from the Access tab at any time.
- Agents are named. A connected agent is, for example,
claude@your-laptop: its MCP client's name, shortened for well-known agents such as Codex and Claude Code, and the computer it came from, not an anonymous key.
- Steps that matter ask first. By default, reading and ordinary changes are allowed, while sending, spending, deleting and access changes wait for a person to approve that exact step. An approval covers only that step, and it ends if control changes hands. You can turn off asking before sends, spends and deletes for agents from your own computers, for every computer, one computer or one agent; agents from anyone else's computer keep asking, and access changes always ask.
- You can always take over. Moving your mouse stops the agent's input at once, and Take Control pauses every agent until you hand back. Hand Back lets agents work again unless you paused them yourself, and never restarts an agent's task by itself.
- Releases are signed. The installer and
ibara update check the release's signature against a key built into ibara, and every package's digest, before anything is installed.