The notebook your AI tools write to.

You learn things in Claude, Codex and Cursor every day, and most of it is gone when the session ends. LockIn keeps it. Your agents save notes over MCP, you read and witness each one, and file it under the subject it belongs to.

  • Open source, AGPL-3.0
  • Self-host with one command
  • Your model keys stay in your browser
Tray
Inbox
To witness
0
Filed today
0

Waiting for your agents…

Three agents, connected over MCP with their own tokens.

An example notebook. Witness a note, or file it under a subject.

How it works

Three steps, and the first one takes a minute.

  1. Step 1

    Connect an agent

    Make a token in Settings, named after the agent. LockIn shows the setup for Claude Code, Codex and Cursor.

    claude mcp add --transport http lockin \
      https://your-lockin/api/mcp \
      --header "Authorization: Bearer lk_pat_…"
  2. Step 2

    It saves what you learn

    Ask it to “save that to my Rust notes”. It can also search your notebook and read a note before answering.

    save_note(title, body, subject)
    search_notes(query)
    get_note(id)
    save_handoff(goal, state, next)
    pickup_handoff()
  3. Step 3

    You witness it

    Every note an agent writes is stamped with its name and waits for you to read and sign it. Revoke an agent's token any time.

Notes that keep up with the code

The code changes under your notes. LockIn keeps track of which commit each note was true at, so an agent doesn't trust a note the code has moved past.

  • Checked before it's trusted. A note about code records its repo, commit and the commit's date. The next agent runs the diff, then confirms the note, replaces it, or flags it for you.
  • One answer when notes disagree. Each shows its commit date, so you can see which describes the newer code. Witness the newer one and the old page leaves search.
  • Hand off mid-task. Hit a usage cap? The next agent, in Codex, Cursor or a new session, picks up the goal, what was ruled out, and the exact next step.
  • Every session saves itself. The Claude Code plugin files each session into your notebook when it compacts and when it ends.
Search · migration locksExample

Infra · p. 8 · Claude Code

Use session locks for migrations

Replaced by p. 19. This page is history.

Code a1b2c3d · committed 3 Oct

Infra · p. 19 · Codex · witnessed by you

Never use session locks behind pgbouncer

Replaces p. 8. This page describes code 9 days newer.

Code 9f8e7d6 · committed 12 Oct

Search and Ask now answer from p. 19.

Ask your notes

Chat with any model about what you've written, and see which pages each answer came from.

  • In your browser on WebGPU, free and private, or on your own machine with Ollama or LM Studio.
  • Grounded in your notes. Questions search your pages first and the reply lists what it used.
  • No keys on our servers. The browser talks to your model directly.
Ask · RustExample

When does Rust move a value instead of copying it?

Any value whose type isn't Copy moves. Assigning a String to a new variable hands ownership over, and the old name can't be used again.1

Integers, bool and char are Copy, so assignment duplicates them and both names stay valid.2

  1. 1Rust › Ownership and borrowing
  2. 2Rust › The Rust Book, ch. 4.1

Qwen3 1.7B, running in this browser

Rust · NoteExample

Ownership and borrowing

Every value in Rust has exactly one owner. When the owner goes out of scope, Rust drops the value.

let s2 = s1;   // ownership moves to s2

Read without distraction

Any note opens full screen: the title, your words and your code on clean paper, and nothing else. Esc brings you back.

Yours to keep

LockIn is open source under AGPL-3.0. Use the hosted notebook, or run your own with Docker: Postgres, the app, and an optional service for PDF text and server-side search.

git clone https://github.com/Sky-walkerX/LockIn.git && cd LockIn
cp .env.example .env        # set AUTH_SECRET: openssl rand -base64 32
docker compose up -d        # http://localhost:3000
License
AGPL-3.0
Database
Your Postgres
Export
Markdown, JSON
Agents
Any MCP client

Start a notebook that keeps up with you.

Connect your first agent in a minute. Your notes stay exportable, and the code stays open.