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

Metadata

Release files for salmalm 0.30.28

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for salmalm 0.30.28
File Size Uploaded
salmalm-0.30.28.tar.gz 988.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for salmalm 0.30.28
File Interpreter ABI Platform
salmalm-0.30.28-py3-none-any.whl Python 3 none any Details

Total release size: 2.0 MB

Release files / salmalm-0.30.28.tar.gz

Download URL salmalm-0.30.28.tar.gz
Size 988.7 kB
Tags Source
SHA-256 checksum
How to use checksums
96bf04361113d5bebe19524ca3cdb2fc75740f9b135d5ae765cf62a93126928b
BLAKE2b-256 checksum
How to use checksums
f8a6db60ce1198e6b2b0e8e74c061fa4b7e30baa96ad160253b19b656473f7e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / salmalm-0.30.28-py3-none-any.whl

Download URL salmalm-0.30.28-py3-none-any.whl
Size 963.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2f810ef1c7a7ad1187fa7a2fca49cea390f8b22bb66f58fcbb79e798fc567af2
BLAKE2b-256 checksum
How to use checksums
fa2955f37b31b66202ac3b1fd3554231257869d89833c819015e1fe8d88e0052
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.30.28 This release

2 release files

0.30.9

1 release file

0.30.8

1 release file

0.30.7

1 release file

0.30.6

1 release file

0.30.5

1 release file

0.30.4

1 release file

0.30.3

1 release file

0.30.2

1 release file

0.30.0

1 release file

0.29.8

1 release file

0.29.3

1 release file

0.29.2

1 release file

0.29.1

1 release file

0.29.0

1 release file

0.28.9

2 release files

0.28.8

2 release files

0.28.7

2 release files

0.28.6

2 release files

0.28.5

2 release files

0.28.4

2 release files

0.28.3

2 release files

0.28.2

2 release files

0.28.1

2 release files

0.28.0

2 release files

0.27.9

2 release files

0.27.8

2 release files

0.27.7

2 release files

0.27.6

2 release files

0.27.5

2 release files

0.27.4

2 release files

0.27.3

2 release files

0.27.2

2 release files

0.27.1

2 release files

0.27.0

2 release files

0.26.9

2 release files

0.26.8

2 release files

0.26.7

2 release files

0.26.6

2 release files

0.26.5

2 release files

0.26.4

2 release files

0.26.3

2 release files

0.26.2

2 release files

0.26.1

2 release files

0.25.8

1 release file

0.25.7

1 release file

0.25.6

1 release file

0.25.5

2 release files

0.25.4

1 release file

0.25.3

1 release file

0.25.2

1 release file

0.25.1

1 release file

0.25.0

1 release file

0.24.0

1 release file

0.23.9

1 release file

0.23.8

1 release file

0.23.7

2 release files

0.23.6

2 release files

0.23.5

2 release files

0.23.4

2 release files

0.23.3

2 release files

0.23.2

2 release files

0.23.1

1 release file

0.23.0

1 release file

0.22.9

1 release file

0.22.8

1 release file

0.22.7

1 release file

0.22.6

1 release file

0.22.5

1 release file

0.22.4

1 release file

0.22.3

2 release files

0.22.2

2 release files

0.22.1

2 release files

0.22.0

2 release files

0.21.9

2 release files

0.21.8

2 release files

0.21.7

2 release files

0.21.6

2 release files

0.21.5

2 release files

0.21.4

2 release files

0.21.3

2 release files

0.21.2

2 release files

0.21.1

2 release files

0.21.0

2 release files

0.20.9

2 release files

0.20.8

2 release files

0.20.7

2 release files

0.20.6

2 release files

0.20.5

2 release files

0.20.4

2 release files

0.20.3

2 release files

0.20.2

2 release files

0.20.1

2 release files

0.20.0

2 release files

0.19.9

2 release files

0.19.8

2 release files

0.19.7

2 release files

0.19.6

2 release files

0.19.5

2 release files

0.19.4

2 release files

0.19.3

2 release files

0.19.2

2 release files

0.19.1

2 release files

0.19.0

2 release files

0.18.9

2 release files

0.18.8

2 release files

0.18.7

2 release files

0.18.6

2 release files

0.18.5

2 release files

0.18.4

2 release files

0.18.3

2 release files

0.18.2

2 release files

0.18.1

2 release files

0.18.0

2 release files

0.17.9

2 release files

0.17.8

2 release files

0.17.7

2 release files

0.17.6

2 release files

0.17.5

2 release files

0.17.4

2 release files

0.17.3

2 release files

0.17.2

2 release files

0.17.1

2 release files

0.17.0

2 release files

0.16.5

2 release files

0.16.4

2 release files

0.16.3

2 release files

0.16.2

2 release files

0.16.1

2 release files

0.16.0

2 release files

0.13.1

2 release files

0.13.0

2 release files

0.12.6

2 release files

0.12.5

2 release files

0.12.4

2 release files

0.12.3

2 release files

0.12.2

2 release files

0.12.1

2 release files

0.12.0

2 release files

0.11.9

2 release files

0.11.8

2 release files

0.11.7

2 release files

0.11.6

2 release files

0.11.5

2 release files

0.11.4

2 release files

0.11.3

2 release files

0.11.2

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.10.9

2 release files

0.10.8

2 release files

0.10.7

2 release files

0.10.6

2 release files

0.10.4

2 release files

0.10.3

2 release files

0.10.2

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.9

2 release files

0.9.8

2 release files

0.9.7

2 release files

0.9.6

2 release files

0.9.5

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.9

2 release files

0.8.8

2 release files

0.8.7

2 release files

0.8.6

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page