Propose-then-execute · 100% local possible · open-source

You speak.
The agent structures.

An AI-powered second brain that writes your knowledge base for you. Drop a raw thought — CortX identifies entities, creates Markdown files, weaves wikilinks. Git commits everything automatically.

Windows (NSIS) · macOS (DMG) available · Linux coming soon · free · open-source (ISC)
CortX main UI — chat, knowledge graph, and agent activity in a single resizable window
// THE PROBLEM

Obsidian, Notion, Logseq — they all assume you will structure your own thinking.

The #1 barrier to a real "second brain" isn't the tool. It's the cognitive overhead of maintenance: naming, tagging, linking, filing.

CortX brings that cost to zero. You type raw text. The agent does the rest.

// EVERYDAY VALUE

What changes in your daily life

Five concrete moments where CortX removes the friction of remembering.

☕

After a coffee

Type 3 lines about who you saw, what they're working on, what they said. The agent updates their profile, links to their company, logs the interaction with today's date — automatically.

📚

Reading a paper

Drop the PDF into the library. docling extracts clean text + tables. The agent finds which of your existing topics it touches, suggests new connections, and you can ask questions directly against the contents.

🎙️

After a meeting

Paste your raw notes. The agent extracts decisions, action items, mentioned projects, attendees — proposes the diff. You hit Approve. Done in 5 seconds.

🤔

"What did I know about…"

Ask the chat. The hybrid RAG retrieval pulls the right files, follows wikilinks for context, and the agent answers citing your own notes. No more hunting through folders.

💡

In the background

Idle Mode quietly explores your graph and surfaces patterns: contradictions between two notes, missing relationships, recurring themes across projects. Promote any insight to a permanent fiche.

🌐

Need fresh context

Type /wiki Notion or /internet latest xAI news. Wikipedia + a live DuckDuckGo search are pulled in, summarized, woven into your existing notes — proposed for review.

// 6 WAYS TO INTERACT

One base, many entry points

Markdown stays the source of truth. Pick how you want to talk to it today.

Natural-language input → structured edits

Type a thought, paste meeting notes, drop a quote. The agent reads context from your base (RAG + multi-hop), figures out which entities are involved, and proposes a diff. Streaming token-by-token, abortable mid-generation.

  • › /ask — read-only Q&A with citations
  • › /brief topic — generate a structured fiche
  • › /synthesize — synthesize across multiple notes
  • › /digest — daily/weekly recap from your journal
CortX · chat
Lunch with Jordan Hayes. Leaving Google DeepMind for xAI as Head of Research. Mentioned the Grok-3 fine-tuning release slipped to Q4.
▸ proposing 3 changes
~ Network/Jordan_Hayes.md — position updated
+ Companies/xAI.md [NEW]
~ Domains/AI_Research.md — Grok-3 delay note

Open any Markdown file. Edit. Save.

CortX never locks your files. Open the preview pane, switch to edit mode, type freely. Ctrl+S commits your changes through Git and reindexes everything.

  • › Live indicator shows which element drives the graph node label (frontmatter title · first H1 · filename)
  • › Rename a title once → all [[oldTitle]] across the entire base get rewritten automatically
  • › Delete from the UI → file removed from disk, entities, relations, FTS, then committed
  • › Files stay plain .md — Obsidian, VS Code, any editor still works
Jordan_Hayes.md · edit
---
type: person
title: Jordan Hayes ⬡ graph label
company: [[xAI]]
---
# Jordan Hayes
Head of Research at [[xAI]] since 04/2026.
Working on [[Grok-3]] fine-tuning. ⬤
Ctrl+S → commit + reindex

See your knowledge as a living graph

Cytoscape · cose-bilkent renders every entity and relation in real time. Filter by type, search by name, double-click to expand neighborhoods. Library documents appear as nodes too — bidirectional auto-linking shows mentions both ways.

  • › 7 entity types · 19 inferred relation kinds
  • › Idle Mode highlights the nodes & edges currently being explored
  • › Click a node → preview the file, then jump to edit
graph
Jordan xAI Grok-3 AI Research PDF: Brief

Drop a PDF. Ask it questions.

PDF, DOCX, PPTX, XLSX, HTML, TXT, MD — all extracted by the docling Python sidecar, chunked, vectorized with e5-small embeddings. The library becomes part of the same RAG context as your notes.

  • › 3 search modes — lexical (FTS5), semantic (cosine), hybrid
  • › Auto-link both ways — [[DocTitle]] in your notes binds to library docs; library docs mentioning your entities create reverse links
  • › Tables, headings, page numbers preserved by docling
  • › Cache + embeddings persisted — pay extraction cost once
library
PDF LLM_Scaling_Laws_2026.pdf 42 chunks · 1.2 MB
DOCX Q1_Strategy_Memo.docx 8 chunks
XLSX AI_Vendors_Benchmarks.xlsx 14 chunks · 3 sheets
PPTX Onboarding_Deck.pptx 22 slides
↳ Indexed via docling + e5-small embeddings (384d)

Wikipedia + the open web — no API key

Two directives, three modes. Web content is fetched, cleaned (main content extracted, nav/footer stripped), language-aware (FR/EN with English fallback) and injected into the agent's context window before it proposes any change.

  • › /wiki Notion — full Wikipedia article → proposed .md file
  • › /internet https://... — single URL, readable main content only
  • › /internet <query> — DuckDuckGo HTML SERP → top ~4 pages fetched in parallel
  • › /internet alone — uses the rest of your sentence as the query
/internet
$ Update @Grok-3 with the latest news /internet
▸ DuckDuckGo SERP: 4 pages fetched in parallel
[1] techcrunch.example/grok3-q4 ✓
[2] venturebeat.example/xai-update ✓
[3] theverge.example/llm-release ✓
[4] bloomberg.example/xai-funding ✓
▸ proposing patch to Domains/Grok-3.md

Send a note. Get a proposal. Without opening the app.

Connect a Telegram bot token once, whitelist your chat ID, and CortX becomes reachable from anywhere. Type a raw thought, paste meeting notes, send a photo, or use a command — the agent processes it through the same pipeline as the desktop chat, then sends back a structured proposal with inline ✔ / ✗ buttons. Validate remotely. Your base gets a commit.

  • › Plain text → agent pipeline → proposed file diff sent back to Telegram
  • › /ask <question> — Q&A against your base, citations in reply
  • › /note <text> — force-capture mode, skips Q&A detection
  • › /status — short KB summary (file count, last action)
  • › Rapid messages are debounced & batched — no duplicate proposals
  • › Accept/reject also works from the desktop app — both stay in sync
  • › Send a photo — OCR extracts the text automatically, then routes it through the agent as a capture intent
  • › Ego-subgraph PNG — when the reply touches a known entity, CortX renders and attaches its relationship graph inline
  • › PDF citation pages — if the agent cites a library document, the relevant page(s) are sent as a photo album alongside the text reply
Telegram · @CortXBot
Lunch with Ryan Park. Leaving Meta AI to co-found Archon AI, raising Series A. Said they're targeting inference optimization.
C
📥 CortX — 2 file(s) to review:
✨ Network/Ryan_Park.md
✨ Companies/Archon_AI.md
🕸️ Subgraph attached: Ryan Park × 5 links
C
✅ Applied!
✔ Network/Ryan_Park.md
✔ Companies/Archon_AI.md
🔗 Commit: a3f9c12
🖼️ Photo — business card
[ image ]
C
🔍 OCR detected — text extracted:
"Sarah Mitchell — a16z, +1 415 …"
📥 1 file to review:
✨ Network/Sarah_Mitchell.md
CortX Telegram bot — proposal with inline accept/reject buttons
// THE DOCLING ADVANTAGE

Documents that actually get understood.

Most "PDF chat" tools dump raw text and lose half the meaning. CortX uses docling, IBM's open-source document parser — preserving tables as tables, headings as structure, page numbers as anchors, equations and lists faithfully. The result: the agent quotes the right page, your graph links to the right document.

📊
Tables → tables

Spreadsheet-style data stays queryable, not flattened into prose.

📑
Headings preserved

Section structure feeds chunk metadata for accurate retrieval.

📍
Page anchors

Citations point to a real page range, not a vague excerpt.

🔢
Math & lists

Equations, ordered lists, code blocks survive the round trip.

🔗
Bidirectional auto-linking

Library docs ↔ KB entities cross-link without a single tag.

🧠
e5-small embeddings

384-dim vectors per chunk, cached locally. Fast hybrid search.

// FEATURES

Everything a second brain should do

An agent that writes your files — not a chatbot that just talks.

Structuring agent

Type raw text — the agent identifies entities (people, companies, domains, projects, journal entries), creates or updates Markdown files, adds [[wikilinks]] automatically.

Propose-then-execute

Every action is previewable (before/after diff) and requires explicit approval. Nothing is written to disk without your sign-off.

Interactive knowledge graph

Real-time Cytoscape · cose-bilkent. 7 entity types, 19 inferred relation kinds. Library docs as nodes. Idle Mode highlights live exploration.

Hybrid search + multi-hop

FTS5 full-text + semantic embeddings. After initial retrieval, multi-hop expansion follows wikilinks & library chunk references for cross-file context.

Document library (docling)

Import PDF, DOCX, XLSX, PPTX, HTML, TXT. docling extracts clean structure; e5-small embeddings power lexical / semantic / hybrid search.

Idle Mode + draft promotion

Background loop explores your graph: contradictions, gaps, recurring patterns. Review the draft queue, dismiss, or promote insights to permanent fiches.

Web & Wikipedia

/wiki imports an article, /internet fetches a URL or runs a DuckDuckGo search. No API key, no account, language-aware.

Automatic Git versioning

Every accepted action = a commit (isomorphic-git). Full history, one-click undo (git revert), built-in agent_log audit table.

Manual edit + Ctrl+S

Edit any file in-app. Save commits + reindexes. Live indicator shows which element drives the graph node label (frontmatter / H1 / filename).

Title rename → wikilink rewrite

Change a title once. CortX rewrites [[oldTitle]] across the entire base in one pass. Toast tells you how many links updated.

Streaming + abortable LLM

Watch the agent think token-by-token. Cancel mid-generation if the direction is wrong. Works on Anthropic and any OpenAI-compatible endpoint.

EN / FR bilingual

Full UI in English and French. Web search and Wikipedia run in the active language with English fallback. Idle insights generated in your language.

Telegram bot

Send a note from anywhere — the bot relays it through the full agent pipeline and returns a proposal with inline ✔ / ✗ buttons. Send a photo and OCR extracts the text automatically. Mentions of known entities attach an ego-subgraph PNG. Library citations arrive as a page photo album. Accept remotely, get a commit hash back.

// DEMO

One raw note → 3 files updated

The agent understands context, decomposes entities, proposes changes. You approve.

Your input

"Coffee with Sarah Kim. She left OpenAI to co-found Redline, an AI safety startup. Mentioned that Anthropic's Constitutional AI V2 paper drops Q3 — apparently it addresses the scalable oversight problem directly."

Agent proposal
~ Network/Sarah_Kim.md
✏️ Status: OpenAI → Redline (co-founder)
➕ Interaction: coffee 04/26/2026
+ Companies/Redline.md [NEW]
📄 AI safety startup · contact Sarah Kim
~ Domains/AI_Safety.md
➕ News: Constitutional AI V2 paper Q3
➕ [[Anthropic]] · scalable oversight

From a single raw note, the agent identifies 3 people, 3 companies, 1 domain, modifies 2 files, creates 1 new file, and maintains all cross-links — in under 3 seconds.

// YOUR DATA, YOUR MODEL

Run local or in the cloud

Plug in a local LLM for full privacy, or an API key for maximum reasoning power.

100% Local

Ollama · llama.cpp · LM Studio. Zero data leaves your machine. No account, no subscription, no key check.

  • ✓ Complete privacy — air-gapped capable
  • ✓ No API key required
  • ✓ Free, unlimited usage
  • ✓ Works fully offline
Recommended: Qwen3 14B · Gemma3 12B · Mistral Small 24B

Cloud API

Claude (Anthropic) or any OpenAI-compatible /v1/chat/completions endpoint. Best reasoning quality.

  • ✓ Claude Opus 4.7 / Sonnet 4.6
  • ✓ Real-time streaming + abortable
  • ✓ Extended reasoning on complex notes
  • ✓ Key stored locally, masked in UI, never re-uploaded
Compatible: Anthropic · OpenAI · any /v1/chat/completions endpoint
// FIRST-TIME SETUP

From download to first note in 5 steps

Most people are productive within 10 minutes — including LLM setup.

  1. 1

    Install

    Grab the latest release for your OS:

    • › Windows — CortX-Setup-x.y.z.exe (NSIS)
    • › macOS — CortX-x.y.z.dmg (universal)
    • › Or build from source — see Quickstart below
  2. 2

    Pick a base folder

    On first launch, Settings → Base path. The default is ~/Documents/CortX-Base/ — change it if you want your notes living elsewhere (e.g. inside an iCloud / OneDrive folder).

    A Git repo is auto-initialized inside it. Every accepted action becomes a commit.

  3. 3

    Choose a LLM

    Two paths — pick one:

    Local (private, free)

    Install Ollama or LM Studio. Pull a model (ollama pull qwen2.5:14b). In Settings → Provider = OpenAI-compatible, endpoint = http://localhost:11434/v1. No API key needed.

    Cloud (best quality)

    Get a key from Anthropic. Paste it into Settings → Provider = Anthropic. Key stored locally, masked in the UI as ***.

  4. 4

    (Optional) Enable the document library

    If you want to import PDF / DOCX / PPTX / XLSX, install Python 3.10+ then:

    pip install docling sentence-transformers

    First import bootstraps docling models (~10 min once). After that, indexing is fast and offline.

  5. 5

    Type your first note

    Open the chat panel. Drop in a real thought — a person you met, a paper you read, a project you're starting. Within seconds the agent will propose a structured set of files. Hit Accept. Watch your graph come alive.

    › That's it. Every accepted change is a Git commit. Every undo is one click.

// WHY NOT OBSIDIAN?

How CortX is different

Mem.ai Khoj Obsidian + AI CortX
Agent writes the files✕✕✕✓
Local Markdown files✕✕✓✓
100% local LLM possible✕✓✕✓
Knowledge graph built-in✕✕✓ (plugin)✓
Propose-then-execute✕✕✕✓
Git versioning + undo✕✕✕✓
docling document import✕partialpartial✓
// QUICKSTART (DEV)

Build from source

Node.js 20+ · Git · a local or cloud LLM · (optional) Python + docling

terminal
# clone
git clone https://github.com/gcorman/CortX.git && cd CortX

# install
npm install

# run
npm run dev       # dev mode with HMR
npm run dist      # build installer for current OS (Windows NSIS / macOS DMG)
npm run rebuild   # if better-sqlite3 fails — recompiles native bindings
// FAQ

Common questions

Is my data uploaded anywhere?
In local mode (Ollama / llama.cpp / LM Studio), nothing leaves your machine. Even with the Anthropic / OpenAI option, only the prompts you choose to send go to the API — your full base, your library files, your Git history all stay on disk.
Can I still edit my notes in Obsidian or VS Code?
Yes. The base folder is plain Markdown files plus a hidden _System/ directory. Use whatever editor you like. CortX polls the filesystem and reindexes when it sees changes.
What happens if the agent makes a mistake?
Every accepted action is a Git commit. The audit log lets you revert any single change with one click — no merge surgery, no lost data.
Does it work offline?
100% offline if you use a local LLM. Web fetch (/wiki, /internet) obviously needs a connection, but the rest — chat, graph, library, idle mode — runs without one.
Do I need Python?
Only if you want the document library (PDF / DOCX / PPTX / XLSX import). The rest of CortX runs without Python. If the sidecar is missing, library indexing fails gracefully — everything else keeps working.
How big can the base get?
SQLite + FTS5 handles millions of rows comfortably. Real-world bases of 5–10k Markdown files + a few hundred imported docs run smoothly on a laptop. The graph layout is the practical UI bottleneck, not the index.

Ready to stop filing?

You speak. The agent structures. Git versions. Everything stays on your machine.