Keep parallel AI coding work organized. Tessera helps you run Claude Code, Codex, and OpenCode side by side in terminal or rich GUI modes—without losing track of sessions, files, branches, diffs, or pull requests.
$ npx -y skills add horang-labs/tessera --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
Repo: horang-labs/tessera
What's inside
Keep parallel AI coding work organized.
Tessera helps you run Claude Code, Codex, and OpenCode side by side in terminal or rich GUI modes—without losing track of sessions, files, branches, diffs, or pull requests.
Organize AI coding work by project and collection, then open sessions across persistent tabs and split panes.

Run coding agents in terminal (PTY) sessions, rich GUI conversations, or both side by side in the same workspace.

Move implementation work through Todo, Doing, Review, and Done while keeping each task tied to sessions, collections, and worktrees.

See every active task across Todo, Doing, Review, Done, and Chat, grouped by project and tied to its agent session and worktree.

Open any task directly from the board and continue working in its terminal session without losing context.

Open agent sessions, terminals, and files as movable tabs so you can reshape the workspace around the work instead of switching tools.

Open 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.
Keep each agent session tied to its task and worktree while tracking tool calls, failures, file changes, diffs, and branch state in real time.
See and edit the active instructions and memory for the session at a glance, including user and project scopes, global memory, and past work summaries.
Download from GitHub Releases.
| Platform | Asset |
|---|---|
| Windows, including WSL | Portable .exe |
| macOS | .dmg for Apple Silicon or Intel |
| Linux beta | .deb |
Windows builds are not code-signed yet, so SmartScreen may show an unknown-publisher warning. macOS builds are signed and notarized with Apple Developer ID.
Requires Node.js 20 or later and npm 10 or later.
npm install -g @horang-labs/tessera
tessera
Open the printed local URL.
mkdir -p data/config data/local data/ssh data/codex data/tessera workspaces
touch data/gitconfig
docker compose up --build -d
Open http://127.0.0.1:32123. If bind mounts are not writable:
sudo chown -R 1000:1000 data workspaces
On first run, Tessera guides you through:
Authenticate provider CLIs first, for example with claude login, codex login, or OpenCode's configured provider credentials.
For development, clone the repository and install dependencies:
Source development requires Node.js 20 or later and npm 10 or later.
git clone https://github.com/horang-labs/tessera.git
cd tessera
npm install
Tessera 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:
npm run dev
Supported environment variables:
| Variable | Default | Purpose |
|---|---|---|
TESSERA_DATA_DIR | ~/.tessera | App data root for the database, local users, auth keys, settings, worktrees, attachments, and session history |
PORT | 3000 from source, 32123 from the npm CLI | HTTP server port for source and npm runs |
TESSERA_HOST | 127.0.0.1 | Host interface for source and npm runs. HOST is also accepted by the source server |
LOG_LEVEL | info | Backend log level: debug, info, warn, or error |
CLAUDE_CONFIG_DIR | ~/.claude | Override the Claude Code config directory used for skill discovery |
Desktop release builds use Electron:
| Target | Command |
|---|---|
Windows portable .exe | npm run electron:build:win |
macOS Apple Silicon dev .dmg | npm run electron:build:mac-arm64 |
Electron build outputs are written under release/.
Tessera runs locally, stores app data under ~/.tessera/ by default, and sends provider requests through the Claude Code, Codex, or OpenCode CLI installed on your machine.
Published builds include minimal anonymous usage telemetry that you can disable during onboarding or in Settings. Tessera does not collect prompts, messages, file paths, command output, repository names, or account details.
Tessera is currently focused on individual local workflows, but we are preparing team and enterprise features for companies running coding agents across multiple developers.
The 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.
If your team wants to use Tessera in production, join the design partner waitlist.
Planned areas include:
| Area | Direction |
|---|---|
| Cloud team collaboration | Shared projects, team-visible task state, and collaborative review workflows |
| Enterprise governance | Permission management, tool-use policies, audit trails, and controls for blocked or unapproved agent actions |
| Agent operations analytics | Visibility into agent efficiency, model/provider usage, and cost patterns across a team workspace |
| Team memory | Shared project context and team-specific agent memory for recurring workflows |
| Multi-agent collaboration | A lead agent that coordinates task creation, review, Git workflow management, and parallel worker agents |
| Tessera-native agent | A built-in agent experience in addition to external CLI providers |
| Web debugging | Browser inspection, logs, screenshots, and frontend debugging context |
Tessera is open source under the GNU Affero General Public License v3.0 (AGPL-3.0).
Copyright (c) 2026 Horang Labs, Inc.
See the LICENSE file for the full text.
.dockerignore
.github/
ISSUE_TEMPLATE/
bug_report.md
feature_request.md
PULL_REQUEST_TEMPLATE.md
workflows/
desktop-preflight.yml
desktop-release.yml
npm-publish.yml
.gitignore
agent-report-274.md
agent-report-275.md
agent-report-276.md
agent-report-277.md
artifacts/
issue-276/
desktop-inline-refusal.png
desktop-local-selection.png
desktop-remote-selection.png
local-git-panel.png
phone-quick-create-source.png
phone-source-selection.png
remote-git-panel.png
assets/
icon.icns
icon.ico
icon.png
icon.svg
tray-icon.png
tray-icon.svg
bin/
control-cli.mjs
tessera.mjs
CONTRIBUTING.md
docker-compose.yaml
Dockerfile
docs/
agents/
domain.md
issue-tracker.md
triage-labels.md
assets/
pr/
compacting-bar-closed.png
compacting-bar-codex-crop.png
compacting-bar-codex.png
compacting-bar-crop.png
compacting-bar-early.png
compacting-bar-mid.png
readme/
agent-panel.png
composer-controls.gif
dnd-multipanel.gif
git-workflow-list-view.gif
kanban-board-dnd.gif
kanban-board.png
kanban-overview.png
kanban-task-terminal.png
list-view.png
multi-model-workspace.gif
pty-gui-side-by-side.png
session-context-panel.png
skills-dashboard.png
terminal-agent-tabs.png
worktree-path.png
electron/
app-secret-header.ts
main.ts
network-addresses.ts
preload.ts
remote-access-status.ts
server-child.ts
server-listener.ts
tailscale-firewall-capability.ts
terminal-clipboard.ts
tray.ts
tsconfig.json
windows-firewall.ts
eslint.config.mjs
LICENSE
next.config.mjs
package-lock.json
package.json
postcss.config.js
public/
sounds/
notification.wav
README.md
runtime/
register-runtime-aliases.ts
scripts/
electron-after-pack.cjs
entitlements.mac.adhoc.plist
entitlements.mac.plist
inspect-electron-cdp.cjs
launch-electron-test-instances.ps1
linux-deb-after-install.tpl
notarize-mac-dmg.cjs
patch-xterm-mouse-report-coords.mjs
patch-xterm-touch-scroll.mjs
patch-xterm-webgl-atlas.mjs
patch-xterm-webgl-device-pixel.mjs
prepare-electron-runtime.mjs
stop-electron-test-session.ps1
with-posthog-telemetry-build.mjs
SECURITY.md
server.ts
skills/
tessera-cli/
agents/
openai.yaml
SKILL.md
src/
app/
api/
archive/
route.ts
tasks/
[id]/
route.ts
worktree/
route.ts
worktrees/
route.ts
auth/
login/
route.ts
logout/
route.ts
me/
route.ts
setup/
route.ts
collections/
[id]/
route.ts
route.ts
devices/
[id]/
route.ts
route.ts
diagnostics/
cli/
export/
route.ts
route.ts
feedback/
route.ts
filesystem/
browse/
route.ts
pairing/
redeem/
route.ts
requests/
[id]/
route.ts
route.ts
route.ts
projects/
ignored-files/
route.ts
preparation-script/
route.ts
route.ts
providers/
session-options/
route.ts
sessions/
[id]/
archive/
route.ts
collection/
route.ts
export/
route.ts
file/
route.ts
files/
route.ts
fork/
route.ts
generate-title/
route.ts
git/
action/
route.ts
changes/
route.ts
commit-message/
route.ts
diff/
route.ts
fetch/
route.ts
route.ts
memory/
file/
route.ts
route.ts
messages/
route.ts
move/
route.ts
refresh-git/
route.ts
rename/
route.ts
resume/
route.ts
route.ts
skills/
route.ts
tool-image/
route.ts
tool-output/
route.ts
workflow-status/
route.ts
projects/
[encodedDir]/
route.ts
reorder/
route.ts
route.ts
reorder/
route.ts
route.ts
settings/
route.ts
setup/
status/
route.ts
skills/
analyze/
route.ts
route.ts
stt/
route.ts
tasks/
[id]/
preparation/
route.ts
route.ts
sessions/
route.ts
reorder/
route.ts
route.ts
telemetry/
bootstrap/
route.ts
first-run/
route.ts
update/
check/
route.ts
upload/
route.ts
worktrees/
refs/
route.ts
route.ts
board-popout/
page.tsx
chat/
page.tsx
dev-ask-user-question-preview/
ask-user-question-preview-client.tsx
page.tsx
dev-codex-skills-repro/
codex-skills-repro-client.tsx
page.tsx
dev-opencode-skills-repro/
opencode-skills-repro-client.tsx
page.tsx
dev-scroll-autoscroll-repro/
page.tsx
scroll-autoscroll-repro-client.tsx
dev-scroll-clamp-repro/
page.tsx
scroll-clamp-repro-client.tsx
dev-terminal-input-bar-repro/
page.tsx
terminal-input-bar-repro-client.tsx
dev-terminal-scroll-repro/
page.tsx
terminal-scroll-repro-client.tsx
globals.css
layout.tsx
login/
page.tsx
page.tsx
pair/
page.tsx
setup/
page.tsx
terminal.css
components/
archive/
archive-dashboard.tsx
auth/
login-form.tsx
board/
board-popout-layout.tsx
collection-filter-bar.tsx
kanban-board.tsx
kanban-card.tsx
kanban-column.tsx
kanban-scroll-controls.tsx
portfolio-filter-bar.tsx
session-peek.tsx
chat/
agent-message-group.tsx
all-projects-list.tsx
ask-user-question-floating-panel.tsx
chat-area-skeleton.tsx
chat-area.tsx
chat-layout.tsx
cli-provider-chip-selector.tsx
code-block.tsx
collection-group-sections.tsx
collection-group.tsx
collection-move-submenu.tsx
collection-quick-create-sheet.tsx
compact-status-bar.tsx
composer-session-control-sections.tsx
composer-session-controls.tsx
context-status-bar.tsx
delete-project-dialog.tsx
delete-session-dialog.tsx
delete-task-dialog.tsx
diff-stats-badge.tsx
file-picker.tsx
folder-browser-dialog.tsx
header.tsx
image-lightbox.tsx
interactive-prompt-overlay.tsx
left-panel.tsx
loading-indicator.tsx
managed-worktree-preview.tsx
markdown-code.tsx
markdown-link.tsx
message-bubble-content.tsx
message-bubble.tsx
message-error-boundary.tsx
message-input-sections.tsx
message-input.tsx
message-layout.ts
message-list-sections.tsx
message-list.tsx
message-row-shell.tsx
message-search-bar.tsx
modal-shell.tsx
move-project-dialog.tsx
panel-split-picker.tsx
permission-floating-bar.tsx
plan-approval-floating-panel.tsx
preview-markdown.tsx
progress/
agent-progress.tsx
bash-progress.tsx
mcp-progress.tsx
project-strip.tsx
provider-brand.tsx
provider-execution-badge.tsx
provider-quick-menu.tsx
provider-usage-rail.tsx
recent-work-section.tsx
selection-action-bar.tsx
session-ref-chip.tsx
shared/
error-block.tsx
sidebar-sections.tsx
sidebar-utils.ts
sidebar.tsx
single-panel-shell.ts
skill-favorite-button.tsx
skill-picker.tsx
skill-quick-access-bar.tsx
system-message-block.tsx
task-context-menu.tsx
task-pr-badge.tsx
terminal-chat-composer.tsx
thinking-block.tsx
todo/
todo-status-bar.tsx
tool-call-block-sections.tsx
tool-call-block-utils.tsx
tool-call-block.tsx
tool-call-detail-panel.tsx
tool-call-grid.tsx
tool-results/
bash-result.tsx
diff-result.tsx
misc-result.tsx
read-result.tsx
search-result.tsx
task-result.tsx
... 1053 moreFAQ
tessera is a Claude Code plugin with 1 hand-picked skill for development work, indexed on Flowy. Install it with the command on its page. It includes tessera-cli. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.