Skip to main content

Personal AI Gateway — Python AI assistant with multi-model routing, web UI, and 66 built-in tools. Core: uvicorn + fastapi + websockets.

Project description

SalmAlm — Private AI Gateway

Self-hosted, privacy-first AI gateway. Your data never leaves your machine.

PyPI Python License: MIT

Quick Start

pip install salmalm
salmalm start
# Open http://localhost:8000

Features

  • 🔒 100% Local — no data sent to third parties
  • 🤖 Multi-LLM — Claude, GPT, Gemini in one interface
  • 📚 RAG — chat with your own documents
  • 🛠️ 62 built-in tools — web search, file ops, code execution
  • 🔐 Vault encryption for sensitive data
  • 🐳 Docker ready

Docker

docker-compose up -d

Requirements

  • Python 3.10+
  • API key for at least one LLM provider

😈 SalmAlm

PyPI Python License: MIT CI Tests

Self-hosted personal AI gateway — one pip install, no Docker, no Node.js.

Documentation · Korean README · Changelog


Features

  • Multi-provider LLM routing — OpenAI, Anthropic, Google, xAI, Ollama with 3-tier auto-routing (simple / moderate / complex)
  • Automatic failover + circuit breaker — transparent retry across providers; unhealthy endpoints are isolated
  • RAG — BM25 + semantic search with Reciprocal Rank Fusion (RRF); indexes your local files automatically
  • Vault encryption — AES-256-GCM with PBKDF2-200K key derivation; opt-in per secret
  • OAuth2 — Google and Anthropic social login flows
  • WebSocket streaming — real-time token streaming to the web UI
  • Multi-user auth — JWT-based session management with per-user quotas
  • Cost tracking + daily quotas — per-model token accounting with configurable daily spend caps
  • Prometheus metrics/metrics endpoint; drop-in for any Grafana stack
  • SQLite audit log — WAL mode; every request, tool call, and auth event is logged
  • 62 built-in tools — shell exec, file I/O, web search (Brave), browser automation, TTS/STT, image gen, cron, and more

Quick Start

pip install salmalm
salmalm start
# → http://localhost:18800

A Setup Wizard opens on first launch. Paste an API key, pick a model — done.

Recommended: use pipx install salmalm to avoid dependency conflicts.


Configuration

All configuration is via environment variables. No config files required.

Variable Default Description
SALMALM_PORT 18800 HTTP listen port
SALMALM_BIND 127.0.0.1 Bind address (0.0.0.0 for LAN access)
SALMALM_SECRET (none) Master secret for Vault + JWT signing (set this!)
SALMALM_ALLOW_SHELL 0 Enable shell operators in tool exec (1 to opt in)
SALMALM_PYTHON_EVAL 0 Enable Python eval tool (1 to opt in)
SALMALM_DAILY_BUDGET (none) Daily spend cap in USD, e.g. 2.00

API Reference

Method Path Description
POST /api/chat Send a message; returns SSE stream
GET /api/sessions List chat sessions
DELETE /api/sessions/{id} Delete a session
GET /api/tools List available tools and their schemas
GET /api/models List discovered models across all providers
GET /api/costs Cost summary (today / 30-day)
GET /metrics Prometheus metrics endpoint
GET /api/vault List vault entries (values redacted)
POST /api/vault Store an encrypted secret
GET /api/audit Recent audit log entries

Architecture

Client (Browser / Telegram / Discord)
        │
        ▼  HTTP + WebSocket
┌───────────────────────────────────────────┐
│                 SalmAlm                   │
│                                           │
│  ┌─────────────┐   ┌───────────────────┐  │
│  │ 3-Tier      │   │  Engine Pipeline  │  │
│  │ LLM Router  │──▶│  classify → route │  │
│  │ + Failover  │   │  → context → exec │  │
│  └─────────────┘   └───────────────────┘  │
│         │                                 │
│  ┌──────▼──────────────────────────────┐  │
│  │  Providers                          │  │
│  │  OpenAI · Anthropic · Google · xAI  │  │
│  │  Ollama · LM Studio · vLLM          │  │
│  └─────────────────────────────────────┘  │
│                                           │
│  RAG (BM25 + Semantic + RRF)              │
│  Vault (AES-256-GCM)                      │
│  JWT Auth · OAuth2                        │
│  62 Tools · Cron · Sub-Agents             │
│  SQLite Audit (WAL) · Prometheus /metrics │
└───────────────────────────────────────────┘

Development

git clone https://github.com/hyunjun6928-netizen/salmalm.git
cd salmalm
pip install -e ".[dev]"
pytest tests/ -q --timeout=30 -x \
  --ignore=tests/test_multi_tenant.py \
  --ignore=tests/test_fresh_install_e2e.py

See CONTRIBUTING.md for guidelines.


License

MIT © 2024 hyunjun6928-netizen


SalmAlm = 삶 (Life) + 앎 (Knowledge)

Your life, understood by AI.


SalmAlm — Private AI Gateway

Self-hosted, privacy-first AI gateway. Your data never leaves your machine.

Quick Start

pip install salmalm
salmalm start
# Open http://localhost:8000

Features

  • 🔒 100% local — no data sent to third parties
  • 🤖 Multi-LLM — Claude, GPT, Gemini in one place
  • 📚 RAG — chat with your documents
  • 🛠️ 62 built-in tools
  • 🔐 Vault encryption for sensitive data

Docker

docker-compose up -d

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

salmalm-0.30.28.tar.gz (988.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

salmalm-0.30.28-py3-none-any.whl (963.4 kB view details)

Uploaded Python 3

File details

Details for the file salmalm-0.30.28.tar.gz.

File metadata

  • Download URL: salmalm-0.30.28.tar.gz
  • Upload date:
  • Size: 988.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for salmalm-0.30.28.tar.gz
Algorithm Hash digest
SHA256 96bf04361113d5bebe19524ca3cdb2fc75740f9b135d5ae765cf62a93126928b
MD5 ef33d5089344a93e4c01a3adc8f79c16
BLAKE2b-256 f8a6db60ce1198e6b2b0e8e74c061fa4b7e30baa96ad160253b19b656473f7e0

See more details on using hashes here.

File details

Details for the file salmalm-0.30.28-py3-none-any.whl.

File metadata

  • Download URL: salmalm-0.30.28-py3-none-any.whl
  • Upload date:
  • Size: 963.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for salmalm-0.30.28-py3-none-any.whl
Algorithm Hash digest
SHA256 2f810ef1c7a7ad1187fa7a2fca49cea390f8b22bb66f58fcbb79e798fc567af2
MD5 bb632edbeb3005e22fe25677b92efea9
BLAKE2b-256 fa2955f37b31b66202ac3b1fd3554231257869d89833c819015e1fe8d88e0052

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page