Acolyte is a content analysis and evaluation system focused on detecting bias, misleading content, and hidden intent in text. The system supports content submission through Web interface, CLI, and API, which is then analyzed by single or multiple LLMs.
Acolyte is a content analysis and evaluation system that detects bias, misleading content, and hidden intent in text. Submit content via Web UI, CLI, or API — analyzed by single or multiple LLMs.
uv sync --extra dev # install all dependencies
uv run acolyte # start API server (http://localhost:8000)
cd acolyte/web
bun install # install dependencies
bun run dev # start dev server (http://localhost:5173)
uv run acolyte analyze content.txt --mode=single
uv run acolyte history list --limit=5
uv run acolyte config add-llm -n "My LLM" -k "sk-..." -u "https://api.openai.com/v1" -m "gpt-4o"
acolyte/
├── acolyte/ # backend Python package
│ ├── core/ # LLM, DB, task processing
│ ├── api/ # FastAPI routes
│ ├── cli/ # CLI (Click)
│ └── web/ # React + Vite frontend
├── tests/ # Python tests (424 passed)
├── prompt/ # bias detection prompt templates
├── tools/ # utility scripts
├── pyproject.toml # project config + dependencies
├── uv.lock # pinned dependency versions
└── Makefile # convenience commands
Config file at ~/.config/acolyte/config.json (override with ACOLYTE_CONFIG_PATH):
{
"database_url": "sqlite:///acolyte.db",
"default_prompt_version": "",
"llm_configs": [
{
"name": "Claude-Sonnet",
"api_key": "your-api-key",
"base_url": "https://api.anthropic.com/v1",
"model_name": "claude-sonnet-4-20250514",
"role": "normal",
"is_default": true
}
]
}
# Backend
uv sync --extra dev # install with dev deps
uv run pytest # run tests (424 passed)
uv run ruff check . # lint
uv run black . # format
# Frontend
cd acolyte/web
bun run dev # dev server
bun run build # production build
bun run test # run tests (26 passed)
bun run lint # ESLint
# Convenience (from repo root)
make test # backend tests
make web-test # frontend tests
make lint # backend lint
make clean # remove build artifacts
Bias detection prompts in prompt/ follow the naming convention bias-detection-prompt_vX.Y[_modelname].md. After adding prompts, sync to database:
uv run acolyte config sync-prompts
MIT