PHPackages                             frumle/frumle - 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. frumle/frumle

ActiveLibrary[API Development](/categories/api)

frumle/frumle
=============

AI-powered codebase analyzer and API documentation generator for PHP

0.2.0(5mo ago)08MITPHPPHP &gt;=8.0

Since Feb 26Pushed 3w agoCompare

[ Source](https://github.com/curtiscrentsil/frumle-php-composer)[ Packagist](https://packagist.org/packages/frumle/frumle)[ RSS](/packages/frumle-frumle/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (4)Used By (0)

Frumle - AI-Powered Codebase Analyzer for PHP
=============================================

[](#frumle---ai-powered-codebase-analyzer-for-php)

Analyze your PHP codebase with AI and generate comprehensive API documentation. Supports **Laravel**, **Symfony**, **CodeIgniter 4+**, **CakePHP**, **Yii**, **Laminas (Zend)**, **Slim**, and **Phalcon**.

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

[](#installation)

```
composer require --dev frumle/frumle
```

> **Note:** Avoid `composer global require` if you also use Frumle for JavaScript, Python, or C# — global installs from different package managers can conflict. Use `vendor/bin/frumle` instead.

Quick Start
-----------

[](#quick-start)

```
# 1. Add your API key (get it from the Frumle dashboard)
vendor/bin/frumle add-key

# Or set an environment variable (useful for CI — no add-key needed):
export FRUMLE_API_KEY=frumle_…
vendor/bin/frumle

# 2. Analyze your project
vendor/bin/frumle

# 3. View results at https://frumle.com
```

`FRUMLE_API_KEY` overrides the key stored in `~/.frumle/config.json`.

Commands
--------

[](#commands)

### `vendor/bin/frumle [directory]`

[](#vendorbinfrumle-directory)

Analyze a codebase. Defaults to the current directory.

```
vendor/bin/frumle                              # Analyze current directory
vendor/bin/frumle ./src                        # Analyze specific directory
vendor/bin/frumle --project-name my-api        # Custom project name
vendor/bin/frumle --ignore tests,storage       # Ignore specific directories
```

**CI / unattended (env key, no local config write, JSON output):**

```
export FRUMLE_API_KEY=frumle_…
vendor/bin/frumle . --project-name "my-api" --skip-config-write --json
```

When `CI=true` (GitHub Actions sets this), Frumle skips writing `frumle.config.json` automatically.

### `vendor/bin/frumle add-key `

[](#vendorbinfrumle-add-key-api-key)

Add or update your API key. Verifies the key with the server before saving.

```
vendor/bin/frumle add-key frumle_abc123...
```

### `vendor/bin/frumle login `

[](#vendorbinfrumle-login-api-key)

Alias for `add-key`.

### `vendor/bin/frumle status`

[](#vendorbinfrumle-status)

Check your API key status, quota, and usage statistics.

```
vendor/bin/frumle status
```

### `vendor/bin/frumle ci [--force] [directory]`

[](#vendorbinfrumle-ci---force-directory)

Add `.github/workflows/frumle.yml` so docs regenerate on every push to `main`/`master`.

```
vendor/bin/frumle ci              # Create the workflow
vendor/bin/frumle ci --force      # Overwrite an existing frumle.yml
```

**Auto-docs on every push (GitHub Action):**

1. Run `vendor/bin/frumle` once — when asked, choose **Y** to add `.github/workflows/frumle.yml`
    (or run `vendor/bin/frumle ci` anytime)
2. Set the secret:

```
gh secret set FRUMLE_API_KEY
```

3. Commit and push the workflow file

After that, every push to `main`/`master` queues a fresh analysis. Docs show up in your [dashboard](https://frumle.com/dashboard).
A green Actions run means the scan was **queued** — not that docs finished instantly.

If you choose **n** at the prompt, you’ll need to run `frumle` yourself whenever docs should update.

Options
-------

[](#options)

FlagDescription`--project-name `Project name (defaults to `composer.json` name or directory)`--ignore `Comma-separated directories to ignore`--skip-config-write`Do not write/update `frumle.config.json` (also default when `CI=true`)`--json`Print a single JSON result (implies quiet)`--quiet`Suppress human-readable progress logsExit codes
----------

[](#exit-codes)

CodeMeaning`0`Analysis queued or completed`1`Client / unexpected error (bad path, no files, etc.)`2`Auth failure (missing or invalid API key)`3`Quota or payment requiredSupported Frameworks
--------------------

[](#supported-frameworks)

FrameworkVersionAuto-DetectionLaravel5.x+`artisan`, `routes/api.php`Symfony4.x+`config/packages/`, routing annotationsCodeIgniter4.x+`app/Config/App.php`CakePHP4.x+`src/Application.php`Yii2.x+`config/web.php`Laminas (Zend)3.x+`config/autoload/`Slim4.x+`Slim\App` in `public/index.php`Phalcon4.x+`.htrouter.php`What Gets Analyzed
------------------

[](#what-gets-analyzed)

The scanner collects these file types from your project:

- `.php` — PHP source files (including `.blade.php` templates)
- `.json` — Configuration files (composer.json, etc.)
- `.yaml` / `.yml` — Symfony routes, config, Docker, etc.
- `.xml` — Configuration files
- `.env` — Environment configuration
- `.twig` — Twig templates
- `.neon` — Nette configuration
- `.ini` — PHP configuration
- `.md` — Documentation

### Default Ignored Directories

[](#default-ignored-directories)

`vendor`, `node_modules`, `.git`, `storage`, `cache`, `var`, `tmp`, `temp`, `logs`, `dist`, `build`, `runtime`, `assets`

Configuration
-------------

[](#configuration)

### API Key

[](#api-key)

Auth: `FRUMLE_API_KEY` env (preferred), else `~/.frumle/config.json` from `add-key`. Shared across all Frumle tools (npm, Python, Maven, PHP).

### Project Configuration

[](#project-configuration)

A `frumle.config.json` file is created in your project root with detected base URLs:

```
{
  "baseUrls": [
    {
      "environment": "local",
      "url": "http://localhost:8000"
    },
    {
      "environment": "production",
      "url": ""
    }
  ]
}
```

The local URL is auto-detected from:

- `.env` file (`APP_URL`, `APP_PORT`, `PORT`)
- Framework-specific config files
- Common framework defaults

Edit the `production` URL to enable production API testing in the dashboard.

Framework Examples
------------------

[](#framework-examples)

### Laravel

[](#laravel)

```
cd /path/to/laravel-project
vendor/bin/frumle
```

Frumle detects Laravel via `artisan` and scans routes, controllers, models, middleware, and more.

### Symfony

[](#symfony)

```
cd /path/to/symfony-project
vendor/bin/frumle
```

Detects Symfony via `config/packages/` and scans controllers with routing attributes/annotations.

### CodeIgniter 4

[](#codeigniter-4)

```
cd /path/to/codeigniter4-project
vendor/bin/frumle
```

Detects CodeIgniter via `app/Config/App.php` and scans controllers with defined routes.

### Slim Framework

[](#slim-framework)

```
cd /path/to/slim-project
vendor/bin/frumle
```

Detects Slim via `public/index.php` and scans route definitions and middleware.

Requirements
------------

[](#requirements)

- PHP 8.0+
- `ext-curl`
- `ext-json`

Environment Variables
---------------------

[](#environment-variables)

VariableDescriptionDefault`FRUMLE_API_KEY`API key (overrides `~/.frumle/config.json`)—`FRUMLE_API_URL`Backend API URL override (testing / self-host)production default (built into CLI)`CI`When `true`/`1`, skip writing `frumle.config.json`—License
-------

[](#license)

MIT

###  Health Score

33

—

LowBetter than 72% of packages

Maintenance84

Actively maintained with recent releases

Popularity4

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity32

Early-stage or recently created project

 Bus Factor1

Top contributor holds 66.7% 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 ~2 days

Total

3

Last Release

168d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/54809606?v=4)[crentsil](/maintainers/crentsil)[@Crentsil](https://github.com/Crentsil)

---

Top Contributors

[![curtiscrentsil](https://avatars.githubusercontent.com/u/56942550?v=4)](https://github.com/curtiscrentsil "curtiscrentsil (6 commits)")[![currtisseeer](https://avatars.githubusercontent.com/u/199057520?v=4)](https://github.com/currtisseeer "currtisseeer (2 commits)")[![rekezy](https://avatars.githubusercontent.com/u/112666039?v=4)](https://github.com/rekezy "rekezy (1 commits)")

---

Tags

apisymfonylaravellaminasdocumentationaislimcakephpcodeigniteryiiphalconanalyzer

### Embed Badge

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

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

###  Alternatives

[darkaonline/l5-swagger

OpenApi or Swagger integration to Laravel

2.9k38.9M150](/packages/darkaonline-l5-swagger)[openapi/openapi-sdk

Minimal and agnostic PHP SDK for Openapi® (https://openapi.com)

164.6k1](/packages/openapi-openapi-sdk)[knuckleswtf/scribe

Generate API documentation for humans from your Laravel codebase.✍

2.3k15.0M69](/packages/knuckleswtf-scribe)[mpociot/laravel-apidoc-generator

Generate beautiful API documentation from your Laravel application

3.5k3.2M12](/packages/mpociot-laravel-apidoc-generator)[phpmv/php-mv-ui

A JQuery and UI library for php and php MVC frameworks

3320.6k3](/packages/phpmv-php-mv-ui)

PHPackages © 2026

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