.gitea/workflows | ||
aider_gitea | ||
test | ||
.gitignore | ||
CONVENTIONS.md | ||
LICENSE | ||
README.md | ||
requirements.txt | ||
ruff.toml | ||
setup.py |
Aider Gitea
A code automation tool that integrates Gitea with AI assistants to automatically solve issues.
This program monitors your Gitea repository for issues with the 'aider' label. When such an issue is found, it:
- Creates a new branch.
- Invokes an AI assistant (Aider or Claude Code) to solve the issue using a Large-Language Model.
- Runs tests and code quality checks.
- Creates a pull request with the solution.
The tool automatically selects the appropriate AI assistant based on the specified model:
- Aider: Used for non-Anthropic models (e.g., GPT, Ollama, Gemini)
- Claude Code: Used for Anthropic models (e.g., Claude, Sonnet, Haiku, Opus)
Inspired by the AI workflows project.
Usage
An application token must be supplied for the gitea_token
secret. This must
have the following permissions:
read:issue
: To be able to read issues on the specified repository.write:repository
: To be able to create pull requests.read:user
: Needed to iterate all user's repositories.
Command Line
# Run with default settings (uses Aider)
python -m aider_gitea --aider-model gpt-4
# Use Claude Code with Anthropic models
python -m aider_gitea --aider-model claude-3-sonnet
python -m aider_gitea --aider-model claude-3-haiku
python -m aider_gitea --aider-model anthropic/claude-3-opus
# Use Aider with various models
python -m aider_gitea --aider-model gpt-4
python -m aider_gitea --aider-model ollama/llama3
python -m aider_gitea --aider-model gemini-pro
# Specify custom repository and owner
python -m aider_gitea --owner myorg --repo myproject --aider-model claude-3-sonnet
# Use a custom Gitea URL
python -m aider_gitea --gitea-url https://gitea.example.com --aider-model gpt-4
# Specify a different base branch
python -m aider_gitea --base-branch develop --aider-model claude-3-haiku
AI Assistant Selection
The tool automatically routes to the appropriate AI assistant based on the model name:
Claude Code Integration (Anthropic Models):
- Model names containing:
claude
,anthropic
,sonnet
,haiku
,opus
- Examples:
claude-3-sonnet
,claude-3-haiku
,anthropic/claude-3-opus
- Requires:
ANTHROPIC_API_KEY
environment variable
Aider Integration (All Other Models):
- Any model not matching Anthropic patterns
- Examples:
gpt-4
,ollama/llama3
,gemini-pro
,mistral-7b
- Requires:
LLM_API_KEY
environment variable
Python API
from aider_gitea import solve_issue_in_repository, create_code_solver
from pathlib import Path
import argparse
# Solve an issue programmatically with automatic AI assistant selection
repository_config = RepositoryConfig(
gitea_url="https://gitea.example.com",
owner="myorg",
repo="myproject",
base_branch="main"
)
# Set the model to control which AI assistant is used
import aider_gitea
aider_gitea.CODE_MODEL = "claude-3-sonnet" # Will use Claude Code
# aider_gitea.CODE_MODEL = "gpt-4" # Will use Aider
code_solver = create_code_solver() # Automatically selects based on model
solve_issue_in_repository(
repository_config,
Path("/path/to/repo"),
"issue-123-fix-bug",
"Fix critical bug",
"The application crashes when processing large files",
"123",
gitea_client,
code_solver
)
Environment Configuration
The tool uses environment variables for sensitive information:
Required for all setups:
GITEA_TOKEN
: Your Gitea API token
For Aider (non-Anthropic models):
LLM_API_KEY
: API key for the language model (OpenAI, Ollama, etc.)
For Claude Code (Anthropic models):
ANTHROPIC_API_KEY
: Your Anthropic API key for Claude models
Model Examples
Anthropic Models (→ Claude Code):
--aider-model claude-3-sonnet
--aider-model claude-3-haiku
--aider-model claude-3-opus
--aider-model anthropic/claude-3-sonnet
Non-Anthropic Models (→ Aider):
--aider-model gpt-4
--aider-model gpt-3.5-turbo
--aider-model ollama/llama3
--aider-model ollama/codellama
--aider-model gemini-pro
--aider-model mistral-7b
## Dependencies
This project requires [Python](https://www.python.org/) 3.8 or newer.
All required libraries can be installed easily using:
```bash
pip install -r requirements.txt
Full list of requirements:
Contributing
Feel free to submit pull requests. Please follow the Code Conventions when doing so.
Testing
Testing requires the pytest library.
Run tests with the following command:
pytest test
Test coverage can be run using the pytest-cov
extension:
pytest --cov=aider_gitea test
License
MIT License
Copyright (c) 2025 Jon Michael Aanes
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.