Skip to main content

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

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.

Release history Release notifications | RSS feed

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