← receptionos.com
Open source · MIT · Obsidian plugin

AI Company Stack

Claude Code, Obsidian, ClickUp, Google Workspace and Gmail — unified into one application. Self-healing context modules for compounding AI productivity.

local-first · encrypted · zero telemetry · macOS
ObsidianObsidian
ClickUpClickUp
Google WorkspaceGoogle Workspace
GmailGmail
Claude CodeClaude Code
Modular Context
one app
How it works

Sources → Wiki → Schema

The same knowledge in three states: raw capture → a graph of typed entities → a schema the agent reads like a map. Scroll to watch it form.

SourcesWikiSchema

Raw capture: calls, emails, voice memos, notes. The knowledge exists — but it is scattered, unstructured, invisible to an agent.

Typed entities

A note has no type. An entity does.

Where does this go? There are exactly two legal answers: an entity that follows a schema, or a workspace folder with an expiry date. There is no third. The test is one sentence — will anyone edit this after the action ends? No → workspace. Yes → entity.

01

Knowledge

moduldeal

What the company knows, and what it is trying to close. Both carry a current-state section and a dated log, so the file describes now — not its own archaeology. A deal is the one type that switches contract mid-life: living-state while it is open, write-once the moment it is won or lost.

02

People

osoba

One card per person, in one folder — the only legal target of a person edge. Anything referring to someone points at that node, never at a name buried in a paragraph.

03

Record of time

spotkanieeventlog

A meeting, a dated event, a session log. Evidence that something happened — not a working document, and not the place where the current state lives.

Edit contract · modul, osoba, open deal

Living-state

A state section updated in place, plus a dated log. A fact from a conversation is woven into the state — no (24.07: …) postscript at the end of the file, no ## Change History.

Edit contract · spotkanie, event, log, closed deal

Write-once

Written once, then left alone. A dated event gets its own file, and it has to actually change the entity it points to — otherwise the fact stays in the meeting summary.

A MECE cascade settles the type — first match wins — so it is never a matter of taste, and a new file with no resolvable type fails the lint. The split separates the journal from the state: the journal swells and nobody reads it, the state stays short and that is exactly why it stays true.

Schema as code

A FAIL blocks the commit.

The write contract is not held up by a reminder in a prompt. Three lines of execution hold it up: the hook that runs after a write hands the error straight back to the agent, then pre-commit and CI keep a FAIL out of the repository.

PostToolUsepre-commitCI PostToolUse reports · pre-commit and CI block
What it checks

Fields, edges, paths

A missing or unresolvable type:, a dated heading outside a log, a bare operational number where a dated pointer belongs, a person card created off the alias map — each one raises a FAIL, and a FAIL does not get committed. Parts of the contract are still inside a migration window and warn instead of failing until their cut-off date; that window sits in the schema, not in someone's head. Changing the schema changes how the system behaves, so it goes through review like code, not like a note.

Freshness

Git counts it, not the frontmatter

updated: was a lie from week one: a human never refreshed it, an agent refreshed it selectively, and one mass operation zeroed the signal across a hundred files at once. Now a hook stamps it before the commit and staleness is read from repository history, per entity type. Mechanical batches carry a marker and drop out of the count.

hubs · 7dmodul · 60dosoba · 180dactive deal · 30d

Anthropic draws the line explicitly: A real guardrail needs to be deterministic, and the enforcement methods are hooks and permissions (claude.com/blog). Here that applies to one thing precisely: the write contract, checked by the schema lint in those three places. Rules that reach past the repo — what gets sent, published or pushed where — stay owner decisions, not hooks.

AI Company Stack

Four layers. One operator.

The vault is not a note-taking app — it is the context Claude Code runs your company on. Each layer is a set of concrete skills that self-heal and compound in value.

The Obsidian plugin

The operator lives where the knowledge lives.

Real zsh terminals inside Obsidian — not a command runner. Claude Code or Codex as the provider.

Multi-terminal · up to 8 sessions

Single / side-by-side / 2×2 / 2×3 / 2×4. Every session gets its own geometric glyph.

Agent tracker

Each session's state: Working → To Review → Standby, with idle detection. You see which agent needs attention.

Smart Session Restore

On open, a modal sorts sessions (Needs attention / Idle / Archive) and auto-resumes Claude — no hidden skill re-runs.

Wiki-link autocomplete

[[ in the terminal searches your notes; drag-and-dropped files paste shell-escaped paths.

Knowledge graph

Force-directed graph of note dependencies — custom canvas physics, bloom-in, hover highlight.

Compact + fullscreen

48px sidebar for maximum space; a fullscreen overlay when the terminal should own the screen.

Workflows, not loops

Repeatable multi-agent work is a graph, not a loop.

In a loop the intermediate results land in the context window and poison it. In a graph the plan sits in a script, the intermediate results sit in its variables, and the main session receives only the answer. The edges of an agent graph behave like the edges of a knowledge graph: each one carries a type and a contract.

Fan-out

One question, several agents working in parallel, one merge at the end. You buy breadth without paying for it in the main context.

Pipeline

Stage N+1 starts from stage N's artefact with a fresh window. The plan lives in the script, so it outlives a context that does not.

Adversarial verify

A second agent tries to break the first one's output before it ships. Nobody grades their own homework, and the reviewer starts clean.

Judge panel

Several graders score the same artefact against one rubric. The spread between them is the signal, not the average.

The brake: the main value of subagents is in preserving that valuable root context and managing token-heavy operations — Simon Willison (simonwillison.net). Deterministic workflow tooling in Claude Code is one implementation of these four shapes; the architecture is the part that carries over to anything else. A prettier diagram is not a reason to add a stage.

New in the skills library

/workflow-design

A wizard that turns these four shapes into a runnable graph: a short interview about priorities, a topology pick with ASCII previews, adversarial gates per stage — out comes a validated script. This very release shipped through workflows it designed.

Browse the skill on GitHub →
Skill library

A curated skills library. One click.

The gallery renders from the live registry.json — the exact library the plugin installs. Every skill is rated (quality, difficulty, scope), prerequisites visible.

loading…

Acts on the real world

Google Workspace MCP — 25 tools.

A bundled MCP server. The same operator that maintains the vault reads and acts on your inbox, calendar and documents. Multi-account, OAuth, encrypted.

Why both at once

The prompt gets thinner only because the contract got heavier.

rev 2.0 · aug 2026Shipped alongside native Workflows in Claude Code — the loop-era artefacts retired to the archive with it.

You cut — the procedure

  • Steps and behaviour checklists
  • Examples that narrow the search space
  • Reminders restating what hooks already enforce

You keep — the contract

  • Boundaries and scope
  • Definition of done
  • Goal and audience
  • Hard rules — already a lint, not a paragraph

Anthropic removed more than 80% of Claude Code's own system prompt for the Claude 5 generation of models, and said it plainly: we were overconstraining Claude Code, both through our system prompt and in our CLAUDE.md files and skills (claude.com/blog). Those are exactly the artefacts this methodology is made of.

Get started

Configure your modular context

Click through a few steps — archetype, goals, character, capabilities — and we assemble a ready setup prompt plus a preview of your vault.

Who are you?
Pick an archetype — it sets the vault structure and default capabilities.
Your goals and character
What you want to achieve and how your AI operator should behave.
Goals — pick any
Operator character
What do you add?
A capability adds folders and skills. Defaults come from the archetype.
Your identity
Fills the placeholders in the vault.
Your vault is ready
Structure preview + a prompt to paste into Claude Code.
~/modular-context

            
Install the plugin · Obsidian (BRAT) …or the standalone desktop app — macOS 11+ · Apple Silicon (M1–M3) · ~97 MB · preview/experimental Download the Mac DMG (Apple Silicon)
First launch on macOS — read this (unsigned, adhoc)

The app is unsigned (adhoc) and not notarized. macOS Gatekeeper will block it on first launch — expected, not a bug. The mature install path is the plugin/BRAT; the DMG is a standalone preview.

  1. Right-click Modular Context.appOpen → in the dialog click Open again.
  2. If macOS (Sequoia+) hides right-click → Open, run in Terminal:
    xattr -dr com.apple.quarantine "/Applications/Modular Context.app"

Verify the downloaded file:
shasum -a 256 ~/Downloads/ModularContext-arm64.dmg
SHA-256: <fill in after release>

The code is open-source (MIT) — you can verify and build it yourself.

Step 1 / 5
Local-first

Your data stays with you.

OS Keychain — tokens encrypted (macOS Keychain / DPAPI / libsecret)
0600 sidecar — credentials readable by you only
Zero telemetry — no cloud, no phone-home
Open source

receptionOS's flagship open-source project.

MIT. Monorepo: Obsidian plugin, Google Workspace MCP server (v1.3.0), curated skill library. Desktop app (DMG) — preview, macOS arm64.

klemensgc/modular-context-obsidian-plugin

Karpathy LLM Knowledge Base + Gmail & G-Cal — multi-account MCP server for Claude Code. Encrypted, local-first. Built and maintained by the receptionOS team.

MITv2.4.0TypeScriptmacOS · Windows · Linux
90stars on GitHub
Star on GitHub