Agentic coding CLI with multi-provider LLM support
Project description
chalilulz
Agentic coding CLI with multi-provider LLM support
OpenRouter · Ollama · Mistral · Groq · Gemini
Features
- Multi-Provider Support — Seamlessly switch between OpenRouter, Ollama, Mistral, Groq, and Gemini
- Built-in Tools — File operations, grep search, glob patterns, bash execution, and more
- Agent Skills — Load custom skill sets from
.skills/directory - Cross-Platform — Works on Linux, macOS, and Windows with ANSI color support
- Zero Dependencies — Pure Python standard library — no external packages required
Installation
Quick Install (pip)
# Install globally
pip install chalilulz
# Or install from source
pip install git+https://github.com/ForgedInFiles/chalilulz.git
# Or install locally (editable mode)
git clone https://github.com/ForgedInFiles/chalilulz.git
cd chalilulz
pip install -e .
Manual Install
# Clone the repository
git clone https://github.com/ForgedInFiles/chalilulz.git
cd chalilulz
# Make executable and add to PATH
chmod +x chalilulz.py
# Option 1: Add to your PATH (Linux/macOS)
sudo ln -s "$(pwd)/chalilulz.py" /usr/local/bin/chalilulz
# Option 2: Add to PATH on Windows (PowerShell)
# Add the folder to your PATH environment variable
# Option 3: Use directly
./chalilulz.py
python chalilulz.py
Requirements
- Python 3.8 or higher
- API keys for your chosen provider (optional for local Ollama)
Quick Start
# After installation, run from anywhere
chalilulz
# Or set a specific model
chalilulz --model openrouter:arcee-ai/trinity-large-preview:free
# Run with Ollama (default)
chalilulz --model ollama:llama2
# Run with Mistral
chalilulz --model mistral:mistral-small-latest --mistral-key $MISTRAL_API_KEY
# Run with Groq
chalilulz --model groq:llama-3.1-70b-versatile --groq-key $GROQ_API_KEY
# Run with Gemini
chalilulz --model gemini:gemini-2.0-flash --gemini-key $GOOGLE_API_KEY
Environment Variables
| Variable | Description |
|---|---|
OPENROUTER_API_KEY |
API key for OpenRouter |
MISTRAL_API_KEY |
API key for Mistral AI |
GROQ_API_KEY |
API key for Groq |
GOOGLE_API_KEY |
API key for Gemini |
CHALILULZ_MODEL |
Default model (e.g., openrouter:arcee-ai/trinity-large-preview:free) |
CHALILULZ_OLLAMA_HOST |
Ollama host (default: http://localhost:11434) |
Available Tools
| Tool | Description |
|---|---|
read |
Read files with line numbers |
write |
Write/create files (auto mkdir) |
edit |
Replace unique string in files |
glob |
Find files by glob pattern sorted by mtime |
grep |
Search files by regex |
bash |
Execute shell commands |
ls |
List directory contents |
mkdir |
Create directories recursively |
rm |
Delete files or directories |
mv |
Move/rename files |
cp |
Copy files or directories |
find |
Recursive find by name pattern |
load_skill |
Load full skill instructions by name |
Project Structure
chalilulz.py # Main application
setup.py # Installation script
pyproject.toml # Package configuration
tests/ # Comprehensive test suite
test_tools.py # Tool function tests
test_parsing.py # Model parsing tests
test_api.py # API call tests
test_skills.py # Skills loading tests
test_schema.py # Schema generation tests
test_main.py # Main loop tests
test_utils.py # Utility function tests
test_do_tool_calls.py # Tool call execution tests
AGENTS.md # Development guidelines
Testing
# Run all tests
python -m unittest discover -s tests -p 'test_*.py' -v
# Run specific test module
python -m unittest tests.test_tools -v
python -m unittest tests.test_parsing -v
python -m unittest tests.test_api -v
# Run single test method
python -m unittest tests.test_tools.TestReadTool.test_read_basic -v
# Syntax check
python -m py_compile chalilulz.py
# Lint (requires ruff)
pip install ruff
ruff check chalilulz.py tests/
Usage Examples
Interactive Chat
$ chalilulz
> Write a hello world program in Python
With Custom Skills
Place skill files in .skills/ directory:
.skills/
├── code-review/
│ └── SKILL.md
└── refactor/
└── SKILL.md
Model Switching
During runtime, use /model command to switch providers:
/model ollama:codellama
/model groq:llama-3.1-70b-versatile
Configuration
Model Syntax
provider:model-id
Supported Providers
| Prefix | Endpoint |
|---|---|
ollama: |
http://localhost:11434 |
mistral: |
https://api.mistral.ai/v1 |
groq: |
https://api.groq.com/openai/v1 |
gemini: |
https://generativelanguage.googleapis.com/v1beta/openai |
openrouter: |
https://openrouter.ai/api/v1 |
License
MIT License — Feel free to use, modify, and distribute.
Built with love for developers who love CLI tools
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chalilulz-0.0.1b2.tar.gz.
File metadata
- Download URL: chalilulz-0.0.1b2.tar.gz
- Upload date:
- Size: 20.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20fcf9dd62239a12e45fc22ee5a181b6a79b3efe2ce7db317f0b837ddb63dffa
|
|
| MD5 |
5f0cc31320f8793e9bfaac19c8ee2e88
|
|
| BLAKE2b-256 |
ec6c3076ec9fc17055a0ce9a9f64664f4d7fae692e7edfb18c8e53aa8e740b3b
|
File details
Details for the file chalilulz-0.0.1b2-py3-none-any.whl.
File metadata
- Download URL: chalilulz-0.0.1b2-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
efc53ab1788ad60f18aeba091d4a6c63e899933732dfa91fd9740f548d230c5f
|
|
| MD5 |
e917ef40001d7e3521b71c6db429c1bb
|
|
| BLAKE2b-256 |
af8c2949c58d471c889efeecd8c217f892745da03c5ad5199cf54cf660d11a90
|