I Built a Tool to Control AI Coding Agents from My Phone

Published: (March 18, 2026 at 02:30 PM EDT)
5 min read
Source: Dev.to

Source: Dev.to

The Problem

You’re on the couch, in a coffee shop, or just away from your desk. You have a list of coding tasks you want done and AI coding agents (Claude Code, Aider, Codex, Gemini CLI) installed on your machine—but you can’t use them from your phone.

What if you could just text your tasks from Discord and have multiple AI agents start working on them—each in its own terminal?

What I Built

Agentboard — an open‑source tool that lets you orchestrate multiple AI coding agents from your phone via Discord.

You type:

team Alpha: Build a landing page for my portfolio
team Beta: Fix the auth bug in my API
team Gamma: Write tests for the payment module

On your Mac, three Terminal windows open — each running Claude (or Aider, Codex, Gemini, whatever you configure) working on its assigned task, in parallel.

How It Works

You (Discord on phone)
    |
    v
Discord Bot (Python, runs on your machine)
    |
    +-- Team Alpha → Terminal.app → claude "Build landing page..."
    +-- Team Beta  → Terminal.app → claude "Fix auth bug..."
    +-- Team Gamma → Terminal.app → claude "Write tests..."
  1. Send a message in Discord with team Name: task.
  2. The bot parses the message.
  3. It opens a real Terminal window per team.
  4. It runs your AI coding CLI interactively.
  5. Each team works independently, in parallel.

No API credits are needed for the bot itself—it uses your existing Claude Code subscription (or whatever CLI you have installed).

The Pluggable Backend

Agentboard isn’t locked to one AI tool. It works with any CLI. Configure the command you want in agentboard.toml.

BackendCommand example
Claude Codeclaude "task"
Aideraider --message "task"
Codex CLIcodex "task"
Gemini CLIgemini "task"
Goosegoose run "task"
Any CLICustom command in agentboard.toml

Quick Start

# Clone
git clone https://github.com/LakshmiSravyaVedantham/agentboard
cd agentboard/discord-bot

# Setup
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# Add your Discord bot token to .env
echo 'DISCORD_BOT_TOKEN=your-token' > ../.env

# Run
python bot.py

Then in Discord:

team Alpha: Build a hello world Python script

A Terminal window opens on your Mac with Claude (or the configured CLI) working on it.

Setting Up the Discord Bot (2 minutes)

  1. Go to the Discord Developer Portal.
  2. New Application → name it “Agentboard”.
  3. Bot tab → Reset Token → copy the token.
  4. Enable Message Content Intent.
  5. OAuth2 → URL Generator → scope: bot; permissions: Send Messages, Manage Channels, Read Message History.
  6. Open the generated URL and add the bot to your server.

Place the token in the .env file as shown in the Quick Start section.

What’s Under the Hood

Agentboard also includes a full Rust backend (optional):

  • 17 unit tests covering config, auth, team state machine, backend registry, orchestrator.
  • Axum server with 12 API endpoints + WebSocket.
  • Svelte PWA with dark glassmorphism UI (pairing screen, team dashboard, live terminal output).
  • JWT auth with 6‑digit pairing codes.
  • Pluggable backends via TOML config.
  • Graceful shutdown – SIGTERM to all child processes.

The Rust server compiles to a single ~7 MB binary with the frontend embedded via rust-embed.

In practice, the Discord bot (≈150 lines of Python) is the “killer feature” – it just works with no extra infrastructure.

Commands

CommandWhat happens
team Alpha: Build a landing pageOpens a Terminal with Claude (or configured CLI) working on it.
team Alpha: Fix auth in ~/myprojectOpens a Terminal in that directory.
statusShows all active teams.
kill AlphaTerminates the Alpha team process.
helpLists all available commands.

Why Discord?

I tried building a PWA first, but ran into:

  • Localhost firewall issues on phones.
  • Safari blocks the Web Speech API without HTTPS.
  • Maintaining another app.

Discord solves all of these: it’s already on your phone, handles notifications, and keeps your data in your private server. The bot is only ~150 lines of Python with zero infrastructure cost.

What I Learned

  • Claude Code’s --print flag uses API credits, not your subscription. The interactive claude command uses your subscription—crucial when spawning multiple agents.
  • Multiple Discord bots can pile up. During development, always run pkill -9 -f bot.py before starting a new instance to avoid zombie bots.
  • The simplest approach wins. I built an elaborate Rust + Svelte + WebSocket + JWT system, but the final product that ships is a tiny Python Discord bot that opens Terminal windows. Ship the simple thing.

Try It

Repo: https://github.com/LakshmiSravyaVedantham/agentboard

Star it if you find it useful. PRs welcome — especially for Linux/Windows terminal support.

Agentboard is open source (MIT). No telemetry, no cloud, no data leaves your machine.

0 views
Back to Blog

Related posts

Read more »