Monday started with a clean slate and a stack of work that refused to stay separate. I spent the day juggling three repos, but the real story is how they bled into each other. The headline is Keycloak SSO for UC-Cloud, but the engine room is the ops-center refactor that made it possible.
The bolt-diy-fork repo took the brunt of the heavy lifting. I needed Keycloak SSO integration for UC-Cloud, which meant adding
Meanwhile, ops-center was getting a significant upgrade. I implemented an email provider management API, which added 500 lines to the backend. But the bigger win was replacing the LiteLLM proxy with a direct OpenRouter integration for chat completions. This streamlined the routing logic and removed a layer of indirection. I also auto-imported 348 OpenRouter models with advanced filtering, which keeps the model list fresh without manual intervention. The platform settings are now stored in the database instead of editing docker-compose files, which is a small change with huge implications for reproducibility. I also fixed the invoice tier error and polished the UI for empty states and model guidance. The accessibility and API connectivity fixes for seven pages wrapped up the phase 1 and 2 cleanup.
I implemented an email provider management API, which added 500 lines to the backend.
The uc-cloud repo was just the passenger on this trip. Seven commits, all chore updates to the ops-center submodule. I pulled in the email provider API, the Cloudflare token fix, the platform settings DB storage, the UI polish batch, and the sprint 6-7 API completion. It felt like a lot of movement for no actual code changes, but it was necessary to keep the main app in sync with the backend improvements.
Also today: I fixed the LiteLLM schema columns and registered the chat completions API, which required initializing the credit system and byok manager in app.state. The dependency hell with @babel/runtime is over, and the Docker build is stable.
The day added up to a more cohesive system. SSO works, the model routing is direct, and the ops-center is finally storing its own state properly. The submodule updates are just the final nail in the coffin for the old setup.
Real product captures — click any to enlarge.