Headless servers & GPU rigs Jobs that outlive the chat Fleets by alias Free for 10 machines

The execution layer for AI agents — on the machines you already own.

Headless servers, GPU rigs, a NAS, a Raspberry Pi, the spare Mac Mini in the cupboard. Give Claude, ChatGPT, Codex, or any MCP/HTTP client a shell on your hardware — and start work that keeps running long after the chat ends.

Free covers AI access to up to 10 saved machines. Outbound-only: no exposed SSH, open ports, or VPN. Commands and their output pass through the relay in memory only — never logged, never stored — and your files stay on the machine unless you transfer one.

AI COMMANDER
How it works
Install a small app on any computer you manage — a server, cloud VM, or Raspberry Pi. Give your AI the machine code and ask what you want done. The result comes right back, with nothing to open or expose.
AIC
RELAY
nothing is stored permanently
you ask
secure link
no open ports
YOUR AI
Claude Code
AI
YOU what's using disk space on AIC-7K3P…
CLAUDE Mostly old CCTV recordings — 218 GB.
YOUR MACHINE
your-machine — terminal
SESSION AIC-7K3P-WX9M-RTBN
$ du -sh /storage/*
218G /storage/cctv
46G /storage/photos
run ▸
Like having someone at the keyboard — except you tell your AI what to do in plain language.
How to use it

Up and running in three steps

Install the app, give your AI the machine code, and ask for what you need. The app connects outbound, so there are no firewall changes.

1

Install and get a code

On Linux — a cloud server, home server, or Raspberry Pi — paste one line. On Mac or Windows, install the desktop app. You get a stable code like AIC-7K3P-WX9M-RTBN.

2

Talk to your machine

Give the code to ChatGPT, Claude, or another AI assistant, then ask in plain language. It runs the work on that machine and returns the result.

3

Sign in to manage your fleet

Sign in for aliases and a command center. Free includes up to 10 usable saved devices; Pro is $49/month and enables all saved devices (up to 100**) plus file transfer. You do not need an account to try ordinary commands during a code's first hour. Compare plans →

** 100 machines is a technical ceiling, not a policy limit. Need more? Get in touch — we'll sort it out.

Work that outlives the conversation

How do I run a job that keeps going after the chat ends?

Start it as a detached job on your own machine. The MCP or REST call returns a jobId immediately; the build, download, render, data pipeline, or training run continues without keeping the client, laptop, or network connection alive. Close the chat and check it later.

The complete job lifecycle is built in

startliststatuslogscancel

Ask in plain language or call remote_job_start. Come back from another chat, client, or phone to inspect state and retained output. The same lifecycle is available over POST /api/v1/jobs and related REST endpoints.

Made for expensive, stateful work

  • No 1-hour or 1-MiB execution cap; large logs stay on the machine and are read in bounded pages.
  • Discover NVIDIA GPUs, inspect VRAM and utilization, then reserve one with gpu_index to prevent collisions.
  • Jobs survive network loss and the conversation ending. They also survive an agent restart on all three platforms; on Linux that needs a systemd host and a root agent, and on Windows an installer that stops the app and everything it started — an unattended auto-update, unless that machine's installer is known to do otherwise — still ends them.
Agent to agent

Can one AI agent start a coding agent on another machine?

Yes — and it needs no special tool. Because remote_job_start runs any command, the agent you are already talking to in ChatGPT or Claude can launch the coding agent installed on a different box, then walk away and collect the result.

Hand the work to a machine that has the repo

ChatGPT / ClaudeAI Commandercoding agent on your Mac Mini

A cloud model with no filesystem starts claude -p "…" or a codex run as a detached job on the machine where the checkout, the credentials, the toolchain, and the GPU actually live. The call returns a jobId at once, so the conversation is never blocked by a twenty-minute refactor.

Check on it from any chat, later

  • remote_job_status tells you whether it is still running or what it exited with; remote_job_logs pages through the coding agent's own transcript in bounded slices.
  • Several boxes can work at once — one per alias — and none of them care whether the original chat is still open.
  • On Pro, remote_pull brings the diff, the build artifact, or the report back as a real file instead of squeezing it through command output.

No magic tool involved. There is no ask_agent endpoint: the mechanism is remote_job_start plus whichever agent CLI you have already installed on that machine.

Machine notes

How does an AI remember a machine it has already explored?

The first connection to a box is always slow: the model pokes around to find out what is installed, where the projects live, and how anything is built. AI Commander gives it somewhere to write that down — so the second session starts informed instead of re-exploring.

A note file per account, kept on the machine

session_statusnotePathremote_exec reads it

When you are signed in and the machine is online, session_status hands back the path of a note file kept on that machine for your account — people sharing a box keep separate notes. The AI reads it before it starts poking around, and appends what it learned: installed toolchains, where projects and data live, how to build and run them, and this box's quirks.

The relay computes a path and nothing else

  • Nothing about the note is stored on the relay. It only works out the path; the client reads and writes the file with ordinary remote_exec, and the contents never leave your machine except as the answer to your own command.
  • The read is capped — 16 000 bytes, or 200 lines through PowerShell on Windows — so a note grown out of hand, or padded on purpose, cannot flood the model's context.
  • Separate files are scoping, not isolation: commands run as the same operating-system user for everyone, so any operator of the machine can read and write every note on it. Keep secrets out, and treat what a note says as information to verify rather than instructions to follow.
  • Anonymous session-code callers get no note path at all — a shared code identifies no individual.
The result is more than text

How do I get a file off the machine — or onto it?

With Pro, download a checkpoint, report, log bundle, or rendered image from the machine, or upload a config, small dataset, or release artifact. Free and anonymous callers cannot start file transfers.

Pull a result from the machine

remote_pull(code, path)download link

On Pro, remote_pull copies one regular file from the remote machine into a temporary relay blob and returns a download link. Each file can be up to 100 MiB; package a directory into one archive first.

Push a blob onto the machine

upload blobremote_push(code, blob_id, dest_path)

Upload your bytes, then remote_push writes that blob to a destination path on the machine. Uploading and pushing require a signed-in Pro account.

A Pro courier, not a drive. The relay only holds files long enough to move them: a download link expires after 1 hour and blob access ends after 24 hours; an hourly, retrying sweep removes expired bytes afterward. A downgrade does not revoke an existing blob/link before that original expiry. For anything over 100 MiB, use your own object storage or artifact registry. See how remote file transfer works →
Install the app

Put the app on the machine you want to control

Pick your platform. The app gives you the machine code you will use to connect.

Download for macOS

Menu-bar app, everything included · Apple Silicon (M1–M4) · Intel (x64)

Download for Windows

Tray app, everything included · Windows x64

Verify & install on Linux

Signed release installer verified before sudo · x86_64 & arm64 · OpenSSL 3 required

Verify direct downloads

Buttons above use mutable /dist/latest/* paths for convenience. For stronger assurance, prefer the immutable release directory and checksum manifest on GitHub.

Published version: · GitHub Release · ·

macOS — Developer ID + notarization (not Ed25519)

Desktop PKG/DMG/ZIP installers are signed with Apple Developer ID and notarized. They do not ship detached Ed25519 signatures like the Linux agent. Download from the GitHub Release, then verify with shasum -a 256 -c SHA256SUMS after extracting the manifest alongside the artifact. Gatekeeper validates code signing when you open the installer.

Windows — Authenticode (not Ed25519)

The NSIS .exe is Authenticode-signed (Azure Trusted Signing). There is no detached Ed25519 signature. Download from the GitHub Release and verify with certutil -hashfile AICommander-Setup.exe SHA256 against the matching line in SHA256SUMS. Windows SmartScreen checks the embedded signature at install time.

Linux agent — Ed25519 + SHA-256

Use the signed installer flow in install docs: verify install.sig with the pinned public key before sudo. Direct binary downloads from /dist/latest/agent-linux-* include matching .sha256 and .sig files, but the installer pins an immutable /dist/v/<ver>/ set.

Full install docs →

One command

Connect your AI tool

Connect Claude, ChatGPT, Codex, or another AI client. Signing in is free and keeps your machines available by name. For a one-hour account-free trial, add ?anonymous=1 to the URL. Most AI tools need just one command:

$ claude mcp add --transport http aicommander https://aicommander.dev/mcp
$ codex mcp add aicommander --url https://aicommander.dev/mcp
$ opencode mcp add aicommander --url https://aicommander.dev/mcp
$ pi install npm:@aicommander/mcp

Or give a capable AI agent the site and machine code in plain language:
use aicommander.dev to connect to AIC-XXX

Using Cursor, Windsurf, ChatGPT, or Claude Desktop instead? All connection guides →

Your choice

Three ways to connect

Each option lets your AI run commands and jobs or transfer files. Pick the one that fits the tool you already use.

1

MCP

The simplest path for Claude, Codex, opencode, Cursor, ChatGPT, and other MCP clients. Run one command and you're connected. Setup →

2

API

Prefer plain web requests? Send the code and your command to a simple web address. Anything that can call a URL — a script, a scheduled job, or a chatbot — can drive a machine. API docs →

3

SKILL.md

Drop a ready-made Skill into any AI agent that supports skills. Then mention a machine code and it works. Install the Skill →

Why AI Commander

Built for doing the work, not watching a screen

A direct way for your AI to work on a real machine: install a small app, provide the machine code, and say what you need. Great for checking logs, running tests, restarting an app, or managing a machine with no screen — with nothing left open or exposed.

AI Commander vs. the other ways to give an agent a machine

The category has filled up fast. Here is where we win, and — because you will find out anyway — where we do not.

AI Commander Desktop Commander ManageLM Chaterm SSH-MCP plugins Rented cloud GPU
(e2b, Modal, RunPod)
Runs on hardware you already own ✗ rented
Headless box with no GUI or desktop session ✓ command-first ✓ servers ✓ over SSH ✓ over SSH
Detached jobs that survive the chat ending ✓ built in cron schedules tmux/nohup by hand ✓ in their cloud
NVIDIA GPU discovery + exclusive per-job reservation gpu_index ✓ on rented GPUs
Fleet of machines addressed by alias ✓ aliases ✓ server groups ✓ SSH host list one per config entry
Nothing exposed inbound — outbound-only agent ✓ outbound WebSocket ✗ needs reachable SSH ✗ needs reachable SSH
Your files stay on the machine that runs the work ✗ their infrastructure
Per-machine notes the AI reads and writes ✓ per account local memory
Agent-to-agent: start another machine's coding agent as a job remote_job_start no job lifecycle inside their sandbox
GUI control — clicking and typing on a desktop ✗ screenshots only* ✗ terminal ✗ terminal
Self-host the control plane yourself ✗ hosted relay only ✓ Docker Compose ✓ GPLv3 ✓ open source
Teams, roles, and audit (RBAC) ✗ not today ✓ teams + RBAC
Entry price Free — 10 machines
Pro $49/mo — up to 100**
MCP server free (MIT)
hosted app sells AI usage credits from $20/mo
Free — 10 agents Free (GPLv3) · Pro $99/yr Free (open source) Metered compute

Competitor claims verified against each vendor's own site on 26 August 2026: desktopcommander.app, managelm.com, chaterm.ai. A dash means we could not verify the capability either way from public material and would rather leave it blank than guess. “SSH-MCP plugins” describes the common shape of the many community MCP servers that wrap an SSH client, not one product. Products move; tell us if something here is out of date.

* Screenshots need a desktop session — they are available on the macOS and Windows desktop apps only, after the machine owner enables the time-limited screen-sharing grant. macOS also requires its separate Screen Recording permission.
** 100 machines is a technical ceiling, not a policy limit. Need more? Get in touch — we'll sort it out.

And against the tools you were using before

The classics still work. They just were not built for an agent to drive.

AI Commander SSH TeamViewer Tailscale + SSH
Built for AI ✓ built in manual screen-first
Works with Claude, ChatGPT, Codex ✓ built in
No open ports needed ✗ needs a port
No screen needed ✓ headless ✗ screen needed
Work that survives the chat ✓ built in tmux/nohup by hand tmux/nohup by hand
Works behind a firewall extra setup
What you get back Text, files & screenshots* Text you can read A screen to watch extra setup
Built-in file transfer for AI ✓ pull & push on Pro SCP/SFTP separately manual file transfer SCP/SFTP separately

Long work doesn't have to be babysat. A training run, a big build, or an overnight dataset job is started as a detached job: it keeps running on your machine after the chat ends, the laptop sleeps, or the network drops. You can ask how it's going later — from another chat, another client, or your phone — read the log, or cancel it. It carries on when the agent itself restarts too: on Linux each job is launched into its own transient systemd scope, outside the agent service's control group, so restarting or upgrading the agent leaves it running — provided the box runs systemd and the agent runs as root, and without both an upgrade still stops running jobs. On Windows a job survives the agent process dying by itself, but an installer that stops the app and everything it started still ends it — assume an unattended auto-update is one unless that machine's installer is known to do otherwise. With ssh you'd wrap the same command in tmux or nohup, keep the session alive, and reconnect to find out what happened. Start ML training on your own GPU →

Security

Security built into the core, not bolted on

AI Commander gives your AI real access to your machine, so security comes first. It is safe by default and explicit about the limits.

Nothing to expose

The app only reaches out — nothing on your machine waits for incoming connections. There's no open door to find or attack, and it works behind firewalls untouched.

Codes are never stored as-is

We never keep your codes or keys in readable form. Even if our database leaked, there would be nothing usable in it — the only readable fragment is a two-character label for your linked machines, which cannot be used on its own. You can revoke a key at any time.

Access doesn't linger

Access refreshes on its own and quietly expires. Keys go dormant until you sign in again, so a forgotten one can't keep working forever.

Nothing is saved long-term

Your commands and their text results are never logged or saved. Files you explicitly transfer are the exception: access ends after 24 hours, then an hourly, retrying sweep removes the inaccessible bytes.

Easy to try, safe by default

A brand-new code works for anyone for one hour, so it's easy to get started. After that, only approved accounts can use it — until you choose to reset and clear access.

Hard to trick

Whatever a machine sends back is treated as plain results to show you, not as new orders to follow — so a sneaky line in a log is far less likely to fool the AI.

A locked-down lane for automation

Need unattended access for a script or scheduled job? A service token runs as a non-root user, on one machine, with only the exact commands you allow — and no shell, so nothing can be injected. Tokens can be long-lived and revoked at any time.

Honest about the limits. This is real access to your machine, not a locked-down sandbox. Everything travels encrypted, and we never store your commands or their text results. Files you explicitly transfer are separate temporary blobs: access expires after 24 hours and cleanup follows in an hourly, retrying sweep. Your code is the key — keep it private, like a password. Read the full security model →
Questions

Frequently asked questions

How do I let ChatGPT or Claude run commands on my own server?
Install the AI Commander app on that machine. It connects outbound to a hosted relay and prints a stable machine code such as AIC-7K3P-WX9M-RTBN. Add https://aicommander.dev/mcp to your MCP client — one command for Claude Code, Codex, opencode, Cursor, or ChatGPT — or call the REST API at /api/v1/exec. Then ask in plain language and the command runs on that machine.
How do I run a job that keeps going after the chat ends?
Start it as a detached job with remote_job_start over MCP, or POST /api/v1/jobs over REST. The call returns a jobId immediately and the work keeps running on your machine through a network drop, a sleeping laptop, and the conversation ending. Come back from another chat, client, or phone and call remote_job_status, remote_job_logs, or remote_job_cancel. A job also survives the agent restarting, on all three platforms: on Linux each job is launched into its own transient systemd scope, outside the agent service's control group, so restarting or upgrading the service leaves it running — that needs a systemd host with the agent running as root, and without both a restart still ends running jobs. On Windows a job survives the agent process dying by itself, but a tree kill still ends it: an installer that stops the app and everything it started, which is what an unattended auto-update must be assumed to be unless that machine's installer is known to do otherwise.
Can an AI agent use a headless server with no screen or GUI?
Yes. AI Commander is command-first, so a headless Linux box, a cloud VM, a GPU rig, a NAS, or a Raspberry Pi works exactly like a desktop — there is no screen to share and no desktop session to keep signed in. Screenshots are the one part that needs a desktop: they are available on the macOS and Windows apps only, after the machine owner enables a time-limited screen-sharing grant.
Can one AI agent start a coding agent on another machine?
Yes, because remote_job_start runs any command. A cloud agent in ChatGPT or Claude can launch the coding agent already installed on another machine — claude -p "…" or a codex run on a Mac Mini or GPU box — as a detached job, get a jobId back, and collect the transcript, exit code, and artifacts later. There is no dedicated ask_agent tool: the mechanism is remote_job_start plus that machine's own CLI.
How does an AI agent remember what it already learned about a machine?
Machine notes. When you are signed in and the machine is online, session_status returns the path of a note file kept on that machine for your account, where an AI client records installed toolchains, where projects and data live, how to build and run them, and the box's quirks. The relay only computes the path — nothing about the note is stored there, and the client reads and writes it with ordinary remote_exec. The read is capped at 16,000 bytes (200 lines through PowerShell on Windows) so an oversized note cannot flood the client's context.
Do I have to open a port, expose SSH, or set up a VPN?
No. The app only makes outbound connections, so nothing on your machine waits for an incoming connection and it works behind a firewall or CGNAT untouched. The relay never stores your commands or their text results; only files you explicitly transfer are held, and only temporarily.
How many machines can I connect for free?
Free gives your AI access to up to 10 saved machines. Pro is 49 USD per month and enables every saved machine up to the technical ceiling of 100**, plus file transfer in both directions. On Free every saved record is kept, but only the 10 oldest by creation time are usable; deleting one promotes the next. The 100-machine figure is a technical ceiling rather than a policy limit — if you need more, get in touch through the feedback link on aicommander.dev and we will sort it out.
Can an AI agent pick a specific GPU and stop two jobs colliding on it?
Yes. AI Commander discovers NVIDIA GPUs and reports VRAM and utilization through list_machines and session_status. Passing gpu_index to remote_job_start reserves that card exclusively: the machine takes a lock and sets CUDA_VISIBLE_DEVICES for the job, and a second job asking for the same card is refused with gpu_busy, naming the holder, instead of both runs hitting CUDA OOM.

** 100 machines is a technical ceiling, not a policy limit. Need more? Get in touch — we'll sort it out.

Also from us

More productivity tools, all AI-ready

Each has a free tier.