ai-shuffle

ai-shuffle

Docker app from HobbyCoder's Repository

Overview

AI Shuffle is a free, open-source workspace for running AI agents on your own server. Sign in with the AI account you already have (Claude, ChatGPT or SuperGrok subscriptions, or API keys for Claude, OpenAI, OpenRouter, xAI and local models) and put agents to work: writing code, running scheduled jobs, answering messages and handling chores across your machines. Check in from your phone with the Android app, or connect your desktop and laptop as extra workers. Everything runs on your hardware. Your provider bills you directly; AI Shuffle adds no markup and never sees your prompts. The database (a private PostgreSQL) is built in, so there is nothing else to install. First start takes a few minutes. Open the WebUI and create the owner password, or set Owner Password below before the first start. Anyone who can reach this port on your network can try to sign in, so do not forward it from your router. For access away from home, use a VPN such as Tailscale or WireGuard. The extra parameters give the container a clean 90-second shutdown, enough shared memory for the built-in browser, and the permissions the sandbox around agents' Python code needs. Remove the three --security-opt flags to opt out of that sandbox.

AI Shuffle

Your AI agents, on your own machines, from anywhere.

AI Shuffle is a free, open-source workspace for running AI agents on your PC, home server or NAS. Sign in with the AI account you already have and put agents to work: writing code, running scheduled jobs, answering your messages, or handling chores across your machines. Check in from your phone.

Watch the tour · Download · Docs · Discord

Chat transcript with a folded Worked for work log

Why AI Shuffle

  • Use the AI you already pay for. Claude, ChatGPT or SuperGrok subscriptions, or API keys for Claude, OpenAI, OpenRouter, xAI and local models. Your provider bills you directly; we add no markup and never see your prompts.
  • Runs on your hardware. Code, chats and keys stay on your machines. No account needed.
  • Mix models freely. Any signed-in model can hand work to any other. A Claude session can delegate to a ChatGPT model, or the other way round.
  • All your machines, one app. Connect your desktop, laptop and server, move chats between them, and check in from the Android app.
  • All your usage in one place. See what's left on every plan, with reset times, without visiting each provider's site.
  • A smarter harness. Every session runs on Fluid, our own agent engine: compaction that forgets nothing, memory that learns, and batched tool calls.
  • Free and open source. AGPL-3.0, with no license key, trial or usage cap.

Install

Every download is free and needs no account or license key.

Platform How
Windows or Linux Desktop app with a built-in worker, from hobbycoders.com
Server or NAS Docker Compose (below)
Android APK from the downloads page; Google Play testing track. Connects to your workers; does not run agents itself.
macOS and iOS Coming soon

Docker: a 64-bit Intel or AMD machine with Docker; 8 GB of memory recommended. In an empty folder:

curl -fsSLo compose.yaml https://raw.githubusercontent.com/HobbyCoders/ai-shuffle/main/docs/install/compose/compose.yaml
curl -fsSLo .env https://raw.githubusercontent.com/HobbyCoders/ai-shuffle/main/docs/install/compose/env.example
docker compose up -d

Then open http://localhost:8000 on that machine. It pulls the public image ghcr.io/hobbycoders/ai-shuffle-server; the Docker Compose guide covers network access and storage.

Next, follow first run to connect your AI account. For a Claude subscription, setup can install Claude Code with Anthropic's installer; you sign in yourself, and no Claude Code binary is bundled.

What you can do

  • Code with agents. Point a project at a folder; agents read, edit, test and commit. Run several chats at once, each in its own git worktree, and let agents hand parts of a job to subagents.
  • Work across machines. A worker network shares settings, keys and chats. Move a chat mid-task, or let an agent start and run chats on your other machines for you.
  • Automate. Automations run agents on a schedule, a timer, a webhook or an incoming message, with spending limits and approval steps.
  • Connect your apps. Connectors for Telegram, Discord, Slack, WhatsApp, Signal, iMessage, Gmail, Home Assistant, Philips Hue, Spotify and more, plus any MCP server and plugins.
  • Talk and create. Live voice calls on OpenAI's realtime voice models, dictation, and images, video and audio from fal.ai's model library. Higgsfield support is coming soon.
  • Stay in control. Choose what each agent may do, approve risky steps, and block commands with hooks.
  • And more. Terminals beside the chat, notes, and a REST API.

Phone worker list in the mobile app

Automations page with scheduled agent tasks

Fluid: our own agent harness

Fluid is the engine that runs your agents: it talks to the model, runs tools, asks for approval, and manages context and memory. It lives in fluid/ and also runs on its own from the command line.

What we fixed. If you have run long sessions in other agent harnesses, you have likely hit these:

  • Compaction that forgets nothing. Most harnesses compact by having the model summarize, which is slow and lossy; small drifts from your original ask compound over long work. Fluid compacts in seconds with no summary pass. The full transcript is always kept, and the model can search and re-read any part of it.
  • Memory that maintains itself. Instead of a memory file that bloats and needs constant pruning, the model keeps checking and updating what it knows from what you say and correct.
  • Skills it writes for you. Work you repeat becomes a reusable skill automatically. Each skill is tested before it is kept, and broken ones are flagged.
  • Many tool calls in one step. A Python layer lets the model batch independent tool calls in a single step instead of one round trip each, with every call still going through approvals.
  • Cheap long sessions. The prompt is laid out so providers can reuse almost all of it between turns.

Why not just wrap each provider's agent? Claude Code, Codex and the rest each have their own tools, permissions, memory and limits. Wrapping them would mean features that differ by provider and bugs we can't fix. With Fluid, an agent works the same way whichever model you pick.

The exception: Claude subscriptions. Anthropic only allows Claude Pro and Max subscriptions through its own Claude Code, so for those Fluid drives the official Claude Code CLI and never reuses your sign-in elsewhere. Those sessions keep AI Shuffle's tools, connectors and memory, but compaction and tool calling are Claude Code's own. For Claude fully inside Fluid, use an Anthropic API key.

How each provider runs
Provider How Fluid runs it Sign-in
Anthropic (Claude) API Fluid's own loop API key
OpenAI Fluid's own loop API key or ChatGPT subscription
xAI Fluid's own loop API key or SuperGrok subscription
OpenRouter and OpenAI-compatible gateways Fluid's own loop API key
Local models (llama.cpp, Ollama and similar) Fluid's own loop Optional key
Claude Pro or Max subscription Official Claude Code CLI, driven by Fluid Claude Code's own sign-in

Free and Cloud

The app is free: run it on your own hardware, on your home network or your own VPN, with no HobbyCoders account. Updates and same-network worker sync are free too.

AI Shuffle Cloud is the optional paid part for reaching your workers from anywhere without a VPN: remote access, sync across networks, public connector endpoints, plugin sign-in relays and in-app support. A free account includes two remote workers, no card needed. Ending a plan never disables the local app, and AI usage is always between you and your provider.

Contributing, security and license

  • Contributing: outside contributions are welcome. See CONTRIBUTING.md for DCO sign-off, local checks and draft pull requests; team setup is in docs/internal/CONTRIBUTING.md.
  • Security: report vulnerabilities privately to support@hobbycoders.com, and never post secrets in issues. See SECURITY.md and SUPPORT.md.
  • License: GNU AGPL-3.0 only. Copyright (c) 2026 HobbyCoders. "AI Shuffle", "HobbyCoders" and the shuffle mark are trademarks of HobbyCoders; modified builds may not ship under those names. See TRADEMARKS.md and third-party notices.
  • Not affiliated: AI Shuffle is not affiliated with Anthropic, OpenAI, xAI or any other AI provider. None of them build, endorse or support it; their names and marks belong to their respective owners.

Media gallery

1 / 3

Requirements

A 64-bit Intel or AMD (x86_64) server. 4 GB of free memory or more is recommended. An account with an AI provider, or a local model server.

Related apps

Details

Repository
ghcr.io/hobbycoders/ai-shuffle-server:latest
Last Updated2026-10-23
First Seen2026-10-23

Runtime arguments

Web UI
http://[IP]:[PORT:8000]/
Network
bridge
Shell
bash
Privileged
false
Extra Params
--restart=unless-stopped --stop-timeout=90 --shm-size=1g --pids-limit=8192 --security-opt seccomp=unconfined --security-opt systempaths=unconfined --security-opt apparmor=unconfined

Template configuration

WebUI PortPorttcp

Port for the web interface and API.

Target
8000
Default
8000
Value
8000
WorkspacePathrw

Your projects, as ordinary files you can open from a share. Point this at a share if you want to browse them over the network.

Target
/workspace
Default
/mnt/user/appdata/ai-shuffle/workspace
Value
/mnt/user/appdata/ai-shuffle/workspace
DataPathrw

Database, encryption key, chats and saved credentials. Back up this folder (with the container stopped) together with the others below.

Target
/data
Default
/mnt/user/appdata/ai-shuffle/data
Value
/mnt/user/appdata/ai-shuffle/data
Owner PasswordVariable

Optional. Sets the sign-in password on the first start only (at least 12 characters). Leave empty to create it in the browser on your first visit. Change it later in Settings, Security.

Target
OWNER_PASSWORD
SettingsPathrw

App settings, skills and plugins.

Target
/home/appuser/.fluid
Default
/mnt/user/appdata/ai-shuffle/fluid
Value
/mnt/user/appdata/ai-shuffle/fluid
Claude Code sign-inPathrw

Sign-in and settings for the Claude Code CLI, if you use a Claude subscription.

Target
/home/appuser/.claude
Default
/mnt/user/appdata/ai-shuffle/claude
Value
/mnt/user/appdata/ai-shuffle/claude
CLI programsPathrw

Provider CLI programs installed on demand, such as Claude Code, kept across updates.

Target
/home/appuser/.local
Default
/mnt/user/appdata/ai-shuffle/local
Value
/mnt/user/appdata/ai-shuffle/local
GitHub CLI sign-inPathrw

GitHub CLI sign-in.

Target
/home/appuser/.config/gh
Default
/mnt/user/appdata/ai-shuffle/gh
Value
/mnt/user/appdata/ai-shuffle/gh
Browser profilePathrw

The built-in browser's profile, so sites you sign in to stay signed in.

Target
/home/appuser/chrome-profile
Default
/mnt/user/appdata/ai-shuffle/chrome-profile
Value
/mnt/user/appdata/ai-shuffle/chrome-profile
PUIDVariable

User ID that owns your project files. 99 (nobody) is the Unraid default.

Default
99
Value
99
PGIDVariable

Group ID that owns your project files. 100 (users) is the Unraid default.

Default
100
Value
100
Secure cookiesVariable

Keep false for plain http:// on your LAN. Set true only when you reach AI Shuffle through HTTPS (a reverse proxy or Tailscale Serve).

Target
COOKIE_SECURE
Default
false
Value
false
Trusted proxiesVariable

Optional. The address of your reverse proxy as the container sees it, for example 172.17.0.1. Never list your whole network.

Target
TRUSTED_PROXIES
Agent isolationVariable

off, on or required. on keeps agents' shells away from AI Shuffle's own database password and keys. Back up first; see the install guide.

Target
AGENT_ISOLATION
Default
off
Value
off