An open-source AI assistant that automates the full Drupal DevOps lifecycle β from Jira issue to GitLab merge request to EC2 deployment and QA.
AI-powered agent that plans, writes, commits, opens MRs, runs Drush QA, and deploys Drupal changes.
Built with FastAPI, GitLab CI, Jira API, and local or cloud LLMs like Ollama (Qwen2.5-Coder) or OpenAI-compatible endpoints.
- Reads context: Jira ticket + repo scan + guardrails
- Generates code: unified diff or JSON file manifest (for scaffolds)
- Sanitizes safely: fixes JSON escapes, unescapes PHP
$vars, removes roguedeclare(strict_types) - Commits & pushes: clean messages, opens Merge Request automatically
- Runs QA: Drush (
cr,pm:install, etc.) on EC2 or your target host - Reports back: comments/updates to MR and Jira (optional)
Note
From ticket β deployment in minutes, consistently.
- Agent Brain (Python) β prompt builder β LLM call β patch/manifest β sanitizers β Git ops
- LLM Runtime β Ollama (local) or any OpenAI-compatible
/v1endpoint - Integrations β GitLab (MRs), Jira (optional), EC2/remote host (Drush QA & deploy)
System Architecture:
End-to-end automation from Jira β GitLab β EC2 using FastAPI and Ollama.
- OS: macOS or Linux (Apple Silicon & Intel both OK)
- Python: 3.10+
- Git: 2.30+
- Ollama (for local LLM) or an OpenAI-compatible endpoint
- GitLab repo (personal access token if creating MRs via API)
- Drupal project to operate on (monorepo or separate checked out under
work/)
# Install deps
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
ollama pull qwen2.5-coder:14b-instruct-q4_K_M
# Configure .env (see above), clone your Drupal repo to work/drupal-project
# Run
copilot-one-shot CCS-128
# or
copilot-workflow CCS-128 && copilot-ai-review-merge "<MR_URL>" --auto-merge --deployIf you get stuck or want to propose an agent skill, open an issue β or ping me.
| Feature | Status |
|---|---|
| Multi-agent orchestration | π§ In progress |
| DeepSeek/StarCoder LLMs | π§© Planned |
| Plugin system | π§ Concept |
| Web UI dashboard | π§ Beta |
| Provider auto-benchmarking | π‘ Idea |
- Strict path guardrails (
web/modules/custom/) - JSON repair for invalid escapes (
\Drupal,$vars) - PHP sanitizer removes
declare(strict_types)and roguedefine() - Retry logic for Ollama timeouts
- Fallback to manifest mode if patch fails
We welcome ideas and pull requests!
See CONTRIBUTING.md for guidelines.
Please review our CODE_OF_CONDUCT.md.
We aim for a respectful, inclusive, and helpful space for all contributors.
-
π Quickstart (local)
Clone, setup venv, install deps, configure .env, run smoke test. -
π³ Docker Quickstart (public images)
One command to pull & run API, Web, and Ollama. -
π οΈ Docker for Development
Live-reload containers, source mounts, and developer workflow. -
π₯οΈ Local LLM (Ollama) tips
Installation, model management, tuning parameters, and troubleshooting. -
π οΈ Configuration Guide
Environment variables, LLM providers, and GitLab/Jira setup. -
π§° CLI reference
Available commands, flags, and usage examples. -
π Architecture Overview
High-level components, data flow, and integrations. -
βοΈ Flow Overview
End-to-end pipeline: Auto-Dev β AI Review β Deploy β QA Verify. -
π» Working in a New Terminal Session
How to activate the environment, run backend/frontend locally, and test commands. -
π§ Having issues? See Troubleshooting Guide
Common issues, debugging tips, and FAQs. -
π‘οΈ Security Policy
Responsible disclosure process, supported versions, and scope. -
π Contributing Guide
How to contribute, commit message conventions, and project goals.
Powered by the open-source communities behind Drupal, FastAPI, and Ollama.
Join the discussion on GitHub Discussions β
weβd love to hear from contributors, Drupal engineers, and AI enthusiasts!
