[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5813":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":15,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":16,"starSnapshotCount":16,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},5813,"tessera","horang-labs\u002Ftessera","horang-labs","Tessera — a workspace for organizing AI coding sessions across projects, collections, tabs, panes, and Git worktrees","https:\u002F\u002Fgithub.com\u002Fhorang-labs\u002Ftessera",null,"TypeScript",244,21,1,12,0,4,8,91,65.13,"Apache License 2.0",false,"main",[25,26,27,28,29,30,31,32,5],"claude-code","codex","coding-agent","developer-tools","electron","electron-app","opencode","self-hosted","2026-06-12 04:00:27","# Tessera\n\n> Keep parallel AI coding work organized.\n\n[![Node.js](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fnode-%3E%3D20.0.0-brightgreen)](https:\u002F\u002Fnodejs.org\u002F)\n[![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@horang-labs\u002Ftessera?label=npm)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@horang-labs\u002Ftessera)\n[![License: Apache-2.0](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache--2.0-blue)](#license)\n\nTessera helps you run Claude Code, Codex, and OpenCode side by side without losing track of sessions, files, branches, diffs, or pull requests.\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd width=\"50%\">\u003Cimg src=\"https:\u002F\u002Funpkg.com\u002F@horang-labs\u002Ftessera@latest\u002Fdocs\u002Fassets\u002Freadme\u002Flist-view.png\" alt=\"Tessera list view\">\u003C\u002Ftd>\n    \u003Ctd width=\"50%\">\u003Cimg src=\"https:\u002F\u002Funpkg.com\u002F@horang-labs\u002Ftessera@latest\u002Fdocs\u002Fassets\u002Freadme\u002Fkanban-board.png\" alt=\"Tessera Kanban board\">\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## Product Demos\n\n### Projects, collections, sessions, tabs, and panes\n\nOrganize AI coding work by project and collection, then open sessions across persistent tabs and split panes.\n\n![Drag-and-drop multi-panel workspace](https:\u002F\u002Funpkg.com\u002F@horang-labs\u002Ftessera@latest\u002Fdocs\u002Fassets\u002Freadme\u002Fdnd-multipanel.gif)\n\n### Terminal and file tabs\n\nOpen agent sessions, terminals, and files as movable tabs so you can reshape the workspace around the work instead of switching tools.\n\n![Terminal and file tabs](https:\u002F\u002Funpkg.com\u002F@horang-labs\u002Ftessera@latest\u002Fdocs\u002Fassets\u002Freadme\u002Fterminal-agent-tabs.png)\n\n### Kanban board workflow\n\nMove implementation work through Todo, Doing, Review, and Done while keeping each task tied to sessions, collections, and worktrees.\n\n![Kanban board drag-and-drop workflow](https:\u002F\u002Funpkg.com\u002F@horang-labs\u002Ftessera@latest\u002Fdocs\u002Fassets\u002Freadme\u002Fkanban-board-dnd.gif)\n\n### Realtime Git worktree tracking\n\nTrack each task's worktree, branch, diff, PR state, and workflow status as agents continue working.\n\n![Git workflow status in list view](https:\u002F\u002Funpkg.com\u002F@horang-labs\u002Ftessera@latest\u002Fdocs\u002Fassets\u002Freadme\u002Fgit-workflow-list-view.gif)\n\n### Rich composer controls\n\nOpen new panels, continue an existing conversation, tune reasoning, select models, choose permissions, use voice input (browser runtime only), add `@` references, attach images, and send context-rich prompts from one composer.\n\n![Composer controls and rich context input](https:\u002F\u002Funpkg.com\u002F@horang-labs\u002Ftessera@latest\u002Fdocs\u002Fassets\u002Freadme\u002Fcomposer-controls.gif)\n\n### Cross-platform agent workspace\n\nUse the same multi-agent workspace in the browser, on macOS, or on Windows while running Claude Code, Codex, OpenCode, and their model choices side by side.\n\n![Cross-platform agent workspace](https:\u002F\u002Funpkg.com\u002F@horang-labs\u002Ftessera@latest\u002Fdocs\u002Fassets\u002Freadme\u002Fmulti-model-workspace.gif)\n\n### Agent state, tool logs, and diffs\n\nKeep each agent session tied to its task and worktree while tracking tool calls, failures, file changes, diffs, and branch state in real time.\n\n![Agent state, tool logs, and diffs](https:\u002F\u002Funpkg.com\u002F@horang-labs\u002Ftessera@latest\u002Fdocs\u002Fassets\u002Freadme\u002Fagent-panel.png)\n\n### Custom worktree paths\n\nChoose where Tessera creates managed worktrees so agent tasks fit into your existing local development workflow.\n\n![Custom worktree path settings](https:\u002F\u002Funpkg.com\u002F@horang-labs\u002Ftessera@latest\u002Fdocs\u002Fassets\u002Freadme\u002Fworktree-path.png)\n\n## Resources\n\n| Link | Purpose |\n|------|---------|\n| [Download Latest Release](https:\u002F\u002Fgithub.com\u002Fhorang-labs\u002Ftessera\u002Freleases) | Download the desktop app for Windows, macOS, or Linux |\n| [npm package](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@horang-labs\u002Ftessera) | Run Tessera in the browser |\n| [Product Hunt launch][product-hunt] | Support the launch on Product Hunt |\n| [Team design partner waitlist][design-partner-waitlist] | Help shape team workspaces and enterprise workflows |\n| [GitHub Issues](https:\u002F\u002Fgithub.com\u002Fhorang-labs\u002Ftessera\u002Fissues) | Report bugs and feature requests |\n| [Good first issues][good-first-issues] | Find starter-sized docs, QA, and polish tasks |\n| [Help wanted][help-wanted] | Find community-friendly areas where maintainer context helps |\n| [Discussions][discussions] | Ask questions and propose workflows |\n| [Contributing][contributing] | Set up the project and send focused pull requests |\n\n## Install\n\n### Desktop app\n\nDownload from [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fhorang-labs\u002Ftessera\u002Freleases).\n\n| Platform | Asset |\n|----------|-------|\n| Windows, including WSL | Portable `.exe` |\n| macOS | `.dmg` for Apple Silicon or Intel |\n| Linux beta | `.deb` or `.AppImage` |\n\nWindows builds are not code-signed yet, so SmartScreen may show an unknown-publisher warning. macOS builds are signed and notarized with Apple Developer ID.\n\nRelease downloads, excluding npm installs, as of 2026-05-15 00:28 UTC:\n\n| Version | Windows | macOS | Linux | Total |\n|---------|--------:|------:|------:|------:|\n| 0.1.0 | 8 | 6 | 0 | 14 |\n| 0.1.1 | 14 | 13 | 0 | 27 |\n| 0.1.2 | 6 | 9 | 1 | 16 |\n| 0.1.3 | 24 | 21 | 5 | 50 |\n| 0.1.4 | 30 | 27 | 2 | 59 |\n| 0.1.5 | 27 | 62 | 9 | 98 |\n| **Total** | **109** | **138** | **17** | **264** |\n\n### Browser runtime\n\nRequires Node.js 20 or later and npm 10 or later.\n\n```bash\nnpm install -g @horang-labs\u002Ftessera\ntessera\n```\n\nOpen the printed local URL.\n\n### Docker Compose\n\n```bash\nmkdir -p data\u002Fconfig data\u002Flocal data\u002Fssh data\u002Fcodex data\u002Ftessera workspaces\ntouch data\u002Fgitconfig\ndocker compose up --build -d\n```\n\nOpen `http:\u002F\u002F127.0.0.1:32123`. If bind mounts are not writable:\n\n```bash\nsudo chown -R 1000:1000 data workspaces\n```\n\n## First Run\n\nOn first run, Tessera guides you through:\n\n1. Creating a local account for the browser runtime.\n2. Checking that a supported CLI is installed and authenticated.\n3. Selecting a project folder.\n4. Starting a chat or worktree-backed task.\n\nAuthenticate provider CLIs first, for example with `claude login`, `codex login`, or OpenCode's configured provider credentials.\n\n## Core Features\n\nTessera is designed for developers who run multiple AI coding sessions and need more structure than terminal tabs:\n\n| Feature | Details |\n|---------|---------|\n| Session organization | Structure AI coding work by project, collection, chat session, task, tab, pane, and worktree |\n| Parallel workspace | Run many chats and implementation tasks side by side without losing status, context, or ownership |\n| Multi-panel UI | Persistent tabs, split panes, draggable sessions, and long-running workspace layouts |\n| Chat-to-task flow | Start with research or ideation, then continue the conversation into a managed git worktree |\n| Observable session timeline | Agent output, reasoning, tool calls, failed tool context, permissions, plans, user prompts, files, diffs, branches, and PR state in one place |\n| List and Kanban views | Use list view for high-volume exploration and Kanban view when implementation status matters |\n| Git and PR workflow | Commit, push, create PRs, merge PRs, inspect diffs, and track branch\u002FPR state from the Git panel |\n| Context-rich composer | `@` file references, chat\u002Ftask references, pasted images, and local file attachments |\n| Drag-and-drop workspace | Move sessions, arrange workspace structure, and attach context through drag-and-drop interactions |\n| Provider-native controls | Permission prompts, plan approvals, runtime modes, reasoning controls, and provider access controls in the workspace |\n| Model choice through OpenCode | Use the models and providers configured in OpenCode, including local or air-gapped LLM setups |\n| Cross-environment support | macOS, Windows, and browser-based npm runtime |\n| Unified session history | Session history, multi-agent conversation data, attachments, settings, worktree metadata, and workspace state in one place |\n\nAlso included: keyboard-first navigation, browser-native voice input through the Web Speech API in the browser runtime, and a Claude Code skills dashboard discovered from the local environment.\n\n## Technical Highlights\n\nTessera is built around a local runtime and provider-based CLI layer:\n\n- **Provider adapter architecture**: each CLI is isolated behind a `CliProvider` contract for process lifecycle, protocol parsing, runtime controls, approvals, interrupts, and skills.\n- **Protocol normalization layer**: Claude Code `stream-json`, Codex `app-server`, and OpenCode ACP JSON-RPC events are translated into a shared realtime message model.\n- **Agent workspace model**: chats, tasks, collections, workflow states, managed git worktrees, PR state, diffs, provider controls, and interactive prompts are modeled as first-class workspace concepts.\n- **OpenCode model bridge**: Tessera reads OpenCode's model catalog and exposes configured models, providers, and reasoning variants in the workspace.\n- **Shared local runtime**: desktop and browser runtimes share the same local server, provider layer, and configurable app-data directory.\n\n| Provider | Local command | Status | Notes |\n|----------|---------------|--------|-------|\n| Claude Code | `claude` | Supported | Uses streaming JSON mode, permission modes, plan approval, `AskUserQuestion` prompts, and installed skill discovery |\n| Codex | `codex` | Supported | Uses `app-server` JSON-RPC events, approval requests, plan deltas, sandbox\u002Faccess controls, and reasoning effort |\n| OpenCode | `opencode` | Supported | Uses ACP JSON-RPC, OpenCode modes, permission presets, and the models\u002Fproviders configured in OpenCode |\n\nProvider-specific implementation lives under `src\u002Flib\u002Fcli\u002Fproviders\u002F`. The rest of the app talks to the shared provider contract instead of CLI-specific internals.\n\n## Build From Source\n\nFor development, clone the repository and install dependencies:\n\nSource development requires Node.js 20 or later and npm 10 or later.\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fhorang-labs\u002Ftessera.git\ncd tessera\nnpm install\n```\n\nTessera uses a custom Node.js server for the Next.js app, WebSocket transport, database initialization, provider bootstrapping, and background pollers. The dev script starts that server:\n\n```bash\nnpm run dev\n```\n\nSupported environment variables:\n\n| Variable | Default | Purpose |\n|----------|---------|---------|\n| `TESSERA_DATA_DIR` | `~\u002F.tessera` | App data root for the database, local users, auth keys, settings, worktrees, attachments, and session history |\n| `PORT` | `3000` from source, `32123` from the npm CLI | HTTP server port for source and npm runs |\n| `TESSERA_HOST` | `127.0.0.1` | Host interface for source and npm runs. `HOST` is also accepted by the source server |\n| `LOG_LEVEL` | `info` | Backend log level: `debug`, `info`, `warn`, or `error` |\n| `CLAUDE_CONFIG_DIR` | `~\u002F.claude` | Override the Claude Code config directory used for skill discovery |\n\nDesktop release builds use Electron:\n\n| Target | Command |\n|--------|---------|\n| Windows portable `.exe` | `npm run electron:build:win` |\n| macOS Apple Silicon dev `.dmg` | `npm run electron:build:mac-arm64` |\n\nElectron build outputs are written under `release\u002F`.\n\n## Stored Data And Privacy\n\nTessera runs locally and stores app data under `~\u002F.tessera\u002F` by default.\n\nPublished npm and desktop builds include anonymous PostHog telemetry for minimal usage measurement, stored in the US region. You can disable telemetry during onboarding or later in Settings.\n\nTelemetry is limited to basic app usage duration. Tessera does not collect click data, detailed usage patterns, prompts, messages, file paths, command output, repository names, or account details.\n\nProvider requests are handled by the Claude Code, Codex, or OpenCode CLIs installed on your machine. Tessera does not replace their authentication, billing, model access, or network behavior.\n\n## Tech Stack\n\n| Area | Stack |\n|------|-------|\n| App runtime | Next.js, React, TypeScript, custom Node.js server |\n| UI | Tailwind CSS, Zustand, TanStack Virtual |\n| Realtime | `ws` WebSocket transport |\n| Local database | `sql.js` SQLite |\n| Auth | `bcryptjs`, RS256 JWT cookies |\n| Desktop shell | Electron |\n| Packaging | npm global CLI, Electron builds via `electron-builder` |\n\n## Teams And Design Partners\n\nTessera is currently focused on individual local workflows, but we are preparing team and enterprise features for companies running coding agents across multiple developers.\n\nThe team product is being shaped around three areas: shared workspaces for parallel agent work, governance for permissions and tool use, and operational visibility into agent usage, cost, and review state.\n\nIf your team wants to use Tessera in production, [join the design partner waitlist][design-partner-waitlist].\n\n## Community And Contributions\n\nTessera is for developers who run coding agents every day. We welcome focused issues and pull requests from real usage: desktop QA on Windows, macOS, and Linux; Claude Code, Codex, and OpenCode provider edge cases; documentation fixes; UI polish; and workflow reliability improvements.\n\nStart with [good first issues][good-first-issues] or [help wanted][help-wanted] when they are available. If your change is larger than a focused fix, open a [discussion][discussions] or issue first so we can align on the approach.\n\nThanks to [@jakedev796](https:\u002F\u002Fgithub.com\u002Fjakedev796), Tessera's first external contributor, for helping exercise real Windows and Electron workflows and landing practical fixes in v0.1.4.\n\n## Roadmap\n\nPlanned areas include:\n\n| Area | Direction |\n|------|-----------|\n| Cloud team collaboration | Shared projects, team-visible task state, and collaborative review workflows |\n| Enterprise governance | Permission management, tool-use policies, audit trails, and controls for blocked or unapproved agent actions |\n| Agent operations analytics | Visibility into agent efficiency, model\u002Fprovider usage, and cost patterns across a team workspace |\n| Team memory | Shared project context and team-specific agent memory for recurring workflows |\n| Multi-agent collaboration | A lead agent that coordinates task creation, review, Git workflow management, and parallel worker agents |\n| Tessera-native agent | A built-in agent experience in addition to external CLI providers |\n| Web debugging | Browser inspection, logs, screenshots, and frontend debugging context |\n\n## Troubleshooting\n\n**CLI is not detected**\n\nInstall and authenticate Claude Code, Codex, or OpenCode. If Tessera still cannot find it, open Settings and set the CLI path manually.\n\n**Provider stays logged out**\n\nRun the provider login command, for example `claude login`, `codex login`, or your OpenCode provider setup, then refresh provider status.\n\n**Still stuck?**\n\nPlease open a [GitHub Issue](https:\u002F\u002Fgithub.com\u002Fhorang-labs\u002Ftessera\u002Fissues) with your OS, Tessera version, runtime, provider CLI, and the error you see.\n\n## License\n\nTessera is open source under the Apache License 2.0 (`Apache-2.0`).\n\nCopyright (c) 2026 Horang Labs, Inc.\n\nSee the [LICENSE](LICENSE) file for the full text.\n\nClaude Code is a trademark of Anthropic. Codex and OpenAI are trademarks of OpenAI. Tessera is not affiliated with or endorsed by Anthropic or OpenAI.\n\n[design-partner-waitlist]: https:\u002F\u002Fdocs.google.com\u002Fforms\u002Fd\u002Fe\u002F1FAIpQLSdbo5haZdekBrQNwt_F-UlloQu-s4SkUV4tZCU0cONwKJX8Tw\u002Fviewform\n[product-hunt]: https:\u002F\u002Fwww.producthunt.com\u002Fposts\u002Ftessera-6\n[contributing]: CONTRIBUTING.md\n[good-first-issues]: https:\u002F\u002Fgithub.com\u002Fhorang-labs\u002Ftessera\u002Fissues?q=is%3Aissue%20is%3Aopen%20label%3A%22good%20first%20issue%22\n[help-wanted]: https:\u002F\u002Fgithub.com\u002Fhorang-labs\u002Ftessera\u002Fissues?q=is%3Aissue%20is%3Aopen%20label%3A%22help%20wanted%22\n[discussions]: https:\u002F\u002Fgithub.com\u002Fhorang-labs\u002Ftessera\u002Fdiscussions\n","Tessera 是一个用于组织跨项目、集合、标签、面板和 Git 工作树的 AI 编码会话的工作空间。它支持 Claude Code、Codex 和 OpenCode 等多种编码代理并行运行，通过持久化标签和分割面板帮助用户管理会话、文件、分支、差异和拉取请求，同时提供看板工作流来追踪任务状态。此外，Tessera 还具备实时 Git 工作树跟踪功能，可以监控每个任务的工作树、分支、差异、PR 状态及工作流程状态，并允许用户在浏览器、macOS 或 Windows 上使用同一多代理工作区。该项目适合需要高效管理和协作多个 AI 编码任务的开发者或团队使用。",2,"2026-06-11 03:05:06","CREATED_QUERY"]