Skip to content

Youragents
keepforgetting.
Identradoesn't.

Claude Code, Codex, Gemini, every CLI you already run, all on one local canvas. Real terminals, one shared memory, and you stop explaining the same thing twice.

See it in action

Source · Apache-2.0 · No accounts, no telemetry · Linux and macOS (Apple Silicon)

Identra3 agents · 1 memory
Identra product demo

Bring the agents you already run

Claude Code
Codex
Gemini
opencode

Every agent you run forgets the moment you close it.

New session, new agent, and you explain the layout again.

The approach you already tried and threw away? Gone.

The agent is sharp in the moment, and blank the next morning.

Agents don't need more context.
They need memory.

How Identra works

Fidelity01

Full fidelity

Drop an agent node and it spawns the real CLI in a real PTY, with your environment, config, and login. There is no shell wrapper and no sandbox pretending to be your machine.

Continuity02

It persists

Nodes, edges and layout save to .identra/canvas.json inside your project with a debounced atomic write. Close the app, open it next week, everything is where you left it.

Memory03

It remembers

After a session, one extraction pass pulls the durable facts, dedupes by content hash, embeds locally with fastembed, and stores them in a local SQLite database with a vector index.

Positioning

Not another wrapper.

IdentraThe real CLI, your config, your login
OthersWrapped and sandboxed, skills stripped
IdentraMemory compounds across agents
OthersAmnesia at every session boundary
IdentraEvery agent you already have, one board
OthersOne vendor's agent, one per terminal

Local-first

Where your data lives

No server, no accounts, no telemetry. The whole surface sits on your machine, and it's Apache-2.0, so none of this is a claim you have to take on faith.

No phone-homeNone

It never calls out.

Identra has no server and no accounts. There is no backend to breach because your work never leaves the machine it runs on.

CredentialsZero

Your keys stay yours.

Agent API keys live in your agent's own CLI config, where they already are. Identra never reads, stores, or proxies them.

Local memorySQLite

Embedded on your disk.

Memory extracts facts and embeds them locally with fastembed into one SQLite file. With no model configured it stores text verbatim rather than guessing.

1# Identra has no backend, no accounts, no telemetry. 2# There is no server to breach. 3 4$ lsof -nP -iTCP -sTCP:ESTABLISHED -p $(pgrep -f identra) 5# -> nothing. Identra opens no remote sockets. 6 7# Your agents still reach their own APIs, 8# exactly as they did before Identra.

Canvas state lives in .identra/canvas.json inside your project · check all of it yourself

FAQ

The questions you'd ask.

Identra is an open-source desktop canvas that runs the coding-agent CLIs you already have as live nodes on one board. Each node spawns the real CLI in a real PTY with your environment, config and login, and a local memory layer carries facts across agents and sessions. Apache-2.0, Linux and macOS.

Whatever you already have on your PATH. Claude Code, codex, gemini and opencode all run as nodes, and the dock shows which of them you have installed and signed in. Identra doesn't wrap or re-implement the agent, so the Claude Code inside Identra is the Claude Code you already use, with your skills and config intact. Start with Claude Code if you're choosing: a project's memory reaches an agent over the MCP handshake, and it's the CLI that surfaces what arrives there, so it opens already knowing what the project has learned.

No. Your keys stay in your agent's own CLI config, where they already live. Identra never reads them, never stores them, and never proxies your requests. It has no server to send them to.

No. There is no backend, no accounts and no telemetry. Memory extracts and embeds locally with fastembed into a SQLite file on your disk. Canvas state is a .identra/canvas.json inside your project, gitignored by default.

Yes, as of v0.1.1. Agents record facts with add_memory and recall them with list_memory and search_memory, and what a project already knows is handed to an agent on the MCP handshake, before it asks anything. Recall matches on meaning rather than shared words, because the embedding model ships inside the build — so it works on first launch, offline, with nothing to fetch.

One command, and nothing downloads after it — install.sh picks the right build for your machine, and the embedding model ships inside it. To build from source instead you need Rust and Cargo, the Tauri CLI, bun, just, and webkitgtk with its build deps; run just doctor and it tells you what's missing. Either way you want a coding agent on your PATH. Without one a node still opens, it just names the agents you do have rather than pretending to work.

curl -fsSL https://identra.dev/install.sh | sh installs it: the .deb where you have apt, the .rpm where you have dnf, the .dmg on macOS (Apple Silicon). Every release also ships those files plus an AppImage if you'd rather pick one yourself, and installed builds keep themselves current. Windows is deferred. Building from source still works.

Because it's meant to feel like part of your desktop rather than a browser tab pretending to be an app. The Yaru look is deliberate.

Run it on your machine.

One command on Linux or macOS (Apple Silicon). It picks the right build for your machine and installs it, and nothing downloads afterwards — the embedding model ships inside, so recall works on first launch, offline. Installed builds keep themselves current.

curl -fsSL https://identra.dev/install.sh | sh

Linux (.deb / .rpm) and macOS on Apple Silicon. Apache-2.0.

or build from source
$ git clone https://github.com/identra-dev/identra.git
$ cd identra
$ just doctor  # check your machine is ready
$ just dev     # build and launch with hot reload
  • To build from source you'll need
  • Rust + Cargo, the Tauri CLI, bun, and just
  • webkitgtk and its build deps (just doctor lists what you're missing)
  • a coding agent on your PATH for an agent node to run something