首次运行需构建智能体桌面镜像,耗时数分钟;Windows 上 Docker Desktop 可能要求接受条款或重启以启用 WSL 2;直接访问 127.0.0.1:6796 只会看到锁定页,需用 npm run open 打开私有链接;至少需要一个模型提供商的 API key,除非加 --local 用 Ollama。
xiryn
SouravBeraAkaSpeedMIT活跃维护开源自托管个人 AI 代理,每个代理在 Docker 里跑独立 Linux 桌面,支持自带密钥接入任意模型,还能通过 Telegram 远程操控。
Xiryn — the open-source personal agent. Does everything Muse, Grok Bot and Dots do, on your own computer: each agent gets its own Linux desktop in Docker, any model with your keys, an encrypted vault, and control from Telegram.
curl -fsSL https://raw.githubusercontent.com/SouravBeraAkaSpeed/xiryn/main/setup.sh | bash
cd xiryn && npm run devREADME 未说明显存或 GPU 要求;需约 4 GB 空闲磁盘,并安装 Docker 与 Node.js 20.9+。无 API key 时可用 --local 安装 Ollama 并下载适配本机内存的模型,纯 CPU 亦可运行。
在自己电脑上跑的开源个人智能体,每个智能体独占 Docker 里的 Linux 桌面
开源自托管个人 AI 代理,每个代理在 Docker 里跑独立 Linux 桌面,支持自带密钥接入任意模型,还能通过 Telegram 远程操控。
核心能力
- 每个智能体运行在独立 Docker Linux 桌面中,不碰你的鼠标和文件
- 支持 OpenAI、Anthropic、Google、Ollama 等 11 家模型,可按智能体分别选模型
- 数据存本地 SQLite,登录凭据放系统托管的加密保险库
- 通过 Telegram 扫码配对远程控制,无需公网地址或端口转发
- 多个智能体可组队,按任务自动委派给合适的成员
容易踩的坑
- v0.7.0Xiryn 0.7.0 — agent computers your size, only your own browser最新正式版2026-11-02 · 2026-11-02 14:06 UTC
Agent computers your size, agents that only answer to you, and fixes for local models that can't see images.
Added
- Size each agent's computer. Under Machine → Size in an agent's workbench, give it as many processors and as much memory as your computer has, and a screen from 1280×800 to 2560×1440. The machine moves to its new size the next time it starts, keeping its files. When Docker itself is allowed less, Xiryn says so; on Windows it offers to raise Docker's limit for you (it changes your WSL settings, keeps a backup and restarts Docker).
npm run openopens Xiryn in your browser.
Changed
- Xiryn only answers your own browser. It always refused other computers, but an agent's machine could reach it through Docker and pretend to be you.
- Now Xiryn answers only a browser that was opened with its link. The link carries a key from your data folder, which no agent's machine can read, and your browser remembers it.
- The first start opens the link for you, and every start prints it.
npm run openopens it any time. - Another browser sees a page explaining this.
- Models that can't see images get a shell, not a broken desktop.
- The model picker now says when a local model (Ollama, LM Studio) can't see images, before you create an agent on it.
- An agent on such a model works through its shell and files instead of failing at its first screenshot.
- When a provider refuses images mid-task, the error says what to do, and the agent works without the desktop from then on. (#22)
- Agents no longer assume their screen is 1280×800; each screenshot says its real size.
Fixed
- Self-hosted Firecrawl. "Test connection" reported a working self-hosted Firecrawl as not connected, because it asked for credits only the hosted service has. It now reads a small page instead and says "your own server". A server of your own also works without a key. (#19)
- Deleting a busy agent. Its tasks, including any its squads were running, now stop and finish saving before anything is deleted. The records go in one step, then its machine. If Docker isn't running, you're told the machine is removed once it is. (#7)
Security
- Web pages can't pass as your instructions. Search results and fetched pages now reach the model marked as untrusted, in a way a page can't undo, and agents are told that only you give them orders. (#18)
- Agents' machines are kept apart. They now share a network on which they can't reach each other, only the internet, and can't craft raw network packets. Existing machines are rebuilt at their next start, keeping their files.
- Vault values go into web pages only. A login, card or personal detail is typed only when the agent's browser is the focused window, never into a terminal or another app.
- Phone take-over links close sooner. A link now closes as soon as you hand the desktop back, instead of after 30 minutes.
Upgrade:
git pull && npm install, then restart Xiryn (npm run background -- restartin background mode). The database migrates itself. The first start after upgrading opens Xiryn in your browser with its new link; after that, usenpm run openor the link Xiryn prints. - v0.6.0Xiryn 0.6.0 — routine history, native Ollama, no more silent replies2026-10-24 · 2026-10-24 02:45 UTC
查看更新说明
Routine history, local models on Ollama's own API, and fixes for agents that went quiet or couldn't see their screen.
Added
- Routine history: each routine on the Routines page has a History list showing every time it came due or you ran it by hand. Each entry shows how it went (done, failed, stopped, or skipped and why: Xiryn wasn't running, or you were talking to the agent at the time), when it happened, how long it took and what it cost, plus totals. Costs come from the same ledger as the Usage page.
Changed
- Ollama through its own API. Xiryn now talks to Ollama's native chat API instead of its OpenAI-style one. Every request asks for a 32K context (16K under 12 GB of memory) and keeps the model loaded for 30 minutes. Xiryn no longer changes your models, so Settings → Local models drops the context column and its fix button.
ollama/...model names andOLLAMA_BASE_URL(with or without/v1) work as before.
Fixed
- No more empty replies. When a model ends its turn with only its thinking and no answer (small local models do this), Xiryn asks it once more, tools off, for the answer.
- Screenshots reach every model. On OpenAI-style APIs (OpenRouter, LM Studio, Groq, Mistral, custom endpoints) an agent's screenshots used to reach the model as unreadable text. They're now sent as images in a message of their own.
- On a local model, the step that has to answer can no longer start another action: Ollama has no way to say "no tools", so that step is given none.
- A one-off routine that came due while you were talking to its agent now runs five minutes later, instead of switching itself off.
- A routine that was mid-run when Xiryn stopped is shown as failed, with the reason, instead of as never run.
Security
- Next.js 16.4.3, which fixes critical advisories in 16.4.0 (GHSA-2464-fhr4-w9xw, GHSA-673q-mjm6-r5xr) and a denial-of-service issue.
npm auditis clean.
Upgrade:
git pull && npm install, then restart Xiryn (npm run background -- restartin background mode). The database migrates itself. - v0.5.1Xiryn 0.5.1 — local models keep their instructions2026-10-20 · 2026-10-20 15:53 UTC
查看更新说明
Fixes from running 0.5.0 end to end with a real Ollama on Windows.
- Local models keep their instructions. Ollama runs models with a small context unless told otherwise (4K on an 8 GB graphics card) and was silently cutting Xiryn's agent prompt in half. Xiryn now gives the models it downloads or makes the default a 32K context (16K under 12 GB of memory), checks any other Ollama model once before its first turn, and Settings → Local models shows each model's context with a one-click fix.
- Routines deliver. Each run is read as due now, so even small local models reply with the result (the brief, the list, the quote) instead of saying it's scheduled.
npm run background -- stopon Windows no longer stops Ollama or Docker Desktop that Xiryn started.npm run setup:localdownloads through Ollama's API when Ollama is running but its command isn't on the PATH.- Download progress counts the whole model, not one layer at a time.
Updating:
git pull, then./setup.sh(Windows:setup.cmd). - v0.5.0Xiryn 0.5.0 — routines, free local models and reply costs2026-10-20 · 2026-10-20 15:15 UTC
查看更新说明
Routines, free local models in one command, and what every reply costs.
Routines — tasks on a schedule
Agents now do things on their own: every day, on weekdays, one day a week, every few hours, or just once.
- Just ask in a chat: "every weekday at 9, check for new jobs that fit me" or "tomorrow at 7, remind me to call the bank" — the agent schedules it.
- Or use the new Routines page, with ideas to start from: morning brief, job alerts, price watch, weekly research digest, plan my week.
- You're told when a run finishes — in the app, on Telegram, and by your desktop when no tab is open.
Runs in the background
npm run background # no terminal or browser needed npm run background -- login # start it whenever you log inFree local models
curl -fsSL https://raw.githubusercontent.com/SouravBeraAkaSpeed/xiryn/main/setup.sh | bash -s -- --localInstalls Ollama, downloads a model that fits your computer's memory and makes it the default. Or use Settings → Local models for one-click downloads.
Know what it costs
Every reply shows its price (free · local on local models). The Usage page adds it up by day, model and agent, and a monthly budget pauses paid models when it's reached.
Also new
- 16 ready-made agents and 4 squads on the new Templates page — shopping, travel, jobs, writing, social, leads, news, tutoring, code review, websites, data and budgets.
- Copy or export a thread as Markdown.
- Feedback — a small card after a few tasks, and a mail icon in the sidebar, open a draft in your own email app.
Updating:
git pull, then./setup.sh(Windows:setup.cmd). The database updates itself on start.Full list in the changelog.
- v0.4.1Xiryn 0.4.1 — the open-source personal agent2026-10-11 · 2026-10-11 21:54 UTC
查看更新说明
https://github.com/user-attachments/assets/e9769ff2-b9ae-426c-a47e-629910b11155
Xiryn is the open-source personal agent. It does everything Muse, Grok Bot and Dots do — on your own computer. Each agent gets its own Linux desktop in Docker, so it works in the background and never interrupts what you're doing; your data stays on your disk, you bring any model, and you can control it from anywhere through Telegram.
Changed
- The project is now called Xiryn — xiryn.com, github.com/SouravBeraAkaSpeed/xiryn. Everything carries the new name: the app, the
XIRYN_*settings, the database (data/xiryn.db), the vault, the agents' Docker machines and volumes, and the setup scripts.
Fixed
- The update button shows on the next page load after a push. Xiryn now asks GitHub once each time the page loads, instead of when the server starts and then every few hours.
- Settings → System showed
[object Promise]instead of the number of agents, squads, threads, messages and memories. - Next's error badge no longer appears in the corner, and attributes that browser extensions add to the page no longer cause hydration warnings.
- An agent clearing
/tmpon its desktop no longer shuts that desktop down or locks you out of watching it. - A thread open in the app now follows turns started from Telegram (or by answering a payment or detail request) as they happen, instead of staying blank until you reload.
- Tables in Telegram messages arrive as readable lines (a header, then one bullet per row) instead of raw
|pipes — including the notice when a task started at the computer finishes, which used to run the whole reply into one line.
Install
# macOS / Linux curl -fsSL https://raw.githubusercontent.com/SouravBeraAkaSpeed/xiryn/main/setup.sh | bash# Windows (PowerShell) irm https://raw.githubusercontent.com/SouravBeraAkaSpeed/xiryn/main/setup.ps1 | iexOr paste one prompt into Claude Code, Codex or Cursor and it sets everything up for you.
Update
cd xiryn && git pull && ./setup.sh # Windows: setup.cmd - The project is now called Xiryn — xiryn.com, github.com/SouravBeraAkaSpeed/xiryn. Everything carries the new name: the app, the
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
https://github.com/user-attachments/assets/e9769ff2-b9ae-426c-a47e-629910b11155
This year every major lab shipped a personal agent that works on a cloud machine for you — Muse from Meta, Grok Bot from xAI, Dots from OpenAI. They're impressive. They're also closed, gated behind subscriptions, and they run on someone else's servers with your conversations, your logins and — when they shop for you — your payment details.
Xiryn is the same idea as an open-source personal agent you run yourself. Clone it, add your API keys, and you have a team of agents that each own a Linux desktop in Docker — working in the background while you keep using your laptop — remember what matters, browse and research the web, write and run code, and hand work to one another. Nothing is stored anywhere but your computer, and you can message them from your phone.
One command sets everything up — Git, Node.js, Docker, the agents' desktop — and starts Xiryn:
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/SouravBeraAkaSpeed/xiryn/main/setup.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/SouravBeraAkaSpeed/xiryn/main/setup.ps1 | iex
No API key? Run it free. Add --local and the same command also installs Ollama, downloads a model that fits your computer's memory and makes it every agent's default — nothing leaves your machine, nothing is billed:
curl -fsSL https://raw.githubusercontent.com/SouravBeraAkaSpeed/xiryn/main/setup.sh | bash -s -- --local
$env:XIRYN_LOCAL="1"; irm https://raw.githubusercontent.com/SouravBeraAkaSpeed/xiryn/main/setup.ps1 | iex
Have a coding agent? Paste one prompt into Claude Code, Codex or Cursor — it installs everything, asks you for your keys and starts Xiryn.
Why Xiryn
🔒 Private by design. No account, no sign-up. Conversations, memory, settings and keys live in a single SQLite file on your disk; logins and cards, if you choose to save them, live in an encrypted vault whose key your operating system holds — and agents never see them. Even the agents' machines run on your computer. The only things that leave it are the calls you configure (your model provider, plus Firecrawl or Telegram if you turn them on). Run a local model through Ollama and not even your prompts leave.
🖥️ It never touches your computer. Every agent works on its own sandboxed Linux desktop — a Docker container with a shell, files and a real Chromium — completely separate from your system. It doesn't move your mouse, take over your screen or read your files. Watch a movie, play a game or keep coding while it works. Or watch it work, live, and take the wheel whenever you want.
📱 Control it from anywhere. Pair Telegram in two minutes — scan a QR code and you're done. No public URL, no tunnel, no port forwarding: Xiryn polls Telegram from your machine. Your agents answer from wherever you are, with live progress and screenshots.
🧠 Any model, your keys. OpenAI, Anthropic, Google, xAI, Groq, Mistral, DeepSeek, OpenRouter, Ollama, LM Studio, or any OpenAI-compatible endpoint. Pick a model per agent. No subscription — you pay providers directly for what you use.
📐 Machines your size. Give each agent as many processors, as much memory and as big a screen as you like, up to everything your computer has. On Windows, Xiryn offers to raise Docker's own limit for you.
🗑️ Disposable machines. Reset an agent and its container is destroyed. Delete it and it's gone. Turn on auto-delete and workstations vanish after every session — while the agent's memory stays safe on your disk.
👥 Agents that work as a team. Put several agents in a squad. Ask any of them; they delegate to whoever fits the job — each on its own model and its own machine.
How it compares
| Xiryn | Hosted agentsMuse · Grok Bot · Dots | Local computer-use agentse.g. OpenClaw | |
|---|---|---|---|
| Source | ✅ Open source (MIT) | ❌ Closed | ✅ Open source (MIT) |
| Where the agent works | Its own sandboxed desktop (Docker, on your machine) | Vendor's cloud computer | Your computer |
| Uses your mouse, screen or files | Never | No — vendor cloud | Yes — shell, files and apps on your machine |
| Browses from | Your own connection | Vendor data centers | Your own connection |
| Where your data lives | Your disk | Vendor's servers | Your disk |
| Account required | No | Yes | No |
| Card on file to shop for you | Your choice — encrypted on your machine, used only after you approve each payment | Stored with the vendor | Depends on setup |
| Models | Any — 11 providers, incl. local | The vendor's own | Many |
| Remote control | Telegram | Vendor apps & integrations | Chat apps |
| Price | Free + pay-as-you-go APIs | Paid plans / subscriptions | Free + APIs |
Based on public launch coverage as of October 2026. These products move fast — corrections welcome.
Features
Agents with a job Name, role, standing orders, and a model of their own. Start from 16 ready-made agents and 4 squads or write your own.
Routines — tasks on a schedule "Every morning at 8, brief me on…" — say it in the chat or set it up on the Routines page. Daily, weekdays, weekly, every few hours, or once. It runs on its own, even with the browser closed, and tells you when it's done.
A workstation per agent A Docker container with a shell, a persistent home folder and a 1280×800 desktop with Chromium — created on first use, stopped when idle, never touching your own files.
Live desktop, take over any time Watch the agent click and type in real time. Hit Take over and it pauses; hand it back with a note and it picks up from what you did.
Long-term memory Agents save what matters about you and your work; every thread sees it. Inspect, add or delete notes any time.
Web research Search and clean page reading through Firecrawl, with cited sources.
Durable turns Close the tab mid-task — the agent keeps going. Reopen and you're re-attached to the live stream. Stop it any time.
It tells you when it's done A chime and a desktop notification when an agent finishes, fails or needs you — and a Telegram message when you're away from the computer.
Talk instead of typing Hit the mic and speak your request. It uses your browser's speech recognition — on the device itself where the browser supports it, so your voice never leaves your computer.
Free local models in one click Settings → Local models shows Ollama, downloads models with a progress bar and makes one the default. Replies on local models are marked free.
Know what every reply costs Each reply shows its price; the Usage page adds it up by day, model and agent. Set a monthly budget and paid models pause when it's reached.
What can it do?
Anything that can be done with a terminal, a browser and a desktop — while you get on with your day:
- Build and debug — clone a repo, install, run the tests, fix what fails, show you the diff.
- Research — search, read primary sources, and come back with a cited summary.
- Write — launch posts, docs, reports, saved as files on its workstation.
- Work the web — fill forms, compare options, prepare a booking or an order. When a site needs your login, a payment or a CAPTCHA, the agent stops and hands you the screen; your card never touches Xiryn.
- Run as a team — ask a squad, and the right specialist takes it.
Agents ask when they need a decision, confirm before anything irreversible, and remember what you tell them.
You can always take the wheel
- Take over — one click pauses the agent and gives you its desktop. Type, click, fix what it got wrong. Hand back with an optional note ("I picked the 6:40 flight") and the agent looks at the screen and continues from there.
- Hand-offs — at a login, a payment page, a one-time code or a CAPTCHA, the agent stops by itself and tells you exactly where it is and what's left. The take-over view opens on your screen, and if Telegram is paired you get a message with a live link to the desktop that works from your phone. Pay on the agent's screen, reply "done", and it wraps up.
- Browses like a person — agents open a site's home page and use its own search forms and filters instead of guessing deep links, so you can follow along and step in at any point.
Your vault, your approval
- An encrypted vault for logins, cards, UPI IDs and personal details. Add them in Settings → Vault, or when an agent asks, through a secure form in the chat. They're encrypted with AES-256-GCM, and the key is held by your operating system (macOS Keychain, Windows DPAPI, the Linux Secret Service) — never next to the data.
- Agents never see the values. An agent gets "Visa ···· 4242"; Xiryn types the card into the page itself and shows the field as dots.
- Every payment needs your yes. At checkout the agent asks — "Atlas wants to pay ₹19,062 to MakeMyTrip" — and you choose Approve (it pays with the card you pick), I'll pay myself (you take over its screen) or Decline, in the app or with one tap on Telegram.
- Phishing-proof by design. A saved login only fills on its own site; an approved card only on the site you approved.
- Stays signed in. Each agent's browser keeps your sessions between tasks until the site signs you out. One-time codes you reply to the Telegram bot go straight into the vault, not the chat.
Real browsing, from your own connection. Agents' machines run on your computer, so sites see an ordinary home connection rather than a data center — no blocked sites, far fewer CAPTCHAs.
Quick start
You need: a computer with about 4 GB of free disk, and an API key for at least one model provider. The setup installs everything else. Firecrawl (fast web search) is optional.
1 · Set up — one command
| Your system | Run this in a terminal |
|---|---|
| macOS / Linux | curl -fsSL https://raw.githubusercontent.com/SouravBeraAkaSpeed/xiryn/main/setup.sh | bash |
| Windows (PowerShell) | irm https://raw.githubusercontent.com/SouravBeraAkaSpeed/xiryn/main/setup.ps1 | iex |
Already cloned the repo? Run ./setup.sh on macOS/Linux, or double-click setup.cmd on Windows.
The setup asks once, then does the rest:
- Installs what's missing — Git, Node.js, and Docker (Docker Desktop through
wingeton Windows or Homebrew on macOS; Docker Engine throughget.docker.comon Linux). - Clones Xiryn into
./xirynand installs its packages. - Starts Docker and builds the agents' desktop image — a few minutes, once.
- Creates
.envand starts Xiryn, which opens itself in your browser.
The first time, Docker Desktop may ask you to accept its terms, and on Windows it can ask for a restart to turn on WSL 2. Afterwards run the setup again; it skips everything that's already done.
Set up with your coding agent
Using Claude Code, Codex, Cursor or another coding agent? Paste this prompt into it. It installs everything, asks you for your keys and starts Xiryn:
Install and start Xiryn for me — the open-source personal agent that runs on my own computer: https://github.com/SouravBeraAkaSpeed/xiryn
1. From my home folder, run Xiryn's setup without prompts. It clones Xiryn into ./xiryn (or reuses it), installs Git, Node.js and Docker if they're missing, installs the packages and builds the agents' desktop image, which takes several minutes the first time — let it finish:
- macOS / Linux: curl -fsSL https://raw.githubusercontent.com/SouravBeraAkaSpeed/xiryn/main/setup.sh | XIRYN_YES=1 XIRYN_NO_START=1 bash
- Windows (PowerShell): $env:XIRYN_YES="1"; $env:XIRYN_NO_START="1"; irm https://raw.githubusercontent.com/SouravBeraAkaSpeed/xiryn/main/setup.ps1 | iex
(If you'd rather not pipe a script, clone the repo and run ./setup.sh or .\setup.ps1 inside it with the same two variables.)
- If it stops and shows a command that needs my password, show me that command, wait for me to run it in my own terminal, then run the setup again.
- If Docker Desktop was just installed or isn't running, ask me to open it and accept its terms (Windows may also ask for a restart). Wait until `docker info` works, then run the setup again.
- Node.js may have been installed into ~/.xiryn/node/bin; add that to PATH in your shell if `node` isn't found.
2. Ask me for my keys. Explain each in one sentence with where to get it, and let me skip the optional ones:
- Required, at least one model provider: OpenAI (OPENAI_API_KEY, platform.openai.com/api-keys), Anthropic (ANTHROPIC_API_KEY, console.anthropic.com), Google Gemini (GOOGLE_GENERATIVE_AI_API_KEY, aistudio.google.com/apikey) — or any other provider listed in .env.example, including a local Ollama or LM Studio.
- Optional: FIRECRAWL_API_KEY (firecrawl.dev) for fast web search.
- Optional: TELEGRAM_BOT_TOKEN to talk to my agents from my phone. Tell me how to get it: in Telegram, message @BotFather, send /newbot, choose a name and a username ending in "bot", and copy the token it replies with.
Put what I give you into the matching lines of xiryn/.env. Never repeat the keys back to me, log them or commit .env.
3. Start Xiryn with `npm run dev` inside the xiryn folder, in the background, and wait until http://127.0.0.1:6796 responds. The first start opens Xiryn in my browser by itself; if it didn't, run `npm run open` in the xiryn folder, which opens Xiryn's private link (the bare address only shows a "locked" page).
4. Finish with a short summary: what got installed, which keys are set, how to start Xiryn next time (cd xiryn && npm run dev), and — if I added a Telegram token — that I should open Settings → Remote access in Xiryn and scan the QR code with my phone to pair it.
Install Node.js 20.9+ and Docker, then:
git clone https://github.com/SouravBeraAkaSpeed/xiryn.git
cd xiryn
npm install
npm run setup # checks Docker, builds the agents' desktop image, creates .env
npm run dev
2 · Add a key
Paste a model provider key into Settings in the app — or put it in .env:
OPENAI_API_KEY=sk-... # or any other provider
FIRECRAWL_API_KEY=fc-... # optional: web search & reading
In the Xiryn folder, run:
npm run setup:local
It installs Ollama if it's missing (asking first), downloads a model with tool calling and vision that fits your memory — qwen3.5:2b under 12 GB, qwen3.5:4b under 20 GB, qwen3.5:9b under 40 GB, qwen3.6:27b above — and makes it the default. Pick one yourself with npm run setup -- --local --model=gemma4:e4b, or download more later in Settings → Local models. Local models are slower and less capable than the big hosted ones, but they cost nothing and nothing leaves your computer.
3 · Start it any time
cd xiryn
npm run dev # or: npm run build && npm start
The first start opens Xiryn in your browser; deploy your first agent. Later, open the link Xiryn prints when it starts, or run npm run open. Xiryn only answers a browser that was given that link, so your agents' machines and other programs on your computer can't use it as you (why). Your browser remembers it. Prefer containers all the way down? docker compose up -d runs Xiryn itself in Docker too.
Click alerts in the status bar once to allow desktop notifications: you'll hear a chime and get a notification whenever an agent finishes, fails or needs you — even with Xiryn in the background.
Keep it running in the background
npm run background # starts Xiryn with no terminal or browser needed
npm run background -- login # …and whenever you log in to this computer
npm run background -- stop # stop it (status, restart and no-login work too)
It serves a production build on 127.0.0.1, built once and again after each update, and logs to data/xiryn.log. Agents, routines and Telegram keep working with every window closed; with no Xiryn tab open, your computer itself shows a notification when an agent finishes or needs you.
Updating
When something new is pushed, an update button appears next to the Xiryn logo; it brings you here.
cd xiryn
git pull
./setup.sh # Windows: setup.cmd
setup installs any new packages and rebuilds the agents' desktop image if it changed (each agent's machine moves to it the next time it starts, keeping its files). Then start Xiryn as usual with npm run dev.
cd xiryn
git pull
docker compose up -d --build
Your data — data/xiryn.db, the vault and the agents' home folders — is untouched by updates.
Remote control from Telegram
- In Telegram, message @BotFather →
/newbot→ copy the token. - Paste it in Settings → Remote access.
- Scan the QR code with your phone and tap Start.
Done — only your account can use the bot.
/agents pick an agent or squad /new start a fresh thread
/stop interrupt the agent /status what's running
When an agent needs you — a payment, a login, a code — the bot pings you with a live link to the agent's desktop. Finish the step from your phone, reply "done", and the agent carries on. Longer tasks you started at your computer report back here too when they finish, so you can walk away.
Full walkthrough: docs/telegram.md.
Routines
Tasks your agents do on their own, on a schedule — while you sleep, with the browser closed.
- Just ask. Tell any agent "every weekday at 9, check for new jobs that fit me" or "tomorrow at 7, remind me to call the bank" — it schedules the routine itself. Ask it to list or cancel them the same way.
- Or set it up on the Routines page: who does it, what to do each time, and when — every day, weekdays, one day a week, every few hours, or just once. Start from ideas like a morning news brief, job alerts, a price watch, a weekly research digest or a plan for the week.
- Results come to you. Each routine has its own thread. When a run finishes you get an in-app notification, a desktop notification when no tab is open, and a Telegram message if it's paired — reply there to follow up.
- See how each run went. A routine's History lists every run: when, how long, what it cost, and why one failed or was skipped.
- Runs on your computer. Times are your computer's local time, and Xiryn has to be running:
npm run background -- loginkeeps it that way. A run missed while the computer slept still happens if it's back within a few hours.
Ready-made agents
Open Templates in the sidebar, pick one, and change anything before it goes online. Each gets its own desktop and memory.
| Agents | |
|---|---|
| Everyday | Atlas — operator for anything that needs a real browser · Altair — shopping scout that compares prices and buys with your OK · Polaris — travel planner for flights, stays and day-by-day plans · Mira — personal assistant for forms, bookings and errands |
| Work | Capella — job hunter that finds roles and tailors applications · Sirius — writer for posts, emails and docs in your voice · Antares — social media manager · Castor — lead researcher that builds outreach lists |
| Research | Vega — research analyst with sources · Deneb — news briefer for the topics you follow · Spica — tutor that explains step by step |
| Build | Rigel — software engineer · Arcturus — code reviewer · Electra — website builder · Lyra — data analyst · Pollux — budget keeper for bank CSVs |
Squads in one click: Crew (Atlas, Vega, Rigel, Lyra), Launch crew (Vega, Sirius, Antares), Trip team (Polaris, Altair, Mira) and Dev team (Rigel, Arcturus, Electra).
Feedback
After a few finished tasks Xiryn asks, once, how it's going. Your answer opens a draft in your own email app to [email protected] — nothing is sent by Xiryn itself. You can also write any time from the mail icon in the sidebar, or open an issue.
Architecture
graph LR
you([You · browser]) -->|localhost| app
phone([You · Telegram]) -.->|Bot API| tg[Telegram]
tg -.->|long-poll from your machine| app
subgraph machine [Your computer]
app[Xiryn · Next.js server]
app --> runtime[Agent runtime]
app --> db[(SQLite · data/xiryn.db)]
runtime --> db
runtime -->|docker| ws[Workstations · one container per agent]
end
runtime -->|your key| llm[Model provider]
runtime -.->|your key, optional| firecrawl[Firecrawl]
you -->|live desktop · noVNC on 127.0.0.1| ws
One process, one file. The Next.js server serves the UI, runs agent turns in-process through the AI SDK, and owns the SQLite database — no queue, no worker, no backend of ours. Details in docs/architecture.md.
| Path | What lives there |
|---|---|
lib/agent/ | Runtime, tool belt, instruction builder |
lib/providers/ | Provider catalog, model factory, live model discovery |
lib/telegram/ | Bot API client, formatter and the bridge |
lib/workstation.ts, lib/docker.ts, workstation/ | Agents' machines: containers, desktop control and the image they run |
lib/web.ts | Firecrawl |
db/ | Drizzle schema and migrations |
app/, components/ | The interface |
Configuration
Every setting can come from .env or from Settings in the app. Values saved in the app win, are stored only in data/xiryn.db, and are shown back to the browser masked. The annotated list is in .env.example; providers are covered in docs/providers.md.
| Variable | Purpose |
|---|---|
OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, XAI_API_KEY, GROQ_API_KEY, MISTRAL_API_KEY, DEEPSEEK_API_KEY, OPENROUTER_API_KEY | Hosted model providers |
OLLAMA_BASE_URL, LMSTUDIO_BASE_URL, CUSTOM_BASE_URL | Local runtimes and any OpenAI-compatible API |
XIRYN_DEFAULT_MODEL, XIRYN_MAX_STEPS | Default provider/model, max tool calls per turn |
XIRYN_MONTHLY_BUDGET | Dollars a month for paid models; once spent they wait for the 1st (local models keep working) |
XIRYN_WORKSTATION_CPUS, XIRYN_WORKSTATION_MEMORY_GB | Default size of an agent's machine (2 CPUs, 4 GB). Each agent can get its own, screen size included, under Machine → Size |
XIRYN_WORKSTATION_AUTO_STOP_MINUTES, XIRYN_WORKSTATION_AUTO_DELETE_MINUTES | Idle stop; disposable machines |
XIRYN_PHONE_TAKEOVER | off leaves the phone link out of Telegram hand-offs |
FIRECRAWL_API_KEY | Web search and reading |
TELEGRAM_BOT_TOKEN, TELEGRAM_OWNER_ID | Remote access |
XIRYN_TELEGRAM_NOTIFY | Telegram notice when a task finishes: long (a minute or more, default), all or off |
XIRYN_DATA_DIR, XIRYN_ALLOWED_HOSTS | Data location; extra hostnames behind your own proxy |
XIRYN_URL | Where you open Xiryn, for its link and for links in Telegram hand-offs |
XIRYN_NO_BROWSER | 1 stops the first start from opening a browser (servers) |
XIRYN_UPDATE_CHECK | off stops the update check and star count |
XIRYN_DESKTOP_NOTIFY | off stops operating-system notifications when no Xiryn tab is open |
Security & privacy
Xiryn has no user accounts, so it's built never to be reachable by anyone but you:
- Binds to 127.0.0.1 only, and refuses any request whose
HostorOriginisn't loopback — which also blocks DNS-rebinding attacks from web pages you visit. - Answers only a browser that was opened with its private link. Loopback isn't only you: an agent's machine can reach it through Docker. The link carries a key from your data folder, which no agent's machine can read, and your browser keeps a cookie made from it.
npm run openopens the link any time. - Agents' machines can't reach each other, and can't craft raw network packets.
- API keys never reach the browser; the UI only sees masked values, and keys are kept out of logs.
- Telegram answers exactly one paired account; pairing codes are single-use and rotate after wrong guesses.
- Agents execute only inside their own containers — never on your desktop or in your files. Their browsers have password saving and card autofill switched off.
- Saved logins, cards and personal details are encrypted (AES-256-GCM) with a key your operating system's keychain holds. Agents get masked hints only; Xiryn types values into pages itself, logins only on their own site, payment details only after you approve that payment.
- Each live desktop is published on 127.0.0.1 only and asks for its own random password.
- No telemetry. No analytics. The only request Xiryn makes on its own is an update check against GitHub's public API when you open Xiryn, sending nothing about you. Switch it off in Settings → System or with
XIRYN_UPDATE_CHECK=off.
See SECURITY.md for the full model and how to report a vulnerability.
FAQ
Does an agent control my computer? No. Everything an agent does — commands, files, mouse, keyboard, browser — happens inside its own Docker container: a separate Linux system with its own desktop and files. It can't see your screen, files or apps, so you keep using your computer normally. It does share your CPU and memory while it works: set each agent's processors, memory and screen size under Machine → Size in its workbench, as much as your computer has.
Can it book a flight or order something? It can do the legwork on real websites — search, compare, fill in the details — and it will ask before anything irreversible. Payments always need your approval: the agent shows you the merchant, the amount and the site, and you either let it pay with a card or UPI ID from your vault, or take over its screen and pay yourself — in the app or from your phone through Telegram. Logins work the same way: a saved login is filled for it, or you sign in on its screen once and the session stays.
How do I delete a thread? Hover it under Recent threads in the sidebar and click the trash icon, or open the thread menu (⋯) in its header → Delete thread. The agent, its memory and its workstation stay.
Where is my data?
In data/xiryn.db on your disk. Back it up by copying the file; erase everything by deleting it.
Does it work without Docker or Firecrawl? Without Docker, agents chat, remember and (with Firecrawl) research, but can't run code or use a desktop. Without Firecrawl, they search and read the web with their own browser. The app tells you what's missing.
Can I use only local models?
Yes — npm run setup:local sets up Ollama and a model in one go, or use Settings → Local models. LM Studio works too: point LMSTUDIO_BASE_URL at it and pick a model with tool calling.
Does it keep working when I close the browser?
Yes. Agents run in the Xiryn server, not the page: close the tab mid-task and it carries on. Run npm run background and you can close the terminal too; routines run on time and you're notified when they finish.
What does it cost? Xiryn is free and MIT-licensed. Agents' machines run on your own computer, so they cost nothing, and so do local models. Your model provider (and Firecrawl, if you use it) bill you directly: every reply shows what it cost, the Usage page adds it up per day, model and agent, and an optional monthly budget pauses paid models when it's reached.
Roadmap
Ideas we're exploring — not shipped yet. Have opinions? Open an issue.
- Scheduled and recurring tasks — routines
- More remote channels: WhatsApp, Discord, Slack
- MCP connectors for email, calendar and docs
- Voice in and out
- Shareable agent templates (16 built in today)
Contributing
Contributions are welcome — from typo fixes to new providers. Start with CONTRIBUTING.md, and please follow the Code of Conduct.
npm run check # typecheck + lint + format
npm run build
Star history
Author
Built by Sourav Bera. If Xiryn is useful to you, a ⭐ helps other people find it.
License
MIT © 2026 Sourav Bera
Muse, Grok Bot, Dots and OpenClaw are trademarks of their respective owners. Xiryn is an independent project and is not affiliated with or endorsed by Meta, xAI, OpenAI or the OpenClaw project.