Answers from the documentation; checking which model is on duty
Hi - I answer from the OpenSmartRoute documentation: routing, the API, plans and quotas, self-hosting. Ask away, or open a support ticket if you need a person.
Grounded in the docs - follow a source before acting on it.
Imported from Menziess/bot-widget (AGENTS.md). Install upstream with npx skills add Menziess/bot-widget. Copyright stays with the author.
bot-widget
Work on main; no branches or PRs. Ask before committing or pushing.
botwidget/ is toolkit-free logic; botwidget/qt_ui/ is the PySide6 UI.
Test: .venv/bin/python -m unittest discover -s tests -t . (unittest, not pytest; logic plus a few offscreen Qt tests).
Run live: botwidget --dev (restarts on .py changes). Check UI changes by eye.
site/ is the static website (no build, deployed by Pages on push to main). site/face.js ports avatar.py and animation.py to canvas; keep them in step.
Use it
Copy one of these into your project. Installing also returns the manifest and these snippets.
# after Install: the listing is in your workspace's routing pool - a plan picks it for its slotcurl-s-X POST https://api.opensmartroute.ai/api/v1/route -H 'Authorization: Bearer $OSR_API_KEY' -H 'Content-Type: application/json' -d '{"text": "...", "plan": true}'
Installed into a catalogue, chosen by a router
Install bot-widget and it becomes one more candidate the router can pick - when it fits.
A listing is a routing target with a manifest: what it does, which domains it covers, what it costs and who publishes it. Once installed it sits beside your own models and tools, is scored like any other candidate for each request, and shows up in the trace when it wins. Ratings come from workspaces that installed it, one per account.