Skip to main content

esbi-cli

CI

Save PDFs and links. Get a wiki of notes you can read instead of the originals.

esbi-cli is a command-line worker (sb) that reads what you save (PDFs, web pages, email, clips) and writes a Markdown wiki: an executive summary, the key ideas, a glossary, verbatim quotes, a concept diagram, the figures, and links to the notes you already have. Every morning it builds an index note to start from. It works with local models (Ollama, LM Studio), with your Claude subscription, or with an API key. It follows Karpathy's LLM Wiki pattern, and the model never touches your files: it only returns JSON that the program validates and then writes.

What a note looks like

You save a link or a paper. A few minutes later there is a note like this (abridged, from a Wikipedia article, written by llama3.2 on a laptop; the notes are in English unless you set [notes].language = "es"):

## Executive summary
The Zettelkasten is a method of note-taking and knowledge management developed by Niklas Luhmann,
which involves creating a network of interconnected notes and ideas. It emphasizes the importance of
linking and connecting ideas, rather than simply collecting or storing them.

## Key ideas
- **The Zettelkasten system emphasizes the use of index cards to organize and connect ideas.** This
  approach allows users to create a network of interconnected notes, rather than a linear sequence of thoughts.

## Key terms
- **Zettelkasten**: A system of note-taking and personal knowledge management that consists of small
  items of information stored on paper slips or cards.

## Key quotes
> "Every one admits nowadays that it is advisable to collect materials on separate cards or slips of paper."

## Concepts
- [[Index card file]]

## Entities
- [[Niklas Luhmann]]
- [[Roland Barthes]]

Quotes are checked against the source word for word, glossary terms must appear in it, diagrams are drawn by code, and PDF figures are copied next to the note. Details: How a note is made.

Who it is for

People who save more than they read: papers, articles, newsletters, YouTube talks. You decide what to read from a good summary, and you can ask your own wiki questions (sb ask) and get answers that cite your notes. It runs on your machine, on macOS first (Linux works by running the same command from cron; it is less tested).

Install

brew install rubenamaury/esbi-cli/esbi-cli          # macOS (Homebrew)
# or, with uv:
uv tool install git+https://github.com/RubenAmaury/esbi-cli

Then set it up. sb init is an installer: it asks what you use and every question is optional.

sb init        # vault folder, Obsidian or not, local model / Claude subscription / API, nightly job, backup
sb doctor      # checks the whole setup and says what to fix

A walk-through from install to a first note is in Getting started; other ways to install (a wheel, a source checkout, Linux) are in Install.

First five minutes

sb add https://example.com/a-good-article     # a link
cp ~/Downloads/paper.pdf ~/Documents/Obsidian/esbi/inbox/    # or drop a PDF in inbox/
sb run                                        # reads, writes the notes (a few minutes per source)
sb today                                      # opens today's index note

In the index note, tick - [x] next to what you have read and run sb index. Ask a question with sb ask "what is an agent harness?". Getting started shows every step with its output, and A first week teaches the habit.

What is optional

The basics are PDFs and links. Everything else you can skip, or add later:

Optional What it adds How
Obsidian A nice viewer. Any Markdown editor works, or sb export for a website sb init asks; Use it without Obsidian
The nightly job Processes your queue by itself at a time you choose sb init --nightly 03:00; Run it every night
Email capture (Gmail) Forward an email or PDF to yourself and get a note sb setup email; Capture email
Web Clipper (needs Obsidian) Save pages, LinkedIn or Reddit posts, YouTube transcripts from your browser sb setup clipper; Web Clipper
Claude subscription or API Better notes than a small local model sb init --model subscription or api; Models
Version history and backup (git) If git is installed the vault is a repository: every ingested source is a commit you can review or undo. A backup is any git remote (GitHub, GitLab, a folder on a NAS), never required sb init --remote URL; Back up your vault

Privacy: what leaves your machine

You choose What is sent, and to whom
A local model (Ollama, LM Studio) Nothing
Your Claude subscription (claude-cli) The text of each source goes to Anthropic, through the official claude tool
An API key (OpenAI-compatible, Anthropic) The text of each source goes to that provider

With either cloud choice, email is never sent: it is read only by a local model ([llm.private]), and the cloud model is never shown email pages. The mail password is stored in the macOS Keychain, never in a file; the app only reads mail, it never deletes it; URLs are fetched only on public addresses. Details: Safety and privacy.

How it works

 you save                         the worker (sb run)                          you read
 ────────                         ───────────────────                          ────────
 sb add / inbox/ PDFs   ┐
 Web Clipper clips      ├─► queue ─► extract ─► read in chunks ─► model writes a   ─► wiki/ notes, index.md,
 forwarded email        ┘   (SQLite)  (web, PDF)  (notes per chunk)   JSON edit plan       log.md, wiki/daily/  ◄── start here

raw/ keeps the originals and is never edited; wiki/ holds the notes the worker writes and you edit freely; SCHEMA.md holds the conventions the model is given. The vault is its own git repository: every ingested source is a commit, so any change can be reviewed or reverted. More: How it works, Internals.

Documentation

The same pages are published as a website: https://rubenamaury.github.io/esbi-cli/ (documentation under /docs/).

Start Documentation home · How do I...?
Learn Getting started · A first week
Do Install · Models · Get sources in · Manage the queue · Read your notes · Ask your wiki · Check the wiki's health · Export a website · Email · Web Clipper · Nightly job · Back up and restore · Move to a new Mac · Update and uninstall · Without Obsidian · Offline · Troubleshooting
Look up Commands · Configuration · Vault layout · The daily index
Understand Concepts and glossary · FAQ · How it works · How a note is made · Safety and privacy · Why it is built this way · Architecture · Retrieval and RAG · Storage

Requirements

Python 3.12 or later (installed for you by brew or uv), macOS 13 or later (the PDF reader ships no build for older ones) or Linux, git (optional: version history and backup), and one way to run a model: Ollama or LM Studio locally, the Claude Code claude tool signed in to a subscription, or an API key. sb doctor checks all of it.

Status

Version 0.x: it works and is used daily, but commands and the config format can still change between minor versions; see the changelog. Quality depends on the model: a small local model writes useful but unpolished notes; a stronger model writes noticeably better ones. Known limits are in Known limits; open work is in the issue tracker.

Contributing and security

Bug reports and ideas are welcome: CONTRIBUTING.md. Please report vulnerabilities privately: SECURITY.md.

License

MIT. PDFs are read with PDFium through pypdfium2 (BSD-3-Clause or Apache-2.0); no dependency of esbi-cli is under the AGPL, and a test keeps it that way.

Metadata

Release files for esbi-cli 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for esbi-cli 0.3.0
File Size Uploaded
esbi_cli-0.3.0.tar.gz 162.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for esbi-cli 0.3.0
File Interpreter ABI Platform
esbi_cli-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 363.2 kB

Release files / esbi_cli-0.3.0.tar.gz

Download URL esbi_cli-0.3.0.tar.gz
Size 162.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2185e922557a1a2c597d72eb3a7e85d9ec98f3942b61bb9a3e585b9328b06e18
BLAKE2b-256 checksum
How to use checksums
9cbb22bd7560f9e867c7a8543c9fea758ef51a683858576be7f73249bd97a567
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.

Transparency log

Release files / esbi_cli-0.3.0-py3-none-any.whl

Download URL esbi_cli-0.3.0-py3-none-any.whl
Size 200.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5c8a6337f25bc62165b1b72dc240ffa68070b044bdb4de3cffec430f7c79777a
BLAKE2b-256 checksum
How to use checksums
25c90377cb99e37c2d04b37a5700234074d5e10a6424b834b986d6868d22cca9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.

Transparency log

Release history Release notifications | RSS feed

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

This release

0.3.0 This release

2 release files

0.2.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page