Open source · MIT · Fork of OpenCode

A better cockpit
for coding agents.

FlupCode brings a Claude Code–style harness to the OpenCode engine you already run: rich chat with side-by-side diffs, an embedded terminal, permission modes, dashboards and full TUI parity — in the browser and on the desktop.

git clone https://github.com/rldona/FlupCode && bun install

No new backend. The engine stays untouched.

FlupCode — session
Move the provider panel into a dialog and add a search field.
edit src/components/ProvidersPanel.tsx completed
12const [query, setQuery] = createSignal("")12const [query, setQuery] = createSignal("")
13const filtered = createMemo(() => providers.filter(…))
13return <ul>{providers.map(render)}</ul>14return <ul>{filtered().map(render)}</ul>
bash bun run check completed
6 pass · 0 fail · 15 expect() calls
Build · Muse Spark 1.3 · 42s
Built on OpenCode / SolidJS / Bun / Electron / MIT
Features

Everything the terminal does, in a real UI

Not a new engine — a better cockpit. FlupCode focuses on the experience layer while the OpenCode engine stays untouched.

Rich chat

Markdown with syntax highlighting, side-by-side diffs, collapsible reasoning, expandable tool output and a clear turn footer.

Embedded terminal

A real PTY in a workspace panel, wired to the engine. Resize, type, run — no context switch.

Permission modes

Auto, Manual, Accept edits and Bypass — switch how much the agent can do, per session.

Web & desktop

One harness, two homes: a browser app and an Electron shell over the same engine.

Usage dashboard

Tokens, cost and an activity heatmap across every project and session.

Multi-project workspaces

Projects, pinned sessions, tags and a fast nested tree — keep many repos in view.

Any model, any provider

Connect providers with an API key and pick from grouped, searchable catalogs.

Full TUI parity

Feature-for-feature parity with the terminal UI, tracked in a living matrix.

Engineering work

Built for real tasks, end to end

From routine refactors to multi-file features, FlupCode drives the agent through every step — reading, editing, running commands and showing you exactly what changed.

edit src/app.tsx completed
352const variants = () => (auto() ? [] : …)352const variants = () => currentModel()?.variants ?? []
353const variantKey = () => (auto() ? undefined : …)353const variantKey = () => modelRef()?.variant
Context

Many projects, one workspace

Keep every repository in view with a nested project tree, pinned sessions and tags. Usage, cost and an activity heatmap stay one glance away.

Tokens767.4M
Spent$3.23
Control

Decide how much the agent can do

Switch permission modes per session — from Manual, where every change is confirmed, to Bypass for unattended runs. The rules live in the engine, not in a wrapper.

ManualAlways ask before changes
Accept editsAuto-accept file edits
BypassAccept all permissions
Surfaces

The same harness everywhere

Use FlupCode in the browser, on the desktop, or alongside the terminal — all connected to the same engine.

Web

Open the harness in any browser and point it at your server.

Desktop

An Electron shell that wraps the same UI as a native app. Download ↓

bun run dev:harness

Terminal

Keep the OpenCode TUI — FlupCode complements it, not replaces it.

Download

Get the desktop app

Free preview builds, published to GitHub Releases. Requires the OpenCode engine running locally (opencode serve).

Builds are unsigned. On macOS, right-click → Open the first time (or allow it in System Settings → Privacy & Security). On Windows, pick “More info → Run anyway”. Prefer the browser? Run the web harness.

How it works

Three steps, no lock-in

FlupCode talks to the same HTTP + SSE API every OpenCode client uses.

01

Install

Clone the repo and install with Bun.

bun install
02

Run the engine

Start the OpenCode server on a port.

opencode serve --port 4096
03

Open the harness

Launch the web app — or the desktop app — and connect.

bun run dev:harness
Open source, honestly

What FlupCode is — and isn't

It is

  • An independent, MIT-licensed fork of OpenCode.
  • A web and desktop harness focused on UX.
  • Upstream-first: the engine stays mergeable.
  • A small, readable product layer you can extend.

It isn't

  • A new model, provider or inference stack.
  • Affiliated with or endorsed by OpenCode or Anthropic.
  • A replacement for the OpenCode TUI — it complements it.
  • Vaporware: it builds, ships and syncs with upstream.

Your engine. A better cockpit.

Clone it, connect it to OpenCode, and keep shipping.