Build and deploy an agent you can text, in 10 minutes
The fastest path is to hand the Plow setup prompt to your coding agent. Prefer to see every step? The walkthrough below builds your image, pushes it, and deploys it to Plow.
Get the plow-agents CLI and log in
Clone the CLI repo, put its bin on your PATH, then log in and list the phone lines an agent can be deployed on. Keep the ID of a free line for step 5.
git clone https://github.com/plow-pbc/plow-agents.git
export PATH="$PWD/plow-agents/bin:$PATH"
plow-agents login # text the activation phrase to the number it prints
plow-agents lines # note a free line ID (ln_xxx)
Bring your own agent, or start Plow-ready
Any container works. Your image reads PLOW_API_BASE from its environment and sends PLOW_AGENT_TOKEN as a bearer when it is set, and its CMD is PID 1. That is the whole contract.
FROM python:3.11-slim
COPY agent.py /agent.py
CMD ["python", "/agent.py"]
Build the image
Plow's VMs are amd64, so the image is built for linux/amd64.
plow-agents image build ghcr.io/YOUR_ACCOUNT/my-agent:v1
Push it to a public registry
Plow pulls anonymously, so the package has to be public. Log in to the registry with a classic PAT carrying write:packages, then push.
docker login ghcr.io -u YOUR_GITHUB_USERNAME
plow-agents image push ghcr.io/YOUR_ACCOUNT/my-agent:v1
Deploy it to Plow
Hand Plow the digest and the free line from step 1. Plow creates the VM and returns; it does not wait for your agent to boot.
plow-agents deploy ghcr.io/YOUR_ACCOUNT/my-agent@sha256:… --line ln_xxx
plow-agents agents # poll until the status is running
Text it
Once the status is running, text the number plow-agents lines shows for that line. When it replies, your hosted agent is live. A failed status prints the failure code beside it.
Your agent is live.
It is hosted on Plow, and it answers over chat from your line.
Full flow and troubleshooting live in the plow-pbc/plow-agents README.
Develop locally when you need to.
You can run the same agent on your own machine with Docker Compose while you work on it. Use this for development and debugging. The deployed agent runs on Plow.
Run it with Compose
Copy the example Compose file into your agent repository, claim a free line, and bring it up.
curl -fsSL https://raw.githubusercontent.com/plow-pbc/plow-agents/main/compose.example.yml -o compose.yml
plow-agents lines
plow-agents deploy --local --line ln_xxx
docker compose logs -f
When you are finished, release the line and tear the stack down.
plow-agents revoke
docker compose down -v
Start from a working agent template.
Clone a base image or a full example, then make it yours. Every template is a real repo.
Hermes agent
The preconfigured Hermes runtime with the chat plugin ready. The default starting point.
Use this templateLife assistant
A fuller example with instructions, skills, and tools wired up for everyday tasks.
Open example