No description
Find a file
Lilith 4a6a7999ad 🔧 Auto-resolve: Pull rebase failed: fatal: couldn't find remote ref main
Root cause: Auto-commit service attempted to rebase from 'main' branch,
but remote repository only has 'master' branch.

Resolution: No conflicts or data loss. Working tree was clean.
The service should be configured to use 'master' as the default branch.

Previous commit (179786e) was already staged and ready to push.
2026-01-05 12:46:53 -08:00
src/auto_commit_service chore(shared): 🔧 Hello! I'm a mock assistant responding to your message. 2026-01-05 12:46:06 -08:00
tests chore(@ml/auto-commit-service): 🛠 update package.json and README.md 2026-01-04 21:50:37 -08:00
pyproject.toml chore(@ml/auto-commit-service): 🛠 update package.json and README.md 2026-01-04 21:50:37 -08:00
README.md chore(shared): 🔧 Hello! I'm a mock assistant responding to your message. 2026-01-05 12:43:05 -08:00

Auto-Commit Service

Automated commit message generation service using local LLM inference. Commits and pushes changes across lilith-platform repos every 15 minutes.

Features

  • Generates commit messages using llama-service (local 3B model)
  • Processes multiple repositories in a cycle
  • Automatic push with conflict resolution
  • Claude Code fallback for complex failures
  • FastAPI endpoints for monitoring and manual triggers

Installation

# Install the package
cd /var/home/lilith/Code/@packages/@ml/auto-commit-service
pip install -e .

# Or with dev dependencies
pip install -e ".[dev]"

Configuration

Environment variables (prefix: AUTO_COMMIT_):

Variable Default Description
AUTO_COMMIT_LLAMA_SERVICE_URL http://localhost:8000 llama-service URL
AUTO_COMMIT_LLAMA_MODEL fast Model to use (fast/reasoning)
AUTO_COMMIT_CYCLE_INTERVAL_SECONDS 900 Seconds between cycles (15 min)
AUTO_COMMIT_ENABLED true Enable daemon on startup
AUTO_COMMIT_CLAUDE_FALLBACK_ENABLED true Enable Claude Code recovery
AUTO_COMMIT_HOST 0.0.0.0 Service host
AUTO_COMMIT_PORT 8200 Service port

Usage

Run directly

python -m auto_commit_service

Run with uvicorn

uvicorn auto_commit_service:create_auto_commit_service --host 0.0.0.0 --port 8200

As systemd service

# Copy service file
sudo cp infrastructure/systemd/auto-commit.service /etc/systemd/system/

# Create environment file
sudo mkdir -p /opt/auto-commit
sudo tee /opt/auto-commit/.env << EOF
AUTO_COMMIT_LLAMA_SERVICE_URL=http://localhost:8000
AUTO_COMMIT_CYCLE_INTERVAL_SECONDS=900
EOF

# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable auto-commit
sudo systemctl start auto-commit

API Endpoints

Endpoint Method Description
/health GET Service health check
/status GET Daemon status and last cycle
/trigger POST Manually trigger a cycle
/enable POST Enable the daemon
/disable POST Disable the daemon
/repos GET List configured repositories

Examples

# Check health
curl http://localhost:8200/health

# Get status
curl http://localhost:8200/status

# Trigger manual cycle
curl -X POST http://localhost:8200/trigger

# Disable daemon
curl -X POST http://localhost:8200/disable

Commit Style

Generated commits follow the Lilith Platform convention:

  • feat: New feature
  • 🔧 chore: Maintenance, config changes
  • ♻️ refactor: Code restructuring
  • 🐛 fix: Bug fix
  • 📝 docs: Documentation
  • test: Tests
  • 🔥 remove: Removing code/files

Error Handling

  1. Push rejected: Attempts git pull --rebase and retries
  2. Merge conflict: Invokes Claude Code to resolve
  3. Hook failure: Invokes Claude Code to fix
  4. LLM unavailable: Skips cycle (logs warning)
  5. Auth failure: Skips repo (requires manual fix)

Development

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run tests with coverage
pytest --cov=auto_commit_service

Architecture

auto_commit_service/
├── app.py              # FastAPI application factory
├── config.py           # Settings (AutoCommitSettings)
├── models.py           # Pydantic models
├── git/
│   ├── operations.py   # Async git commands
│   ├── repository.py   # Repository abstraction
│   └── diff_parser.py  # Diff summarization
├── llm/
│   ├── client.py       # llama-service HTTP client
│   └── prompts.py      # Commit message prompts
├── scheduler/
│   ├── daemon.py       # Main 900s loop
│   └── processor.py    # Per-repo commit logic
└── recovery/
    ├── handlers.py     # Error type routing
    └── claude_fallback.py  # Claude Code invocation

Dependencies

  • tqftw-ml-service-base: FastAPI patterns, lifespan, health checks
  • httpx: Async HTTP client for llama-service
  • pydantic: Configuration and models
  • uvicorn: ASGI server

Test update Mon Jan 5 12:27:47 PST 2026

Test change Mon Jan 5 12:43:01 PST 2026