{"id":27368,"library":"salmalm","title":"Salmalm","description":"Personal AI Gateway — Python AI assistant with multi-model routing, web UI, and 66 built-in tools. Works with LLMs (OpenAI, Anthropic, Gemini, etc.) and provides a server via uvicorn+fastapi+websockets. Currently at v0.30.28, rapid development with frequent releases.","status":"active","version":"0.30.28","language":"python","source_language":"en","source_url":"https://github.com/hyunjun6928-netizen/salmalm","tags":["ai","multi-model","gateway","assistant","fastapi","websockets"],"install":[{"cmd":"pip install salmalm","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Web server framework","package":"fastapi","optional":false},{"reason":"ASGI server","package":"uvicorn","optional":false},{"reason":"WebSocket support for streaming","package":"websockets","optional":false}],"imports":[{"note":"Salmalm is a class exported at package level, not a module attribute","wrong":"import salmalm.Salmalm","symbol":"Salmalm","correct":"from salmalm import Salmalm"},{"note":"create_app is now a top-level export since v0.30.0","wrong":"from salmalm.utils import create_app","symbol":"create_app","correct":"from salmalm import create_app"}],"quickstart":{"code":"import os\nos.environ['OPENAI_API_KEY'] = os.environ.get('OPENAI_API_KEY', 'your-key-here')\nfrom salmalm import Salmalm\nclient = Salmalm()\nresponse = client.chat(\"Hello!\")\nprint(response)","lang":"python","description":"Basic usage: set an API key (e.g., OPENAI_API_KEY) and create a client to chat."},"warnings":[{"fix":"Convert your config.json to config.yaml using the provided migration script or manually.","message":"Configuration file format changed in v0.30.0: from JSON to YAML. Old config files will not be read.","severity":"breaking","affected_versions":">=0.30.0"},{"fix":"Replace `from salmalm.server import app` with `from salmalm import create_app` and call `create_app()`.","message":"The `salmalm.server` module is deprecated since v0.29.0; use `salmalm.create_app` instead.","severity":"deprecated","affected_versions":">=0.29.0, <0.30.0"},{"fix":"Set environment variables for each provider you intend to use: OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, etc.","message":"Multiple models require separate API keys set as environment variables; missing keys cause silent fallback or errors.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Upgrade to latest version: pip install --upgrade salmalm","cause":"Outdated installation or wrong import path; Salmalm class was added in v0.28.0.","error":"ImportError: cannot import name 'Salmalm' from 'salmalm'"},{"fix":"Set environment variable: export OPENAI_API_KEY='your-key'","cause":"OPENAI_API_KEY environment variable not set or empty.","error":"RuntimeError: No API key found for provider 'openai'"},{"fix":"Create a salmalm.yaml file or set config path via environment variable SALMALM_CONFIG.","cause":"The default config file is now YAML; missing file or wrong format.","error":"salmalm.exceptions.ConfigError: Config file 'salmalm.yaml' not found"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}