jambostack / jambo-api
Jambo API — Headless CMS open-source. Backend API REST + GraphQL pour le JamboStack.
Requires
- php: >=8.4
- ext-ctype: *
- ext-iconv: *
- doctrine/doctrine-bundle: ^3.2
- doctrine/doctrine-migrations-bundle: ^4.0
- doctrine/orm: ^3.6
- dompdf/dompdf: ^3.1
- gregwar/captcha-bundle: ^2.5
- intervention/image: ^4.1
- knplabs/knp-paginator-bundle: ^6.10
- lcobucci/jwt: 5.5
- meilisearch/meilisearch-php: *
- nelmio/api-doc-bundle: *
- phpdocumentor/reflection-docblock: ^6.0
- phpstan/phpdoc-parser: ^2.3
- stof/doctrine-extensions-bundle: ^1.15
- symfony/apache-pack: *
- symfony/asset: 8.0.*
- symfony/console: 8.0.*
- symfony/doctrine-messenger: 8.0.*
- symfony/dotenv: 8.0.*
- symfony/expression-language: 8.0.*
- symfony/flex: ^2
- symfony/form: 8.0.*
- symfony/framework-bundle: 8.0.*
- symfony/http-client: 8.0.*
- symfony/intl: 8.0.*
- symfony/mailer: 8.0.*
- symfony/mime: 8.0.*
- symfony/monolog-bundle: ^3.0|^4.0
- symfony/notifier: 8.0.*
- symfony/process: 8.0.*
- symfony/property-access: 8.0.*
- symfony/property-info: 8.0.*
- symfony/rate-limiter: 8.0.*
- symfony/runtime: 8.0.*
- symfony/security-bundle: 8.0.*
- symfony/serializer: 8.0.*
- symfony/stimulus-bundle: ^3.0
- symfony/string: 8.0.*
- symfony/translation: 8.0.*
- symfony/twig-bundle: 8.0.*
- symfony/uid: 8.0.*
- symfony/ux-turbo: ^3.0
- symfony/validator: 8.0.*
- symfony/web-link: 8.0.*
- symfony/webpack-encore-bundle: ^2.4
- symfony/yaml: 8.0.*
- twig/extra-bundle: ^2.12|^3.0
- twig/intl-extra: ^3.24
- twig/twig: ^2.12|^3.0
- vich/uploader-bundle: ^2.9
- webonyx/graphql-php: ^15.32
- zircote/swagger-php: *
Requires (Dev)
- doctrine/doctrine-fixtures-bundle: ^4.3
- phpunit/phpunit: ^13.1
- symfony/browser-kit: 8.0.*
- symfony/css-selector: 8.0.*
- symfony/debug-bundle: 8.0.*
- symfony/maker-bundle: ^1.0
- symfony/stopwatch: 8.0.*
- symfony/web-profiler-bundle: 8.0.*
Conflicts
README
Jambo API
Open-source headless CMS — Symfony 8 · PHP 8.4 · React 19
Website · Documentation · Changelog
Two capabilities your current CMS doesn't have
🔌 Native MCP Server — AI agents read and write your content directly
Connect Claude, Cursor, or any MCP-compatible agent to Jambo API. No custom API glue code. No integration layer. The agent talks to your CMS the same way a developer would — and acts autonomously.
# Your .cursor/mcp.json (or Claude Desktop config)
{
"jambo": {
"url": "https://your-jambo.com/mcp",
"token": "your-api-token"
}
}
What your agent can do out of the box:
- Browse collections, read and filter entries
- Create, update, delete content
- Manage schema (add fields, create collections)
- Upload and query media assets
- Translate entries into any configured locale
- Manage front-end users
"Connect your AI to update product sheets without writing a single line of API integration code."
🤖 AI Studio — design your entire schema in a single conversation
Open the Studio, describe your project in plain language, and the AI scaffolds all your collections and fields — names, types, relations, required flags. Change your mind? Just say so.
Supported providers: OpenAI · Claude · Gemini · Mistral · Groq · DeepSeek · xAI · Perplexity · Qwen · Ollama
The AI also works inside entries: generate content, translate to 4 languages, suggest improvements — without leaving the admin.
One install. Unlimited projects.
Most headless CMS tools give you one project per deployment. Jambo API gives you unlimited projects on a single instance — each with its own collections, API tokens, locales, and end users. No extra containers. No extra SSL certificates. No extra pipelines.
| Jambo API | Strapi v5 | Directus | Payload v3 | |
|---|---|---|---|---|
| Multi-project (single install) | ✅ native | ❌ | ❌ | ❌ |
| AI Schema Studio | ✅ native | ❌ | ❌ | ❌ |
| MCP Server (AI agents) | ✅ v2.0 native | ❌ | ✅ extension | ✅ plugin |
| End Users (front-end auth) | ✅ separate table + JWT | ✅ | ⚠️ | ✅ |
| Content Versioning | ✅ open source | ❌ Enterprise | ✅ | ✅ |
| Multi-locale | ✅ native | ✅ | ✅ | ✅ |
| GraphQL | ✅ native | ✅ | ✅ | ✅ |
| Full-text Search | ✅ Meilisearch | ❌ | ❌ | ❌ |
| Audit logs | ✅ open source | ❌ Enterprise | ✅ | ❌ |
| PDF export | ✅ native | ❌ | ❌ | ❌ |
| License | AGPL v3 | MIT | Apache 2.0 | MIT |
Everything else you need
Content
- 17 field types — text, longtext, richtext (Lexical editor), slug, email, number, decimal, boolean, date, datetime, color, json, enumeration, media, relation
- Singleton collections — for hero sections, site config, about pages
- Content Versioning — full history, diff & restore on every entry
- Collection Templates — reusable schema blueprints across projects
- Full-text Search — Meilisearch, real-time indexing
API
- REST — paginated, filterable, locale-aware, status-aware
- GraphQL — auto-generated schema, queries & mutations
- OpenAPI / Swagger UI — auto-generated interactive docs
- Export / Import — zip-based project snapshots (structure + content + media)
Users & Security
- Admin users — roles, project membership, invitations
- End Users — separate front-end auth table, JWT, custom fields, password reset, cross-project IDOR protection
- Rate limiter, CSRF protection, HMAC-signed API tokens
Admin Panel
- React 19 + Inertia.js + Tailwind CSS 4 + shadcn/ui
- Lexical rich text (bold, italic, tables, code, links)
- Dark mode · emerald design system
DevOps
- Webhooks — per-collection event triggers
- Audit logs — every admin action tracked
- Mailer — per-project SMTP + email log
- Messenger — async jobs (Doctrine transport)
Tech Stack
| Backend | PHP 8.4 + Symfony 8 |
| ORM | Doctrine ORM 3 + Migrations |
| Database | MySQL 8 · PostgreSQL 14 · SQLite |
| Search | Meilisearch |
| AI | Symfony AI Bundle — 10 providers |
| Auth | Symfony Security + lcobucci/jwt 5.5 |
| Media | VichUploader + Intervention Image 4 |
| Queue | Symfony Messenger |
| GraphQL | webonyx/graphql-php 15 |
| Frontend | React 19 + Inertia.js 3 + Webpack Encore |
| Styles | Tailwind CSS 4 + shadcn/ui + Radix UI |
Getting Started
Requirements
- PHP 8.4+ · Composer · Node.js 18+ + npm
- MySQL 8+, PostgreSQL 14+, or SQLite
- Optional: Meilisearch, Symfony CLI
Installation
git clone https://github.com/jambostack/jambo-api.git cd jambo-api composer install npm install && npm run build cp .env .env.local
Edit .env.local:
APP_SECRET=change-this-to-a-strong-random-value DATABASE_URL="mysql://user:password@127.0.0.1:3306/jambo?serverVersion=8.0.32&charset=utf8mb4" APP_HOSTNAME=yourdomain.com
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
php bin/console app:setup # creates your admin account
symfony serve
Open http://localhost:8000. See the full installation guide.
⚠️ Security: Never use the demo fixture credentials (
admin@jambostack.site/admin1234) in production. See SECURITY.md.
API Quick Reference
# List published entries GET /api/{project-uuid}/{collection}?locale=en&page=1&per_page=20 # Single entry GET /api/{project-uuid}/{collection}/{entry-uuid} # Authorization Authorization: Bearer YOUR_API_TOKEN # GraphQL POST /api/{project-uuid}/graphql
MCP Server
Endpoint : https://your-jambo.com/mcp
Version : 2.0.0
Tool categories: Exploration · Content · Schema · Media · End Users · AI Tools
Full reference → docs.jambostack.site/api/introduction
Roadmap
- REST API + GraphQL + OpenAPI/Swagger
- AI Schema Studio (10 providers)
- MCP Server v2.0
- End Users + JWT
- Content versioning · Webhooks · Audit logs
- Meilisearch · Multi-locale · PDF export
- Project & Collection templates · Export/Import
- Docker one-click install
- Jambo Cloud (managed hosting)
- Plugin/extension system
Contributing
See CONTRIBUTING.md. Security issues → jprud67@gmail.com (SECURITY.md).
License
GNU AGPL v3 — free to use, modify, and self-host.