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, and async zip downloads on local disk, S3, Google Cloud Storage, or Azure Blob: a real tree, not a flat dump.
Keyboard
Built for power users
Keyboard-first admin on React and Inertia, with accessibility work toward WCAG 2.2 AA and axe checks in CI. The assistant is 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, plus an optional MCP server: tools gated by effective permissions, write tools behind human approval, with cloud or local providers.
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, every assistant tool, and the optional MCP server the same way.
Headless
Ship APIs on the same source of truth.
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 pick a theme preset or brand color and ship locales, modules, and webhooks from project settings.
Local 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
Extensible
It's your Laravel app. Build whatever you need.
Externa isn't a closed SaaS or a plugin sandbox: create-project gives you the full Laravel source in your own repository. Need background jobs, custom admin pages, new field types, or extra API endpoints? Write them as normal Laravel and React code, right next to everything Externa ships.
- Queued jobs, listeners, and scheduled commands for your own workflows
- Custom routes, controllers, and Inertia pages for sections Externa doesn't ship
- New permissions, field types, and AI assistant tools, following the Extending guide
- Outbound webhooks and the Public API when you'd rather not touch PHP at all
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.
Docs are AI-ready: published as llms.txt and indexed on Context7, so Cursor, Claude Code, Copilot, and similar tools can read them directly. Using Externa with AI coding tools
- 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.



