jaalayour knowledge grows A Samvit AI Labs product

Install

Once you are approved, download jaala from the download page and install it like any other app. Not approved yet? Join the waitlist.

  • macOS: Apple silicon (M1 or later). Open the .dmg and drag jaala into Applications.
  • Windows 10 and 11 (x64 only): run the setup .exe. Windows may show a SmartScreen notice for a new release. Click More info → Run anyway.
  • Linux (x86-64 only): AppImage, .deb or .rpm. Needs Ubuntu 24.04+, Fedora 40+ or Debian 13+ (glibc 2.39 and webkit2gtk 4.1). The .deb and .rpm say so and refuse to install on an older release; the AppImage cannot check, and fails to start instead.

jaala needs Claude Code, installed and signed in. jaala reads your Claude Code and Codex history, and runs its AI features through your own Claude Code and your own Anthropic plan.

Updates are signed. The app checks the signature before it installs one.

Sign in

Open jaala and sign in with Google or GitHub. Sign-in opens in your own browser. We never see a password.

Sign-in is for your licence only. Your graph, your sessions and your files stay on your machine.

During the beta, jaala opens by approval, in waves. Sign in with the same account you used to join the waitlist. If your account is not approved yet, jaala says so and links to the waitlist.

If you cancelled sign-in

Nothing was stored and nothing changed in jaala. To try again, go back to jaala and sign in. Sign-in opens in your browser again.

The real sign-in page is always on id.samvitlabs.ai.

Set up sources

jaala captures nothing until you choose what it should capture. You choose in Settings, and every change applies at once. There is no Save button.

  1. In jaala, click ⚙ (Settings) in the title bar.
  2. Under Capture, choose Sources. You see one row for each source: Claude (your Claude Code sessions), Codex and Folders.
  3. To capture a whole source and keep following it, set its row to Always.

The controls on each row

  • Always captures what is there now, and every new session as it appears.
  • Off captures nothing from that row.
  • Inherit follows the row above it. Projects and sessions start here.
  • ⬇ captures what is there now, once. It does not change the setting.

Capture only some of it

Click a source to see its projects. Set a project to Always or Off, or open it and set single sessions. To cover every session whose name matches, type a pattern such as *bug* in the + box on a project.

For Claude and Codex, Lands under… on a project picks the node its sessions land under in your graph. Without it, they land in the project's own folder.

Add a folder of notes

Open Folders, paste the full path of a folder that holds .md files, and click Add this folder. jaala starts capturing it right away.

The first import can take a few minutes for a long history. See Your history comes in.

Your history comes in

Once you have chosen what to capture in Set up sources, jaala reads that Claude Code and Codex history from your machine and builds your graph from it. The first import can take a few minutes for a long history. New sessions appear as you work.

Every turn lands word for word. Nothing is summarized away and nothing is left out. Curating it comes later, and only when you ask.

Why keep everything

A chat with an AI coding agent follows one path. When you choose an option, the others drop out of the conversation. They are still in the session file. jaala keeps them, so an option you didn't take is still there to find, reopen and cite later.

Real sessions

Native desktop shell (Tauri) instead of a browser web app

Claude Code transcript behind “Native desktop shell (Tauri) instead of a browser web app”, turns as they happenedClaude Code
The same turns captured in jaala, word for wordjaala · captured
jaala's consolidated view of “Native desktop shell (Tauri) instead of a browser web app”: the nodes drawn from these turnsjaala · consolidated
Two turns, captured word for word: why jaala became a desktop app rather than a browser tab.

Ingesting Claude Code sessions: watch, dedupe, placement

Claude Code transcript behind “Ingesting Claude Code sessions: watch, dedupe, placement”, turns as they happenedClaude Code
The same turns captured in jaala, word for wordjaala · captured
jaala's consolidated view of “Ingesting Claude Code sessions: watch, dedupe, placement”: the nodes drawn from these turnsjaala · consolidated
Sessions keep growing; jaala pulls in only new messages, and imported turns land flat until you organize them.

Canvas layout: real tree rail beside a React Flow graph

Claude Code transcript behind “Canvas layout: real tree rail beside a React Flow graph”, turns as they happenedClaude Code
The same turns captured in jaala, word for wordjaala · captured
jaala's consolidated view of “Canvas layout: real tree rail beside a React Flow graph”: the nodes drawn from these turnsjaala · consolidated
One graph or a tree beside it? The unified option lost for a concrete reason: one shared pan/zoom camera.

Organize

Organize sorts a long session or a busy topic into sub-topics. It groups related threads, names each group, and files the threads under it. It also renames the topic it ran on to fit what is inside.

Nothing is rewritten or deleted. The turns move; their words stay as they were.

How to start it

  • Right-click a session or topic in the tree, or its card on the canvas, and choose Organize. It works on the children of that node.
  • To organize only some nodes, Cmd-click (Ctrl-click on Windows and Linux) two or more of them. Right-click one of them and click Selected on the Organize row.

Hover a menu row to see what it does. A dot on the node shows Organizing… while it runs. Organize uses a fast model: seconds on a node, minutes on a large topic.

Changed your mind? Right-click the same node and choose Undo.

Real sessions

Jaala Actors

Claude Code transcript behind “Jaala Actors”, turns as they happenedClaude Code
The same turns captured in jaala, word for wordjaala · captured
jaala's organized view: the session sorted into sub-topicsjaala · organized
268 turns on one design question, sorted into 11 sub-topics you can open one at a time.

Are objects just 3D points? Identify vs. reconstruct

Claude Code transcript behind “Are objects just 3D points? Identify vs. reconstruct”, turns as they happenedClaude Code
jaala's organized view: the session sorted into sub-topicsjaala · organized
jaala's consolidated view of “Are objects just 3D points? Identify vs. reconstruct”: the nodes drawn from these turnsjaala · consolidated
An evening's side question, reduced to three separate bars: identify, reconstruct as seen, reconstruct as physical.

Concept diagram SVG generation

Claude Code transcript behind “Concept diagram SVG generation”, turns as they happenedClaude Code
jaala's organized view: the session sorted into sub-topicsjaala · organized
jaala's consolidated view of “Concept diagram SVG generation”: the nodes drawn from these turnsjaala · consolidated
Why a diagram rendered in one tool and failed in another, the fix, and the three formats kept.

CLAUDE.md, SPEC, and concept diagram setup

Claude Code transcript behind “CLAUDE.md, SPEC, and concept diagram setup”, turns as they happenedClaude Code
jaala's organized view: the session sorted into sub-topicsjaala · organized
jaala's consolidated view of “CLAUDE.md, SPEC, and concept diagram setup”: the nodes drawn from these turnsjaala · consolidated
Rendering the diagram caught an error the text hid: cloud-only agents drawn inside 'Local sources'.

Parity gap review and B/C fixes (claude-agent-sdk-rust)

Claude Code transcript behind “Parity gap review and B/C fixes (claude-agent-sdk-rust)”, turns as they happenedClaude Code
jaala's organized view: the session sorted into sub-topicsjaala · organized
jaala's consolidated view of “Parity gap review and B/C fixes (claude-agent-sdk-rust)”: the nodes drawn from these turnsjaala · consolidated
What was still missing for parity, sorted into three buckets: two fixed in the session, one left as an open question. An independent Rust port of Anthropic's Python SDK, not affiliated with Anthropic

Consolidate

Consolidate reads the turns under a node and distills them into knowledge: briefs, decisions, options and constraints. Each new node links back to the turns it came from. The turns stay underneath.

How to start it

  • Right-click a topic in the tree, or its card on the canvas, and choose Consolidate. It works on the children of that node.
  • To consolidate only some nodes, Cmd-click (Ctrl-click on Windows and Linux) two or more of them. Right-click one of them and click Selected on the Consolidate row.

A dot on the node shows Consolidating… while it runs. Consolidate uses a strong model and takes minutes. It runs through your own Claude Code.

Organize first, then consolidate each topic. Smaller topics give sharper results.

Real sessions

Session-ingestion layer scoping

Claude Code transcript behind “Session-ingestion layer scoping”, turns as they happenedClaude Code
jaala's consolidated view of “Session-ingestion layer scoping”: the nodes drawn from these turnsjaala · consolidated
Thirteen agents surveyed; the rule for what to ingest moved from a list, to a cursor test, to 'anything parseable'.

Can DTO generation run automatically in the build pipeline?

Claude Code transcript behind “Can DTO generation run automatically in the build pipeline?”, turns as they happenedClaude Code
jaala's consolidated view of “Can DTO generation run automatically in the build pipeline?”: the nodes drawn from these turnsjaala · consolidated
Two questions in a long chat become one brief: three routes to automate a code generator, the two causes that ruled them out, and the decision.

Model Router

Claude Code transcript behind “Model Router”, turns as they happenedClaude Code
jaala's consolidated view of “Model Router”: the nodes drawn from these turnsjaala · consolidated
Route on many dimensions, not strong vs cheap; and 'depth is inviolable: budget pauses work, never thins it'.

Implement TAL feature in Jaala

Claude Code transcript behind “Implement TAL feature in Jaala”, turns as they happenedClaude Code
jaala's consolidated view of “Implement TAL feature in Jaala”: the nodes drawn from these turnsjaala · consolidated
Per-subgraph précis plus a retrieve tool, with the per-node option kept beside it. design, not built

Authorization model for a graph where everything is a node

Claude Code transcript behind “Authorization model for a graph where everything is a node”, turns as they happenedClaude Code
The same turns captured in jaala, word for wordjaala · captured
jaala's consolidated view of “Authorization model for a graph where everything is a node”: the nodes drawn from these turnsjaala · consolidated
A design recorded before it's built: the rejected CRUD model stays next to the decision. design, not built

A conversation is a lens on the graph, not a container

Claude Code transcript behind “A conversation is a lens on the graph, not a container”, turns as they happenedClaude Code
The same turns captured in jaala, word for wordjaala · captured
jaala's consolidated view of “A conversation is a lens on the graph, not a container”: the nodes drawn from these turnsjaala · consolidated
A wording slip nearly banned authoring in the app; jaala keeps the correction and why the UI hosts conversations. design, not built

Use-cases as an independent test oracle in the graph

Claude Code transcript behind “Use-cases as an independent test oracle in the graph”, turns as they happenedClaude Code
The same turns captured in jaala, word for wordjaala · captured
jaala's consolidated view of “Use-cases as an independent test oracle in the graph”: the nodes drawn from these turnsjaala · consolidated
An objection nearly reversed the decision; the correction (use-cases come from the graph, not the spec) is kept with it. design, not built

Drill-navigation canvas

Claude Code transcript behind “Drill-navigation canvas”, turns as they happenedClaude Code
The same turns captured in jaala, word for wordjaala · captured
jaala's consolidated view of “Drill-navigation canvas”: the nodes drawn from these turnsjaala · consolidated
An interaction model settled in chat, then specced, built and shipped in one run, with the open question left visible.

Logging pipeline: cheap transport, not less logging (thoga)

Claude Code transcript behind “Logging pipeline: cheap transport, not less logging (thoga)”, turns as they happenedClaude Code
The same turns captured in jaala, word for wordjaala · captured
jaala's consolidated view of “Logging pipeline: cheap transport, not less logging (thoga)”: the nodes drawn from these turnsjaala · consolidated
Logging was 90% of the load; the call was to make each write cheap, not to log less.

Find your way

  • The tree on the left shows your projects, and the sessions and topics inside them.
  • The canvas shows the node you pick as a card, with its children as cards below it. Open a card to read it in full. A button switches the canvas between this list and a graph view of the same nodes. When a node has detail beneath it, a drill-in button takes you one level deeper.
  • Search sits at the top of the window. Press Cmd+P (Ctrl+P on Windows and Linux) to jump to it. It finds anything across the graph.
A short tour of jaala.

Codex

jaala reads sessions from OpenAI's Codex too. They land in the same graph as your Claude Code work, and you organize, consolidate and search them the same way.

Real sessions

Codex Conversation Title Derivation

Codex transcript behind “Codex Conversation Title Derivation”, turns as they happenedCodex
The same turns captured in jaala, word for wordjaala · captured
jaala's consolidated view of “Codex Conversation Title Derivation”: the nodes drawn from these turnsjaala · consolidated
Codex gives no conversation titles; the fix borrows the title ladder jaala already used for Claude.

Conversation Replaces Driver-Side Topics

Codex transcript behind “Conversation Replaces Driver-Side Topics”, turns as they happenedCodex
The same turns captured in jaala, word for wordjaala · captured
jaala's consolidated view of “Conversation Replaces Driver-Side Topics”: the nodes drawn from these turnsjaala · consolidated
Drivers expose conversations, not sessions; each tool's own nouns stay out of the product.

Title Interface for SourceDriver Trait

Codex transcript behind “Title Interface for SourceDriver Trait”, turns as they happenedCodex
The same turns captured in jaala, word for wordjaala · captured
jaala's consolidated view of “Title Interface for SourceDriver Trait”: the nodes drawn from these turnsjaala · consolidated
Three ways to put titles into the driver contract; the simplest won, and the other two stay on record.

SourceDriver Catalog API Design

Codex transcript behind “SourceDriver Catalog API Design”, turns as they happenedCodex
The same turns captured in jaala, word for wordjaala · captured
jaala's consolidated view of “SourceDriver Catalog API Design”: the nodes drawn from these turnsjaala · consolidated
The agent drifted from the agreed interface twice; jaala kept the agreed shape and the correction.

In-Memory Source Registry Implementation

Codex transcript behind “In-Memory Source Registry Implementation”, turns as they happenedCodex
The same turns captured in jaala, word for wordjaala · captured
jaala's consolidated view of “In-Memory Source Registry Implementation”: the nodes drawn from these turnsjaala · consolidated
'The registry should not be in the DB', decided in one line, then built and landed with Codex capture.

Privacy

Stored on your device: your graph, your sessions, your files, encrypted. We never receive them, and we cannot recover them.

Sent to us: sign-in and licence checks, anonymous usage counts (you can turn these off), and feedback only when you send it.

AI features: jaala calls your own Claude Code on your machine, with your own Anthropic plan. jaala does not send your graph to us or to anyone else.

Read the privacy policy →

FAQ

Where is my data stored?

On your own device, in an AES-256 encrypted database (SQLCipher): your graph and the files you attach to it. The encryption key is held in your operating system's keychain.

Can you see my data?

No. We never receive your graph, your sessions or your files. Nothing of yours passes through our servers.

Can you recover my data if I lose it?

No. Your data is encrypted on your device with a key only your device holds. We never have it, so no one, including us, can recover it. Keep your own backups.

How do I back up my graph?

Quit jaala, then copy the .jaala folder in your home folder (~/.jaala on macOS and Linux, %USERPROFILE%\.jaala on Windows). Copy the whole folder, not just graph.db: while jaala runs, recent changes can sit in a side file next to it.

To restore, quit jaala, put the folder back, and start jaala. A backup opens only on the same computer and the same user account, because the key stays in that account's keychain.

Does jaala work offline?

Yes. The app runs locally. It needs the internet only for sign-in, licence checks, and AI features through Claude Code.

Why do I need Claude Code?

jaala builds its graph from your Claude Code and Codex session history, and its AI features run through your own Claude Code. That keeps your data and your model usage under your own account.

It's local-first, so why do I have to sign in?

Sign-in is only for your licence. Your graph, your sessions and your files never leave your machine. See the privacy policy.

Is it open source?

No. jaala is closed source.

How do I get access?

During the beta, by approval, in waves. Join the waitlist: sign in with Google or GitHub and tell us in a line how you can help us during the beta. We email you when you're approved, with the link to the download page.

What happens after the beta?

During the beta, every feature is free for approved users until 15 January 2027. After that, jaala opens to everyone and costs $5 a month, billed yearly ($60 plus taxes), or $4 a month, billed yearly ($48 plus taxes), for beta users who qualify: at least 7 useful reports (bugs or feature ideas with enough detail to act on) from the in-app Support button or by email, at least 30 days of use and at least 10 completed curation runs, with usage data on. We decide who qualifies. There is also a lifetime licence for $500, paid once. Billing is yearly only. See pricing.

What does "lifetime" mean?

The life of the product, not the life of the buyer. A lifetime licence is one payment for jaala and its updates for as long as we make jaala. Your bug reports and feature requests go to the front of the queue. If we ever discontinue jaala, every paying user, yearly or lifetime, gets a final version that works without sign-in or licence checks, forever.

Do you send marketing email?

No. We only email you about your account, billing and security. Product news lives on the changelog.

What happens when the free period ends?

jaala stops opening your graph until you subscribe. Your data stays safe and encrypted on your device, and is there again as soon as you subscribe.

How do I pay?

Outside India, payments are handled by our merchant of record, a payment company that sells on our behalf. It accepts major cards and other common payment methods. These yearly plans renew automatically, and we email you a reminder before each renewal.

In India, you pay us directly by UPI or bank transfer, in rupees plus GST, and we send you a GST invoice. These plans do not renew automatically: we email you before each paid year ends, with how to pay.

Can I get a refund?

No. We don't give refunds. Use the free period, or the free trial for new users after it, to decide whether jaala is right for you. You can cancel at any time, and you won't be charged again. Billing errors, such as a double charge, are always refunded. See the refund policy.

Need help?

Click the Support button in the app's status bar, or see Support.