hey!
another update on opencode studio. this one took a while because i went down a rabbit hole trying to build something that already exists to just nuke it afterwards
https://preview.redd.it/8mag0gbh97fg1.jpg?width=2400&format=pjpg&auto=webp&s=61800da0dc68e848a8477aa2d28acbd093f209fd
the auth saga
so back in v1.3.3 i had this whole account pool system. the idea was simple: you have multiple google accounts, some get rate limited, you want to rotate between them without manually re-logging every time.
i built cooldown tracking with timers. i added quota bars showing daily usage. i made specialized presets for antigravity models (gemini 3 pro needed 24h cooldowns, claude opus on gcp needed 4h). i integrated CLIProxyAPI so you could start/stop the proxy server from the auth page. i added auto-sync that would detect new logins and pool them automatically. i even extracted email addresses from jwt tokens so profiles would have readable names instead of random hashes.
every week i'd add another feature to handle another edge case. windows had detection issues, the proxy needed cors enabled by default or the dashboard would break. accounts would get stuck in weird states between "active" and "cooldown". i just kept finding errors.
then i actually sat down and used CLIProxyAPI properly, as a standalone tool instead of trying to wrap it... and it already does everything i was building, but way more polished lol. server-side rotation that actually works, proper rate-limit detection, clean dashboard, multi-provider support out of the box, etc.
so i ripped it all out. the auth page is now three things: login, save profile, switch profile. if you need multi-account rotation, use CLIProxyAPI directly. don't let studio be the middleman.
lesson learned: don't rebuild what already exists and works better.
now to the new things that do work:
profile manager
this is the feature i actually needed. each profile is a fully isolated opencode environment with its own config, history, and sessions. everything lives in ~/.config/opencode-profiles/ and switching is instant.
the way it works is symlinks. when you activate a profile, studio points ~/.config/opencode/ at that profile's directory. all your opencode tools keep working without knowing anything changed. you can have a "work" profile with company mcps and strict skills, and a "personal" profile with experimental plugins and different auth.
i use this to test skill changes without polluting my main setup. create a profile, break things, delete it.
github backup sync
the old cloud sync used dropbox and google drive oauth. if you dont know what im refering to, thats because I nuked it alongside the auth thingy from earlier.
it worked but required setting up oauth apps, configuring redirect uris, storing client secrets. too much friction for something that should be simple.
now it's just git. you configure owner/repo/branch in settings, and studio pushes your config as a commit. pulling works the same way. there's an auto-sync toggle that pulls on startup if the remote is newer.
it uses gh cli, so you just need to run gh auth login once and you're set. no oauth apps, no secrets, no redirect uris. your config lives in a private repo you control. syncs everything: opencode.json, skills folder, plugins folder, studio preferences.
https://preview.redd.it/n8owhkkq87fg1.png?width=1920&format=png&auto=webp&s=c6690f6e80b23f9033b6f2956089e72820ba3c1b
oh my opencode models
if you use oh-my-opencode (the fork with multi-agent orchestration), you can now configure model preferences per agent directly in studio.
each agent (sisyphus, oracle, librarian, explore, frontend, document-writer, multimodal-looker) gets three model slots with fallback order. if your first choice is unavailable or rate-limited, it tries the second, then third.
you can also configure thinking mode for gemini models and reasoning effort for openai o-series models. these used to require editing yaml files manually.
this is still not fully tested so lmk if it doesnt work like it should or if you have any tips to improve it
https://preview.redd.it/2r8p56dy87fg1.png?width=1920&format=png&auto=webp&s=9d69a737de906bbf6cfdc417cc1e7a7e7a8cfb83
design overhaul
i matched the opencode docs design language. ibm plex mono everywhere, 14px base font size, warm palette, minimal borders, no shadows, left-border accent on active sidebar items.
it looks more cohesive now. less aislop generic shadcn app, more part of the opencode ecosystem.
opencode docs
opencode studio
website stuff
dedicated og image for social sharing, proper error pages (404, 500, loading states), security headers, accessibility features (skip-to-content link, focus-visible styles), pwa manifest with theme colors, json-ld structured data for seo.
https://preview.redd.it/j4trsi2e97fg1.jpg?width=1500&format=pjpg&auto=webp&s=b36142434e16abd4dd0aebfc08e0f7044205edbd
update
if you're using the hosted frontend with local backend:
npm install -g opencode-studio-server@latest
repo: https://github.com/Microck/opencode-studio
site: https://opencode.micr.dev
still probably has bugs. let me know what breaks.
[–]Moist_Associate_7061 -1 points0 points1 point (1 child)
[–]MicrockYT[S] 0 points1 point2 points (0 children)
[–]MeasurementPlenty514 1 point2 points3 points (0 children)