Built on Laravel, Herd, PHP, Postgres, MySQL, Redis, Docker, Inertia, React, Vite, and Tailwind — open source
One admin for content, files, access, and ops.
Dashboard insights, collection packs, a file tree, activity logs, and health tabs — the same UI your operators use every day.

Platform
Everything operators need — without filing a ticket.
Collections
Model content your way
Define collections and typed fields, create items with locales, or bootstrap from packs — Articles, Products, Pages, SEO, and more.
Files
Hierarchical file manager
Folders, uploads, tags, duplicate, and async zip downloads — a real tree, not a flat dump.
Keyboard
Built for power users
Keyboard-first admin on React and Inertia — dashboard Overview and Health, with the assistant one click away.
Access
Roles, groups, permissions
Spatie RBAC plus user groups — effective permissions gate the admin UI and every AI tool the same way.
Anywhere
Self-host on your stack
SQLite for local, MySQL or Postgres in production. Optional Redis + Horizon + Reverb + Pulse when you need the full ops surface.
AI assistant
Ship content faster with permission-aware AI.
In-app assistant on laravel/ai — tools gated by effective permissions, with cloud or local providers.
Every tool call checks the signed-in user’s effective permissions — same gate as the admin UI.
Permission-aware tools
Collections, files, imports, and activity tools only run when the user is allowed.
Imports & sync
Chat attachments and import jobs stay inside the same operator workflow.
Local + cloud
Point LOCAL_AI_* at an OpenAI-compatible gateway, or use a cloud provider.
Same RBAC as admin
Spatie effective permissions gate the UI and every assistant tool the same way.
Headless
Ship APIs on the same source of truth.
GET/api/v1/items/articles→{ "data": [{ "id": 1, "status": "published" }] }POST/api/v1/items/products→{ "data": { "id": 42, "sku": "EXT-100" } }GQL{ collections { name fields { type } } }
Public CMS API
REST for websites and apps
Headless /api/v1 with a per-collection create/read/update/delete matrix for anonymous public access and Bearer API keys.
Integrations
Webhooks & GraphQL
HMAC-signed outbound events plus GraphQL — connect frontends and automation without inventing another auth story.
Teams
Operators and builders together
Content teams manage collections; platform teams ship branding, locales, modules, and webhooks from project settings.
Providers
On-machine gateway
LOCAL_AI_BASE_URL=http://127.0.0.1:11434Local AI
Run models on your machine
Point LOCAL_AI_* at an OpenAI-compatible gateway — no cloud required for the optional assistant. See the AI showcase · Configure local AI
Open source
Clone it. Seed it. Own the deployment.
Externa ships as externa-core — Laravel, Inertia + React 19, Spatie permission & activitylog, Vite, and Tailwind. No SaaS lock-in: you control the database, the queue worker, and the AI gateway.
- Install with Laravel Herd — composer setup, seed, storage:link, then composer run dev.
- Sign in as super admin and explore collections, files, users, and settings.
- Keep a queue worker running for zip, duplicate, and import jobs. Optional: point LOCAL_AI_* at an OpenAI-compatible gateway.





