- PHP 94%
- Blade 5.8%
- JavaScript 0.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
PHP warns that a use statement with a non-compound name has no effect; in a parallel run Pest turns the warning into an error and stops the suite. |
||
| .forgejo/workflows | ||
| .github/workflows | ||
| app | ||
| bootstrap | ||
| config | ||
| database | ||
| docs | ||
| lang | ||
| public | ||
| resources | ||
| routes | ||
| scripts/ci | ||
| storage | ||
| tasks | ||
| tests | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .npmrc | ||
| artisan | ||
| composer.json | ||
| composer.lock | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| phpstan.neon | ||
| phpunit.xml | ||
| pint.json | ||
| README.md | ||
| vite.config.js | ||
Alfred
An autonomous issue agent for GitLab, GitHub and Forgejo.
Assign Alfred to an issue and it takes it from there: it analyzes the request, asks questions when something is unclear, proposes a plan, implements the change, opens a merge request, fixes failing pipelines and applies review feedback. Everything happens inside the forge, through labels, comments and merge requests. Unassign it and it stops immediately.
Status: early development.
How it works
flowchart LR
A["Issue assigned<br/>to the bot"] --> B["Analysis<br/>and questions"]
B --> P["Plan validation"]
P --> D["Development<br/>branch + MR"]
D --> C["CI"]
C -- failed --> D
C -- green --> R["Human review"]
R -- feedback --> D
R -- merged by a human --> E["Done"]
Alfred works through a real user account on each forge, and only on the issues that account is assigned to. A status label shows where each issue stands. Questions arrive as checkboxes with the recommended answer already ticked, so silence is an answer. You validate the plan with a label, review the merge request like any other, and merge it yourself.
Principles
- It acts only when asked. Assignment starts the work; unassignment is an immediate stop.
- It is a user like any other. No special permissions: what a developer cannot do, Alfred cannot do either.
- The model never touches the forge. It proposes actions; Alfred validates them and is the only one to comment, commit and push.
- Every run is sandboxed. The agent works in a disposable container that sees only the working copy.
- Humans keep the last word. Alfred never merges, never approves, never signs a commit.
Under the hood
Alfred is a single Laravel application with a server-rendered administration
interface (Blade and Tailwind CSS) for configuration, supervision and audit.
The agent runs either through model provider APIs with laravel/ai, or
through a local coding agent — Claude Code, OpenAI Codex, OpenCode, GitHub
Copilot CLI or xAI Grok Build — chosen per organization, project and phase.
Organizations are fully isolated, and every prompt, output and forge write is
recorded.
Documentation
The full specification — architecture, workflow, configuration, security —
lives in docs/specification.md