{"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":[{"wrong":"from salmalm import Salmalm","symbol":"app","correct":"from salmalm import 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,"search_vec":"'66':16 'ai':3,6,44 'anthrop':25 'assist':7,49 'built':18 'built-in':17 'current':36 'develop':40 'etc':27 'fastapi':34,50 'frequent':42 'gateway':4,48 'gemini':26 'llms':23 'model':11,47 'multi':10,46 'multi-model':9,45 'openai':24 'person':2 'provid':29 'python':5 'rapid':39 'releas':43 'rout':12 'salmalm':1 'server':31 'tool':20 'ui':14 'uvicorn':33 'v0.30.28':38 'via':32 'web':13 'websocket':35,51 'work':21","created_at":"2026-05-01T17:45:54.315840+00:00","updated_at":"2026-05-01T17:45:54.315840+00:00","problems":null,"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"salmalm","cli_version":"2026-05-16 16:02:53,396 [INFO] SalmAlm v0.30.28","type":"library","homepage":null,"github":"https://github.com/hyunjun6928-netizen/salmalm","docs":"https://github.com/hyunjun6928-netizen/salmalm#readme","changelog":null,"pypi":"https://pypi.org/project/salmalm/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["llm-agents","ai-ml","web-framework"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-30","last_verified":"2026-06-30","next_check":"2026-07-30","install_tag":null}}