What Dash is
Dash is an agency operating system. We use it to keep client work, retainers, invoices, and agents in one place instead of spreading that state across Slack, a dozen spreadsheets, and whoever happened to remember.
It is not a WordPress plugin. It is not a hosted SaaS. It is a Laravel 12 app with Vue 3 and Inertia that you clone and run. The public tree at zao-web/zao-dash-oss is an MIT snapshot of that app, with household finance and tax office tools stripped out.
- PHP
- 8.4
- Laravel
- 12
- Vue
- 3, Composition API
- Inertia
- 2
- License
- MIT
Why we published it
We built Dash because we needed an operating system that agents can actually call. Keeping that private would have left us with a useful tool nobody else could run. Publishing a sanitized tree lets another shop stand up the same clients-to-invoices loop, including the MCP servers our own agents already use.
The snapshot is honest about what it is not. Owner PII, production hosts, household Life ledgers, and the CPA/tax office are out. What stayed is the agency product: clients, projects, tasks, retainers, invoices, leads, agents, the website builder, and the Slack, GitHub, and Google integrations.
Agents talk to it over MCP
HTTP MCP servers register in routes/ai.php. Cursor, Claude, and other MCP clients call those servers the same way they call any other tool. Internal servers use Sanctum plus an internal-user gate. The client server uses a client-scoped token.
This is the useful map, not the full catalog. Tool names and arguments live in the repository.
-
/mcp/zao-dashZaoDashServer - Clients, projects, tasks, invoices, and agents.
-
/mcp/zao-webZaoWebServer - Website builder, WordPress, and SEO work.
-
/mcp/zao-commsZaoCommsServer - Email, Slack, Drive, and RFPs.
-
/mcp/zao-financeZaoFinanceServer - Client profitability and invoice velocity (DSO).
-
/mcp/zao-clientZaoClientServer - A per-client site token, not the internal agency servers.
Get it running
The README is the source of truth. These are the first-run steps as of the public snapshot.
- Install PHP 8.4, Composer, Node 20+, and SQLite or MySQL.
- Clone the public tree and copy .env.example to .env.
- Run composer setup. That installs PHP deps, generates APP_KEY, migrates, and builds assets.
- Run composer dev, then open APP_URL from .env.
- If you seeded, sign in as owner@example.com. Change that password before any shared deploy.
What we left out
Household Life ledger UI, the CPA/tax office, personal-bank MCP tools, and owner PII are stripped or stubbed. Some models and migrations remain so php artisan migrate stays coherent with the private schema. They have no HTTP routes in this snapshot. docs/OSS.md lists the strip.
Start with the repository
Clone it, run composer setup, then read the README. MIT on our source. Composer and npm dependencies keep their own licenses.