Nelson Pires 7af81c2436 Add per-model quotas with collapsible model groups in header (#355)
* feat(ui): show per-model quota groups in header with collapsible families

Add per-model quota groups under each provider in the header
Introduce collapsible sections for model families to reveal models
Show all models when none are explicitly selected or respect explicit selections

* feat: add toggle to UsageCard for dropdown visibility

Introduce a switch in UsageCard to control inclusion in the dropdown
Hide the percent label when the toggle is visible

* feat(usage): enhance UsagePage with model grouping and collapsibles

Add model lists grouped by family for the selected provider
Enable collapsible sections per family to toggle visibility
Apply and persist default model selections on provider change

* feat(quota): add model family helpers

Add utilities to categorize models into families by provider
Enable grouping of models by family for header and usage pages
Define default models for Gemini 3.x and Claude families

* feat(desktop): extend settings with model grouping and selection

Track per-provider selected models for usage
Allow collapsing and expanding families in the usage page
Support per-provider custom model groups with labels and assignments

* feat: persist usage preferences in persistence

Persist usageSelectedModels per provider
Persist usageCollapsedFamilies and usageExpandedFamilies states
Support custom usageModelGroups with groups and assignments

* feat: track selected quota models and expanded families per provider

Initialize selectedModels and expandedFamilies state for quota providers
Add actions to set, toggle, and apply default model selections and expanded families
Persist selections to desktop settings and apply defaults on load

* feat(server): sanitize usage model configuration in settings update

Validate and sanitize usage selections per provider
Persist only valid usageCollapsedFamilies and usageExpandedFamilies in settings
Enforce limits on custom model groups and model assignments

* feat: add collapsible model families in header

Add collapsible sections for model families within each provider in the header
Show per-model usage with percent display and a progress bar
Toggle expansion via arrow icons and preserve expanded state per provider

* fix(ui): treat explicit per-provider model selections correctly in header

Enable showing all models by default when a provider has no explicit selection
Recognize an explicit per-provider selection when a provider key exists in selectedModels
Filter to selected models only if an explicit selection is present for the provider
2026-02-08 15:42:15 +02:00
2025-12-07 19:32:53 +02:00
2025-12-07 19:32:53 +02:00
2026-02-06 16:30:18 +02:00
2025-12-07 19:32:53 +02:00
2025-12-07 19:32:53 +02:00
2025-12-07 19:32:53 +02:00
2025-12-07 19:32:53 +02:00
2026-02-06 16:30:18 +02:00
2025-12-07 19:32:53 +02:00
2025-12-07 19:32:53 +02:00
2025-12-07 19:32:53 +02:00

OpenChamber

GitHub stars GitHub forks GitHub release Created with OpenCode Ask Zread Discord Support the project

Web and desktop interface for the OpenCode AI coding agent. Works alongside the OpenCode TUI.

The OpenCode team is actively working on their own desktop app. I still decided to release this project as a fan-made alternative.

It was entirely built with OpenCode tool - first with the TUI version, then with the first usable version of OpenChamber, which I then used to build the rest.

The whole project was built entirely with AI coding agents under my supervision. It started as a hobby project and proof of concept that AI agents can create genuinely usable software.

OpenChamber Chat

More screenshots

Tool Output Settings Web Version Diff View VS Code Extension

PWA Chat PWA Terminal

Why use OpenChamber?

  • Cross-device continuity: Start in TUI, continue on tablet/phone, return to terminal - same session
  • Remote access: Use OpenCode from anywhere via browser
  • Familiarity: A visual alternative for developers who prefer GUI workflows

Features

Core (all apps versions)

  • Integrated terminal
  • Git operations with identity management and AI commit message generation
  • Smart tool visualization (inline diffs, file trees, results highlighting)
  • Rich permission cards with syntax-highlighted operation previews
  • Per-agent permission modes (ask/allow/full) per session
  • Multi-agent runs from a single prompt (isolated worktrees; Web/PWA + Desktop)
  • Branchable conversations: start a new session from any assistant response
  • Task tracker UI with live progress and tool summaries
  • Model selection UX: favorites, recents, and configurable tool output density
  • UI scaling controls (font size and spacing)
  • Session auto-cleanup with configurable retention
  • Memory optimizations with LRU eviction

Web / PWA

  • Mobile-first UI with gestures and optimized terminal controls
  • Self-serve web updates (no CLI required)
  • Update and restart keeps previous server settings (port/password)
  • Cloudflare Quick Tunnel support for easy remote access (--try-cf-tunnel)
  • QR code generation for quick mobile access (--tunnel-qr)
  • Auto-login URL with embedded password (--tunnel-password-url)

Desktop (macOS)

  • Native macOS menu bar integration with app actions
  • First-launch directory picker to minimize permission prompts

VS Code Extension

  • Editor-integrated file picker and click-to-open from tool output
  • In-extension Settings access and theme mapping

GitHub Actions (Cloud Usage)

Run OpenChamber remotely using GitHub Actions. No local computer required.

  • Zero Setup: Runs on GitHub's infrastructure.
  • Persistence: Optional; enabled when OPENCODE_SERVER_PASSWORD is set (encrypted).
  • Remote Access: Access via secure tunnel (Cloudflare/Ngrok).

Read the Guide: OpenChamber for Actions

Custom Themes

Create your own color schemes by dropping JSON files into ~/.config/openchamber/themes/. Hot reload supported — no restart needed.

Read the Guide: Custom Themes

Installation

VS Code Extension

Install from VS Code Marketplace / Open VSX Registry or search "OpenChamber" in Extensions.

CLI (Web Server)

# Quick install (auto-detects your package manager)
curl -fsSL https://raw.githubusercontent.com/btriapitsyn/openchamber/main/scripts/install.sh | bash

# Or install manually
bun add -g @openchamber/web    # or npm, pnpm, yarn
openchamber                          # Start on port 3000
openchamber --port 8080              # Custom port
openchamber --daemon                 # Background mode
openchamber --ui-password secret     # Password-protect UI
openchamber --try-cf-tunnel          # Create a Cloudflare Quick Tunnel for remote access
openchamber --try-cf-tunnel --tunnel-qr              # Show QR code for easy mobile access
openchamber --try-cf-tunnel --tunnel-password-url   # Include password in URL for auto-login
OPENCODE_PORT=4096 OPENCODE_SKIP_START=true openchamber  # Connect to external OpenCode server
openchamber stop                     # Stop server
openchamber update                   # Update to latest version

Desktop App (macOS)

Download from Releases.

Prerequisites

See CONTRIBUTING.md for guidelines.

Tech Stack

Frontend

React TypeScript Vite Tailwind CSS

State & UI

Zustand Radix UI

Backend & Desktop

Express Tauri OpenCode SDK

Acknowledgments

Independent project, not affiliated with OpenCode team.

Special thanks to:

  • OpenCode - For the excellent API and extensible architecture.
  • Flexoki - Beautiful color scheme by Steph Ango.
  • Pierre - Fast, beautiful diff viewer with syntax highlighting.
  • Tauri - Desktop application framework.
  • Ghossty-web - for a great implementeation of a Ghostty web renderer.
  • David Hill - who inspired me to release this without overthinking.
  • My wife, who created a beautiful firework animation for the app while testing it for the first time.

License

MIT

S
Description
No description provided
Readme MIT
82 MiB
Languages
TypeScript 74.8%
JavaScript 19.8%
MDX 4.7%
CSS 0.4%
HTML 0.1%
Other 0.1%