Docs

What the agents can do

Two agents per account. Each one persistent, each one running as your Linux user. Tell them what you want in plain English — they plan, run, and report.

Ops agent · infrastructure

For everything that lives outside your code: domains, certs, services, system packages, log triage. The Ops agent has a small allow-list of privileged actions it can request — it can never escalate beyond what you can do yourself.

Common prompts

› point mysite.com at this account
› renew the cert for api.alice.dev
› tail my apache error log and tell me what's broken
› install ffmpeg
› back up my SQLite DB to ~/backups every night
› show me what's eating disk space in my home dir
› generate me a fresh ssh key

Privileged actions

The Ops agent runs as your Linux user, but can request these via a small setuid helper:

# bind a customer-owned domain to your ~/public_html
sudo addsite alice.dev

# issue or renew a cert
sudo cert alice.dev

# restart user-scoped services
sudo service-restart apache

Dev agent · application code

Lives inside ~/public_html. Writes, edits, and runs your application code. Can spin up php -S previews on a non-public port for you to inspect before going live.

Common prompts

› scaffold a simple PHP contact form that emails me
› there's a 500 on /products — fix it
› add a SQLite table for newsletter signups
› migrate my Wordpress export at ~/import.xml into a new install
› dark-mode the landing page
› wire up Stripe checkout with the keys in .env

Your environment

Every account ships with the same stack. Boring and battle-tested.

Ubuntu 24.04 LTS
Apache 2.4 (mpm_itk — vhosts run as your user)
PHP 8.3            php-cli  php-sqlite3  php-curl  php-mbstring  php-xml  php-zip
Python 3.12        with venv + pip
SQLite 3.45        CLI + bindings for PHP and Python
tmux 3.4           your agents live in here
Plus: git, curl, certbot, openssl, unzip, jq, vim, nano

Your home directory layout:

~/                              # /home/<handle>.sshgrid.com
├── public_html/                # served at https://<handle>.sshgrid.com
├── logs/                       # apache access + error logs
├── uploads/                    # drop files here for the agent to use
├── backups/                    # automated nightly backups (if enabled)
├── scripts/                    # agent-written helper scripts
└── agent.md                    # injected into agents at startup

Direct access

If the agents aren't enough — or you just want to look around — you have real SSH and SFTP. No passwords, key-based only.

ssh    your-handle.sshgrid.com@51.222.16.250
sftp   your-handle.sshgrid.com@51.222.16.250

Add an SSH key from your account page. You can also tmux attach -t agent-ops if you want to watch the agent live.

Dispatches & quotas

One dispatch = one user message to an agent. It doesn't matter how many tool-calls the agent runs in response — it's still one dispatch.

  • Free: 5 lifetime dispatches
  • Pro: 200 dispatches per month + $0.10 per overage
  • Studio: unlimited

The agent will tell you when it ends with one of these markers:

DONE                    # task complete, dispatch closed
WAITING_FOR_CUSTOMER    # needs your input (e.g. DNS hasn't propagated)

What we don't do (yet)

  • MySQL / Postgres — SQLite only at this tier.
  • Long-running background workers (no systemd --user).
  • Outbound email — point at SendGrid or Postmark.
  • Multi-region / multi-server.
  • Team accounts (one human per subscription).

Where to get help

If something goes sideways, just ask the agent. It can read its own logs and usually fixes itself. If you need a human: