alle80/agent-devboard

Agent Devboard: a Livewire dev board where you queue requests for a coding agent (open to work → working → done, questions, stop, resume) — multiple lists, sub-tasks, notes, images, live updates, themes, settings.

Maintainers

Package info

github.com/alle80/agent-devboard

pkg:composer/alle80/agent-devboard

Transparency log

Statistics

Installs: 82

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.9.0 2026-08-19 02:51 UTC

This package is auto-updated.

Last update: 2026-08-19 02:52:04 UTC


README

A dev board for coding agents on Laravel 12/13 + Livewire 4. You queue requests as todos; a coding agent (Claude Code, …) takes them, asks questions, and closes them — driven from the app.

Includes

  • Agent workflow: open to work → working → done, with questions, stop and resume
  • Multiple lists per user · sub-tasks · notes
  • Image attachments (upload / camera / paste) with optional AI descriptions for search
  • Archive · state filters · free-text search
  • Live updates between devices (any Laravel broadcaster, e.g. Reverb)
  • A theme system (built-in Slate theme + installable zip packs) and a settings page
  • English base language with an Italian translation

Extracted from the original app at https://github.com/alle80/laravel-dev.

Requirements

  • PHP 8.3+ · Laravel 12 or 13 · Livewire 4 · Tailwind CSS 4 (Vite) in the host app
  • ext-gd (image resizing) · spatie/laravel-settings (installed automatically)
  • Optional: laravel/ai (AI image descriptions) · a broadcaster like laravel/reverb (live updates)

Install

composer require alle80/agent-devboard
php artisan migrate                                  # tables + settings defaults (idempotent)
php artisan storage:link                             # attachments live on the "public" disk
php artisan vendor:publish --tag=devboard-assets     # precompiled build & theme assets

Routes register automatically — / (default theme), /{theme}, /settings — behind web + auth. The package needs an authenticated user (lists belong to users), so plug it into your app's login.

Then wire up the front-end assets (below) and you're ready to connect an agent.

Connect a coding agent

One list — config('devboard.agent_list'), default dev — is the request channel between you and the agent. You add todos; the agent works them. Setup is meant to be minimal:

1 — Launch the agent inside the project directory (Claude Code, or any agent that reads a project AGENTS.md).

2 — Give it the workflow (once):

php artisan vendor:publish --tag=devboard-agents     # drops AGENTS.md in the project root

Agents read AGENTS.md automatically; it describes the whole protocol (states, order, questions, stop).

3 — Start the monitor (one command):

php artisan devboard:watch      # prints ONLY the changes the agent must react to

watch polls the list and emits a line when something needs the agent — an item goes open to work, the answers to a paused question arrive, or a stop is requested. The agent then reads and acts with devboard:check.

The state of each row

Dot State Meaning
waiting not ready — the agent leaves it alone
🟢 open to work the user released it; the agent may take it (top-down = priority)
🔧 working the agent took it (its first action, so you see it in real time)
question the agent asked something; paused until you answer in the app
stop you stopped it; the agent drops it immediately
done closed, with the agent's comment

The agent's commands (devboard:check)

php artisan devboard:check                 # what to work on (🟢/🔧), in order; --all for everything
php artisan devboard:check --take=ID       # take it in charge  → 🔧
php artisan devboard:check --ask=ID --q="" --q=""   # ask, pausing it → ❓
php artisan devboard:check --done=ID --comment=""    # close it, with a note back to the user → ✔

devboard:check also prints the behaviour settings from /settings (commit policy, autonomy, notifications, …) that the agent is expected to follow. A closed item can be resumed into a new linked one, carrying its context.

Front-end assets

Pick one mode.

A — Precompiled (zero build). Use the CSS/JS shipped by the package:

# .env  →  DEVBOARD_ASSETS=precompiled   (or 'assets' => 'precompiled' in config/devboard.php)
php artisan vendor:publish --tag=devboard-assets     # public/vendor/devboard/{build,images}

<x-devboard::assets /> then links public/vendor/devboard/build/devboard.{css,js} (Tailwind utilities, the theme system, SortableJS, and Laravel Echo when a Reverb/Pusher key is set). No npm.

B — Bundled by your app (default, assets = vite). Import the package sources in your Vite build. Tailwind 4 doesn't scan vendor/, so add an @source:

/* resources/css/app.css */
@import 'tailwindcss';
@source '../../vendor/alle80/agent-devboard/resources/views/**/*.blade.php';
@import '../../vendor/alle80/agent-devboard/resources/css/devboard.css';
// resources/js/app.js
import '../../vendor/alle80/agent-devboard/resources/js/devboard.js';   // SortableJS + Echo (optional)
npm i sortablejs laravel-echo pusher-js && npm run build

In both modes the Echo client is configured at runtime from config('devboard.echo') (VITE_REVERB_* / REVERB_*); an empty key opens no WebSocket. Theme fonts load from config('devboard.fonts_url') (bunny.net by default; set '' to self-host). To rebuild the precompiled files after editing package sources: cd vendor/alle80/agent-devboard && npm install && npm run build.

Configuration

php artisan vendor:publish --tag=devboard-config     # config/devboard.php
php artisan vendor:publish --tag=devboard-views      # override the Blade views
php artisan vendor:publish --tag=devboard-lang       # translations (en, it)
php artisan vendor:publish --tag=devboard-agents     # AGENTS.md (agent workflow)

config/devboard.php covers the route prefix and middleware, the user model, the attachments disk, the default theme, and the agent list name (agent_list).

Themes

The package ships a generic theme system (shared views + CSS variables per .theme-<slug>) with the built-in Slate theme. Add more with config('devboard.themes') or Alle80\Devboard\Themes::registerTheme($slug, [...]) plus a .theme-<slug> { --tl-… } CSS block. Fully custom styles (own components/views) plug in via Themes::registerStyle() / Themes::registerSkin().

Installable packs (zip): a theme.json + theme.css (+ optional images/). Install from /settings → 🎨 Themes or php artisan devboard:theme-import pack.zip; packs live in storage/app/themes/<slug>. Export any theme as a starting point: php artisan devboard:theme-export slate --css-from=resources/css/app.css. A sample pack (pollon) is in resources/themes/.

Live updates

Every change to a todo / sub-task / question / attachment broadcasts Alle80\Devboard\Events\TodoChanged on the private channel App.Models.User.{id}. With no broadcaster configured nothing happens (failures are logged, never raised).

Development

cd packages/devboard && composer update && vendor/bin/phpunit

The suite (orchestra/testbench, in-memory sqlite) covers migrations, per-user scoping, the Livewire components, devboard:check and devboard:watch, the theme registry and zip packs, translation parity and the live event. GitHub Actions runs it on PHP 8.3 / 8.4 on every push touching the package.

License

MIT — see LICENSE.