PHPackages                             aimeos/pagible - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. aimeos/pagible

ActiveLibrary[API Development](/categories/api)

aimeos/pagible
==============

Pagible CMS

0.9.4(2mo ago)46637414[11 issues](https://github.com/aimeos/pagible/issues)MITPHPCI passing

Since Jun 27Pushed 1mo ago4 watchersCompare

[ Source](https://github.com/aimeos/pagible)[ Packagist](https://packagist.org/packages/aimeos/pagible)[ Docs](https://laravel-cms.org)[ RSS](/packages/aimeos-pagible/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (36)Versions (36)Used By (0)

PagibleAI CMS - Simple as Wordpress, the power of Contentful!
=============================================================

[](#pagibleai-cms---simple-as-wordpress-the-power-of-contentful)

The easy, flexible and scalable API-first PagibleAI CMS package:

- AI generates/enhances drafts and images for you
- Manage structured content like in Contentful
- Define new content elements in seconds
- Assign shared content to multiple pages
- Save, publish and revert drafts
- Extremly fast JSON frontend API
- Versatile GraphQL admin API
- Multi-language support
- Multi-domain routing
- Multi-tenancy capable
- Supports soft-deletes
- Fully Open Source
- Scales from single page with SQLite to millions of pages with DB clusters

It can be installed into any existing Laravel application.

Table of contents
-----------------

[](#table-of-contents)

- [Installation](#installation)
- [Authorization](#authorization)
- [Configuration](#configuration)
- [Clean up](#clean-up)
- [Multi-domain](#multi-domain)
- [Multi-tenancy](#multi-tenancy)
- [MCP API](#mcp-api)
- [Security](#security)

Installation
------------

[](#installation)

You need a working Laravel installation. If you don't have one, you can create it using:

```
composer create-project laravel/laravel pagible
cd pagible
```

The application will be available in the `./pagible` sub-directory. Then, run this command within your Laravel application directory:

```
composer req aimeos/pagible
php artisan cms:install
php artisan migrate
```

Now, adapt the `.env` file of your application and change the `APP_URL` setting to your domain. If you are using `php artisan serve` for testing, add the port of the internal web server (`APP_URL=http://localhost:8000`). Otherwise, the uploading files will fail because they wouldn't be loaded!

Add a line in the "post-update-cmd" section of your `composer.json` file to update the admin backend files after each update:

```
"post-update-cmd": [
    "@php artisan vendor:publish --force --tag=admin",
    "@php artisan vendor:publish --tag=public",
    "@php artisan migrate",
    ...
],
```

### Authorization

[](#authorization)

#### Using artisan command

[](#using-artisan-command)

To allow existing users to edit CMS content or to create a new users if they don't exist yet, you can use the `cms:user` command (replace the e-mail address by the users one):

```
php artisan cms:user -e editor@example.com
```

To remove user permissions for editing CMS content completely, use:

```
php artisan cms:user -d editor@example.com
```

List the current permissions of an user:

```
php artisan cms:user -l editor@example.com
```

To add specific permissions:

```
php artisan cms:user -a page:* -a *:view -a element:view editor@example.com
```

To remove specific permissions:

```
php artisan cms:user -r page:* -r *:view -r element:view editor@example.com
```

The CMS admin backend is available at (replace "mydomain.tld" with your own one):

```
http://mydomain.tld/cmsadmin

```

#### Use custom authorisation

[](#use-custom-authorisation)

To use your own authorization, e.g. from an external service, add this code to the `boot()` method of your `\App\Providers\AppServiceProvider` in the `./app/Providers/AppServiceProvider.php` file:

```
// top of file
use \Illuminate\Contracts\Auth\Authenticatable;

\Aimeos\Cms\Permission::$callback = function( string $action, ?Authenticatable $user ) : bool {
    // check permissions
    return user ? true : false;
};

\Aimeos\Cms\Permission::$addCallback = function( string $action, Authenticatable $user ) : Authenticatable {
    // add permission for action to user
    return $user;
};

\Aimeos\Cms\Permission::$delCallback = function( string $action, Authenticatable $user ) : Authenticatable {
    // remove permission for action to user
    return $user;
};
```

### Configuration

[](#configuration)

#### Captcha protection

[](#captcha-protection)

To protect forms like the contact form against misuse and spam, you can add the [HCaptcha service](https://www.hcaptcha.com/). Sign up at their web site and [create an account](https://dashboard.hcaptcha.com/signup).

In the HCaptcha dashboard, go to the [Sites](https://dashboard.hcaptcha.com/sites)page and add an entry for your web site. When you click on the newly generated entry, the **sitekey** is shown on top. Add this to your `.env` file as:

```
HCAPTCHA_SITEKEY="..."

```

In the [account settings](https://dashboard.hcaptcha.com/settings/secrets), you will find the **secret** that is required too in your `.env` file as:

```
HCAPTCHA_SECRET="..."

```

#### AI support

[](#ai-support)

To generate texts/images from prompts, analyze image/video/audio content, or execute actions based on your prompts, you have to configure one or more of the AI service providers supported by the [Prism](https://github.com/prism-php/prism/blob/main/config/prism.php) and [Prisma](https://php-prisma.org/#supported-providers) packages.

**Note:** You only need to configure API keys for the AI service providers you are using, not for all!

All service providers require to sign-up and create an account first. They will provide an API key which you need to add to your `.env` file or as environment variable, e.g.:

```
GEMINI_API_KEY="..."
OPENAI_API_KEY="..."
CLIPDROP_API_KEY="..."
DEEPL_API_KEY="..."

# Text translation
CMS_AI_TRANSLATE_API_KEY="${DEEPL_API_KEY}"
# For DeepL Pro accounts
# CMS_AI_TRANSLATE_URL="https://api.deepl.com/"

# Analyze content and generate text/images
CMS_AI_WRITE_API_KEY="${GEMINI_API_KEY}"
CMS_AI_REFINE_API_KEY="${GEMINI_API_KEY}"
CMS_AI_DESCRIBE_API_KEY="${GEMINI_API_KEY}"
CMS_AI_IMAGINE_API_KEY="${GEMINI_API_KEY}"
CMS_AI_INPAINT_API_KEY="${GEMINI_API_KEY}"
CMS_AI_REPAINT_API_KEY="${GEMINI_API_KEY}"

# Image manipulation
CMS_AI_ERASE_API_KEY="${CLIPDROP_API_KEY}"
CMS_AI_ISOLATE_API_KEY="${CLIPDROP_API_KEY}"
CMS_AI_UNCROP_API_KEY="${CLIPDROP_API_KEY}"
CMS_AI_UPSCALE_API_KEY="${CLIPDROP_API_KEY}"

# Audio transcription
CMS_AI_TRANSCRIBE_API_KEY="${OPENAI_API_KEY}"

```

For best results and all features, you need Google, OpenAI, Clipdrop, and DeepL at the moment and they are also configured by default. If you want to use a different provider or model, you can to configure them in your `.env` file too. Please have a look into the [./config/cms.php](https://github.com/aimeos/pagible/blob/master/config/cms.php) for the used environment variables.

**Note:** You can also configure the base URLs for each provider using the `url` key in each provider configuration, e.g.:

```
    'transcribe' => [ // Transcribe audio
        'provider' => env( 'CMS_AI_TRANSCRIBE', 'openai' ),
        'model' => env( 'CMS_AI_TRANSCRIBE_MODEL', 'whisper-1' ),
        'api_key' => env( 'CMS_AI_TRANSCRIBE_API_KEY' ),
        'url' => 'https://openai-api.compatible-provider.com'
    ],
```

### Publishing

[](#publishing)

For scheduled publishing, you need to add this line to the `routes/console.php` class:

```
\Illuminate\Support\Facades\Schedule::command('cms:publish')->daily();
```

### Clean up

[](#clean-up)

To clean up soft-deleted pages, elements and files regularly, add these lines to the `routes/console.php` class:

```
\Illuminate\Support\Facades\Schedule::command('model:prune', [
    '--model' => [
        \Aimeos\Cms\Models\Page::class,
        \Aimeos\Cms\Models\Element::class,
        \Aimeos\Cms\Models\File::class
    ],
])->daily();
```

You can configure the timeframe after soft-deleted items will be removed permantently by setting the [CMS\_PURGE](https://github.com/aimeos/pagible/blob/master/config/cms.php) option in your `.env` file. It's value must be the number of days after the items will be removed permanently or FALSE if the soft-deleted items shouldn't be removed at all.

### Multi-domain

[](#multi-domain)

Using multiple page trees with different domains is possible by adding `CMS_MULTIDOMAIN=true` to your `.env` file.

### Multi-tenancy

[](#multi-tenancy)

PagibleAI CMS supports single database multi-tenancy using existing Laravel tenancy packages or code implemented by your own.

The [Tenancy for Laravel](https://tenancyforlaravel.com/) package is most often used. How to set up the package is described in the [tenancy quickstart](https://tenancyforlaravel.com/docs/v3/quickstart) and take a look into the [single database tenancy](https://tenancyforlaravel.com/docs/v3/single-database-tenancy) article too.

Afterwards, tell PagibleAI CMS how the ID of the current tenant can be retrieved. Add this code to the `boot()` method of your `\App\Providers\AppServiceProvider` in the `./app/Providers/AppServiceProvider.php` file:

```
\Aimeos\Cms\Tenancy::$callback = function() {
    return tenancy()->initialized ? tenant()->getTenantKey() : '';
};
```

### MCP API

[](#mcp-api)

PagibleAI CMS offers tools within the Laravel MCP API that LLMs can use to interact with the CMS. Please have a look into the [MCP.md](MCP.md) file for details how to set up the MCP API and Passport for authentication.

Security
--------

[](#security)

If you find a security related issue, please contact `security at aimeos.org`.

Special thanks to:

- Lwin Min Oo

###  Health Score

46

—

FairBetter than 93% of packages

Maintenance87

Actively maintained with recent releases

Popularity36

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity38

Early-stage or recently created project

 Bus Factor1

Top contributor holds 98% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~9 days

Recently: every ~3 days

Total

29

Last Release

64d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ccdc84033584516c77fb6aa7f85dc7048f2fbcd08867fc6abf115d094bab5eef?d=identicon)[aimeos](/maintainers/aimeos)

---

Top Contributors

[![aimeos](https://avatars.githubusercontent.com/u/8647429?v=4)](https://github.com/aimeos "aimeos (1561 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (32 commits)")

---

Tags

aiapicmscontent-managementcontent-management-systemcontentfulgraphqlheadless-cmsjsonapilaravellaravel-cmsmulti-tenancymulti-tenantmysqlphppostgresqlsqlitesqlservervuejs3wordpressapilaravelgraphqlpackagejsonapicmsmulti-tenantmulti-language

###  Code Quality

Static AnalysisPHPStan

### Embed Badge

![Health badge](/badges/aimeos-pagible/health.svg)

```
[![Health](https://phpackages.com/badges/aimeos-pagible/health.svg)](https://phpackages.com/packages/aimeos-pagible)
```

###  Alternatives

[statamic/cms

The Statamic CMS Core Package

4.8k3.2M720](/packages/statamic-cms)[darkaonline/l5-swagger

OpenApi or Swagger integration to Laravel

2.9k34.0M112](/packages/darkaonline-l5-swagger)[aimeos/aimeos-laravel

Cloud native, API first Laravel eCommerce package with integrated AI for ultra-fast online shops, marketplaces and complex B2B projects

8.6k214.7k3](/packages/aimeos-aimeos-laravel)[knuckleswtf/scribe

Generate API documentation for humans from your Laravel codebase.✍

2.3k12.2M45](/packages/knuckleswtf-scribe)[cloudcreativity/laravel-json-api

JSON API (jsonapi.org) support for Laravel applications.

7881.1M5](/packages/cloudcreativity-laravel-json-api)[joisarjignesh/bigbluebutton

BigBlueButton Server API Library for Laravel

162145.5k1](/packages/joisarjignesh-bigbluebutton)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
