A personal automation hub and task scheduler. Orchestrates daily workflows, integrates with AI models, compiles email templates, and exposes both an HTTP API and a Terminal User Interface (TUI) for management.
To install the client and set up the global solomon command in your terminal:
curl -sSL https://raw.githubusercontent.com/stanleygomes/solomon/refs/heads/master/scripts/bootstrap_cli.sh | bashTo deploy the backend, seeds the database, and runs the API and Cron daemon in background:
curl -sSL https://raw.githubusercontent.com/stanleygomes/solomon/refs/heads/master/scripts/bootstrap.sh | bashSolomon is split into four independent entrypoints:
| Module | Description |
|---|---|
api/ |
FastAPI HTTP server β chat, auth, and status routes |
cli/ |
Typer-based CLI & Textual Terminal User Interface (TUI) |
cron/ |
Background daemon running scheduled jobs |
core/ |
Shared domain logic β services, database, workflows |
All shortcuts are in the Makefile.
make installBy default, the CLI launches the Textual TUI dashboard, but it also supports client-side subcommands (powered by typer):
make cli # Launches the TUI Dashboard (default)
# Or run subcommands via uv:
uv run src/cli/main.py --help # Show help and CLI usage
uv run src/cli/main.py status # Check status of the remote API
uv run src/cli/main.py update # Update the Solomon CLI to the latest version
uv run src/cli/main.py config # Configure local settings (API host URL, etc.)If you installed the CLI via the quick start script, you can use the global solomon command:
solomon --help
solomon status
solomon update
solomon configmake seed # Populate with initial seedsmake lint # Check with ruff
make format # Fix & format with ruffmake clean # Remove cache, venv, temp filesCopy .env.example to .env and fill in your values:
cp .env.example .envGenerates and sends a daily Bible study via email.
- Runs an AI prompt template (
daily-bread.md) - Renders output into a styled HTML email (Jinja2 + themes)
- Delivers via SMTP
Important
Once-per-day lock: Repeat executions on the same calendar day are skipped automatically via database log checks.
Triggered by the cron daemon or manually:
make cronAutomated daily study routines for any topic.
Planning β generates a structured syllabus for an ACTIVE course using an AI prompt, parses the response as JSON, and persists lessons in the database.
Execution β retrieves the lesson for today, generates full content via AI, compiles a themed HTML email, sends it, and marks the lesson as completed.
The FastAPI server exposes an OpenAI-compatible chat interface and authentication endpoints.
- Docs:
http://127.0.0.1:7000/docs - Auth: Magic Code + JWT (RS256) β passwordless, cookie-based sessions
- Rate Limiting: Configurable via
RATE_LIMIT_REQUESTSandRATE_LIMIT_WINDOW_SECONDS
| Layer | Technology |
|---|---|
| Runtime | Python 3.14+ via uv |
| API | FastAPI + Uvicorn |
| TUI | Textual |
| Persistence | SQLite + Peewee ORM |
| AI Orchestration | Custom multi-provider client (Copilot, Antigravity, etc.) |
| Templates | Jinja2 |
| Mail Delivery | SMTP with TLS/STARTTLS |
| Logging | Loguru |
| Auth | PyJWT (RS256) + Magic Code verification |
| Code Quality | Ruff |
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
