vault-sync: 2026-09-16 00:00 (jimmy)
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
# Disclaimers & Legal Notices
|
||||
|
||||
---
|
||||
|
||||
## I'm not an expert
|
||||
|
||||
Let me be upfront: **I am not an expert in agentic platforms.** I'm a PhD researcher who needed help and built something that works for me. This project is an accumulation of personal needs, not a polished product from someone who knows all the best practices.
|
||||
|
||||
The code might not be optimal. The prompts might not be perfect. The architecture might make a seasoned developer cringe. **And that's okay.** I'm sharing this because I believe it can help other people in my same situation, not because I think it's the definitive way to do things.
|
||||
|
||||
If you know prompt engineering, agent platforms, or Obsidian better than I do (and chances are you do), **please contribute.** Every PR is welcome. Every suggestion, every critique, every improvement. I want this to get better, and I know it will get better faster with help from people who actually know what they're doing.
|
||||
|
||||
---
|
||||
|
||||
## On the health and wellness agents
|
||||
|
||||
> **This needs to be crystal clear, so I'm going to say it plainly.**
|
||||
|
||||
The **Food Coach** and **Wellness Guide** agents are **AI-generated output. Nothing more.** They are not medical professionals. They are not licensed therapists. They are not dietitians. They are language models following instructions I wrote based on my own personal needs.
|
||||
|
||||
**I take absolutely no responsibility for the output of these agents.** Specifically:
|
||||
|
||||
- The Food Coach agent **does not provide medical advice.** Its meal plans, calorie calculations, and dietary suggestions are AI-generated and may be inaccurate, incomplete, or inappropriate for your specific health situation. **Always consult a real doctor or registered dietitian** before making changes to your diet, especially if you have medical conditions.
|
||||
|
||||
- The Wellness Guide agent **does not provide therapy.** It offers general emotional support, grounding techniques, and mindfulness exercises, but it is **not a substitute for professional mental health care.** It cannot diagnose anything. It should never be your only source of support. **If you are in crisis, contact a real mental health professional or emergency service immediately.**
|
||||
|
||||
- The health agents are designed as **personal wellness companions.** Think of them as a structured journal with suggestions, not as healthcare providers. They were built because I personally needed help tracking my nutrition and processing my thoughts between therapy sessions. They helped me. They might help you. But they come with **zero guarantees.**
|
||||
|
||||
- **No warranty, no liability.** This is an open-source project provided "as is". I am not responsible for any decisions you make based on the output of any agent in this system. Use your own judgment. Consult real professionals for real health decisions.
|
||||
|
||||
Both health agents are **opt-in** during onboarding. You can use the Crew purely for knowledge management if you prefer.
|
||||
|
||||
---
|
||||
|
||||
## On AI models and hallucinations
|
||||
|
||||
> **This software provides prompts. It does not provide an AI model.**
|
||||
|
||||
I wrote the instructions that the agents follow. The actual output is generated by the large language model (LLM) running underneath, and I have zero control over what it produces at runtime.
|
||||
|
||||
**What this means in practice:**
|
||||
|
||||
- **LLMs are stochastic.** They generate text probabilistically. The same question can get a different answer each time. Sometimes the answer is great. Sometimes it is confidently wrong. This is not a bug in my code. This is how the technology works.
|
||||
|
||||
- **LLMs hallucinate.** They can and do invent facts, fabricate citations, produce incorrect calculations, and generate plausible-sounding nonsense. If an agent tells you something that matters (a date, a number, a medical claim, a legal statement), **verify it independently.** Do not blindly trust AI-generated text.
|
||||
|
||||
- **This project is designed and primarily tested with Anthropic's Claude.** Claude has alignment training (RLHF, Constitutional AI) and safety filters that make it behave reasonably within the prompts I wrote. If you swap in a different model (through a fork, a configuration change, or any other means), all bets are off. Models without adequate safety training can produce harmful, offensive, dangerous, or completely unhinged output, and **that is entirely your problem, not mine.**
|
||||
|
||||
- **Prompt-based safety is best-effort, not a guarantee.** I wrote the agent prompts to include safety boundaries (the Wellness Guide reminds you to seek professional help, the Food Coach tells you to consult a dietitian). But these are instructions to the model, not hard constraints. A model can ignore them. A different model might not follow them at all.
|
||||
|
||||
- **Even though I tested this myself, I cannot guarantee any quality standard.** I tested these prompts with Claude extensively and they work well for me. But "works well for me" is not a guarantee. The same prompt can produce different output across sessions, model versions, and context windows. Testing shows that the prompts are reasonable under observed conditions. It does not and cannot guarantee consistent results for everyone, every time.
|
||||
|
||||
- **I take no responsibility for any output generated by any agent, under any circumstances.** Not for hallucinated facts. Not for bad advice. Not for offensive content. Not for anything. You are using a stochastic system and you should treat its output accordingly.
|
||||
|
||||
---
|
||||
|
||||
## General disclaimer
|
||||
|
||||
This project is provided **as is, with no warranty of any kind.** I don't guarantee that it works correctly, that it won't lose your notes, or that the agents will behave as described in every situation. It's a personal project that I'm sharing openly. Use it at your own risk, back up your vault, and **please open an issue** if something goes wrong so we can fix it together.
|
||||
|
||||
---
|
||||
|
||||
## On forks and misuse
|
||||
|
||||
This project was built to help people. That's it. It's meant to support overwhelmed individuals in organizing their lives, their health, and their mental wellbeing.
|
||||
|
||||
**I take no responsibility for forks, modifications, or derivative works** that use this code for purposes other than its original intent. If someone takes this project and repurposes it to manipulate, deceive, harm, or exploit people in any way, that's on them, not on me. I explicitly condemn any use of this work for malicious purposes, including but not limited to: unauthorized data collection, psychological manipulation, impersonation of medical or mental health professionals, or any form of exploitation.
|
||||
|
||||
This is a tool for self-care and personal organization. If you fork it, please keep it that way.
|
||||
|
||||
---
|
||||
|
||||
## On privacy and data protection (GDPR and applicable laws)
|
||||
|
||||
> **Read this carefully before using the Postman agent or any feature that accesses external data sources (Gmail, Hey.com, Google Calendar).**
|
||||
|
||||
**This software is designed exclusively for personal, private use on your own data.**
|
||||
|
||||
This project can access your email inbox (Gmail via the Google Workspace CLI or MCP connectors, Hey.com via the Hey CLI) and Google Calendar, and saves content from those sources as notes inside your local Obsidian vault. **You are solely responsible for ensuring that your use of this software complies with all applicable privacy and data protection laws**, including but not limited to:
|
||||
|
||||
- The **EU General Data Protection Regulation (GDPR)**, Regulation (EU) 2016/679
|
||||
- The **California Consumer Privacy Act (CCPA)**
|
||||
- Any other national or regional data protection legislation applicable to you
|
||||
|
||||
**Specifically:**
|
||||
|
||||
- **Do not use this software to process personal data of third parties** (clients, patients, colleagues, employees, or any other individuals) without their explicit, informed consent and a lawful basis under applicable law.
|
||||
- **Emails and calendar events may contain personal data of other people.** When the Postman agent reads your inbox and saves content to your vault, that data is stored in plaintext on your local filesystem. You are the data controller for any third-party personal data you cause to be processed this way.
|
||||
- **This software does not implement any data minimization, pseudonymization, encryption, retention policies, or data subject rights mechanisms.** If you use it to process personal data of others, you must implement these safeguards yourself.
|
||||
- **The author of this software is not a data controller or data processor** with respect to any data you process using this tool. The author has no access to your vault, your emails, your calendar, or any other data you process.
|
||||
|
||||
**The author provides this software "as is" and accepts no liability whatsoever** for any violation of data protection laws arising from your use of this software, including any fines, penalties, claims, or damages resulting from improper processing of personal data.
|
||||
|
||||
**If you are unsure whether your intended use complies with applicable law, do not use the email or calendar features, and consult a qualified legal professional.**
|
||||
|
||||
---
|
||||
|
||||
## On email and calendar write operations
|
||||
|
||||
> **Read this carefully if you enable the Google Workspace CLI (`gws`) or Hey CLI (`hey`), which grant the Postman agent read/write access to your email (and calendar, for GWS).**
|
||||
|
||||
With `gws` and/or `hey` enabled, the Postman agent can **send emails, reply to threads, archive emails, delete emails, modify labels, and mark as seen/unseen** on your behalf. With `gws` specifically, it can also **create/modify/delete Google Calendar events** (Hey CLI does not operate on Google Calendar). This means:
|
||||
|
||||
- **Emails can be sent from your account.** An email sent by the AI is indistinguishable from one you sent yourself. If the AI misunderstands your intent, drafts an inappropriate response, or hallucinates content, that email goes out with your name on it. Always review drafts before confirming.
|
||||
- **Emails can be archived or deleted.** You might miss important emails if the AI archives or trashes them prematurely. Check your Trash and Archive regularly.
|
||||
- **Calendar events can be created, modified, or deleted.** Incorrect dates, times, or participants could lead to missed meetings or scheduling conflicts.
|
||||
- **Adversarial emails are a real risk.** A malicious email could contain text designed to trick the AI into performing actions you didn't intend — sending a reply, forwarding content, deleting messages, or creating events. The software includes defenses against this (prompt-level security rules, mandatory user confirmation), but **no prompt-based defense is 100% reliable.** The AI model is a stochastic system that may not follow safety instructions in all cases.
|
||||
|
||||
**The MCP fallback (`.mcp.json`) is read-only by design.** If you want email/calendar access without write risks, use MCP instead of `gws` or `hey`. MCP can read emails, create drafts, and read calendar events, but it cannot send, archive, delete, or modify anything.
|
||||
|
||||
**I built the confirmation gates and security rules to be as strict as I could.** But I'm not a security expert, and prompt-based security has fundamental limits. **Use write access at your own risk, review everything before confirming, and back up anything you can't afford to lose.**
|
||||
@@ -0,0 +1,125 @@
|
||||
# Architect
|
||||
|
||||
> Your vault's foundation, blueprint, and building code, all in one agent.
|
||||
|
||||
## What it does
|
||||
|
||||
The Architect is the first agent you meet and the one that shapes everything else. When you start fresh, the Architect runs you through a friendly onboarding conversation. Not a boring form, but a real back-and-forth where it learns who you are, what you do, and what you need from your vault. Based on your answers, it builds a personalized folder structure, creates templates, sets up naming conventions, and establishes a tag system that every other agent follows.
|
||||
|
||||
Beyond onboarding, the Architect is your vault's structural authority. Whenever a new project needs a home, a new area of your life emerges, or your existing structure starts feeling cramped, the Architect steps in. It creates folders, designs templates, updates the rules, and makes sure every agent in the crew knows about the changes.
|
||||
|
||||
Think of it as the urban planner of your knowledge city. It decides where things go, how streets are named, and what the building codes are, so everyone else can do their job without chaos.
|
||||
|
||||
## Capabilities
|
||||
|
||||
The Architect agent handles reactive, single-shot structural operations. Several of its more complex, multi-step flows have been promoted to dedicated skills that run as guided conversations:
|
||||
|
||||
| Capability | Now handled by |
|
||||
|---|---|
|
||||
| Full vault onboarding | `/onboarding` skill |
|
||||
| Vault defragmentation | `/defrag` skill |
|
||||
| Custom agent creation | `/create-agent` skill |
|
||||
| Custom agent management | `/manage-agent` skill |
|
||||
|
||||
What the Architect agent still does directly:
|
||||
|
||||
- **Folder management**: creates, restructures, and archives folders as your life evolves
|
||||
- **Template management**: builds and maintains Templater-compatible templates for meetings, ideas, tasks, projects, people, daily notes, and more
|
||||
- **Tag taxonomy**: maintains the official tag list, enforces naming rules, and prevents tag sprawl
|
||||
- **Naming conventions**: defines and documents how files, folders, and tags are named
|
||||
- **MOC (Map of Content) creation**: creates index notes that tie related topics together
|
||||
- **Vault evolution**: detects when your structure needs to grow, split, or simplify, and proposes changes
|
||||
- **Profile updates**: updates your preferences anytime (new job, new language, activating a new agent)
|
||||
- **Plugin recommendations**: suggests essential and optional Obsidian plugins with clear reasons for each
|
||||
- **Multilingual support**: responds in whatever language you write in
|
||||
|
||||
## How to use it
|
||||
|
||||
Start a conversation with any of these phrases (in any language). Some phrases invoke a dedicated skill instead of the agent directly:
|
||||
|
||||
- "Initialize my vault" / "Set up the vault" / "Onboarding" --> invokes the `/onboarding` skill
|
||||
- "Create a new agent" / "I need a new agent" --> invokes the `/create-agent` skill
|
||||
- "Edit my agent" / "Remove agent" / "List agents" --> invokes the `/manage-agent` skill
|
||||
- "Defragment the vault" / "Weekly defrag" --> invokes the `/defrag` skill
|
||||
- "Create a new area for [topic]" --> invokes the Architect agent directly
|
||||
- "Create a new project folder for [name]" --> Architect agent
|
||||
- "Add a template for [type]" --> Architect agent
|
||||
- "Update the tag taxonomy" --> Architect agent
|
||||
- "Restructure my vault" --> Architect agent
|
||||
- "I changed jobs, update my profile" --> Architect agent
|
||||
- "Create a MOC for [topic]" --> Architect agent
|
||||
|
||||
In Italian: "Inizializza il vault", "Nuovo progetto", "Configura il vault"
|
||||
In French: "Initialiser le vault", "Nouveau projet"
|
||||
In Spanish: "Inicializar el vault", "Nuevo proyecto"
|
||||
In German: "Vault initialisieren", "Neues Projekt"
|
||||
|
||||
## Example conversations
|
||||
|
||||
### First-time setup
|
||||
|
||||
**You:** Initialize my vault
|
||||
|
||||
**Architect:** Welcome! I am the Architect. I will help you build your personal knowledge vault from the ground up. Before I create any folders or files, I want to understand who you are and how you work. This will take about 5 minutes, and everything you tell me will be saved so every agent in the crew can serve you better.
|
||||
|
||||
Let's start with the basics. What should I call you?
|
||||
|
||||
**You:** Call me Alex
|
||||
|
||||
**Architect:** Nice to meet you, Alex. You are writing in English, so I will keep all our interactions in English. Do you speak any other languages you might use in your vault? Notes, meetings, or sources in other languages?
|
||||
|
||||
**You:** I sometimes take notes in Italian
|
||||
|
||||
**Architect:** Got it, English primary, Italian secondary. Now, what do you do? Are you a student, researcher, professional, creative...?
|
||||
|
||||
*(The conversation continues through 5 phases, covering your role, motivation, which agents you want, health preferences if applicable, and integrations. At the end, the Architect creates your full vault structure.)*
|
||||
|
||||
---
|
||||
|
||||
### Adding a new project
|
||||
|
||||
**You:** Create a new project folder for Project Alpha
|
||||
|
||||
**Architect:** I will create a folder for Project Alpha at `01-Projects/Alpha/`. Here is what I will set up:
|
||||
|
||||
- `01-Projects/Alpha/` (main project folder)
|
||||
- A project index note using the Project template
|
||||
- An entry in the Projects MOC
|
||||
|
||||
I will also update `Meta/vault-structure.md` and notify the Sorter that a new filing destination exists.
|
||||
|
||||
Shall I proceed?
|
||||
|
||||
---
|
||||
|
||||
### Evolving the vault
|
||||
|
||||
**You:** Update the tag taxonomy. I keep seeing tags that don't make sense
|
||||
|
||||
**Architect:** Let me audit the current tag taxonomy. I found 3 issues:
|
||||
|
||||
1. Both `#ml` and `#machine-learning` are in use. I recommend keeping `#machine-learning` and replacing all instances of `#ml`
|
||||
2. `#misc` is used on 12 notes, which is too vague. I suggest reviewing those notes and assigning more specific tags
|
||||
3. `#meeting-notes` exists alongside `#meeting`. I recommend consolidating to `#meeting`
|
||||
|
||||
Want me to apply these changes?
|
||||
|
||||
## Works with
|
||||
|
||||
- **Every agent** reads the rules the Architect creates (naming conventions, tag taxonomy, vault structure)
|
||||
- **Scribe** uses the templates the Architect maintains
|
||||
- **Sorter** follows the folder structure for filing decisions
|
||||
- **Librarian** references all Meta files when auditing vault health
|
||||
- **Connector** uses the MOC structure for link suggestions
|
||||
- **Postman** checks your profile for integration settings (Gmail, Calendar)
|
||||
|
||||
## Tips
|
||||
|
||||
- **Run onboarding first.** The Architect is designed to be the very first thing you use. Other agents depend on the structure and profile it creates.
|
||||
- **Ask for restructuring when things feel messy.** If you notice notes piling up in the wrong places or tags multiplying, ask the Architect to audit and evolve the structure.
|
||||
- **Update your profile when your life changes.** New job? New language? New goal? Tell the Architect so every agent stays in sync.
|
||||
- **Start small.** You do not need all 10 agents on day one. Start with the core (Architect, Scribe, Sorter, Seeker) and add more as your vault grows.
|
||||
|
||||
## What it remembers
|
||||
|
||||
The Architect keeps a post-it in `Meta/states/architect.md` that tracks its progress across conversations. This is especially important during onboarding and custom agent creation: if the conversation is interrupted, the Architect picks up exactly where it left off. After a completed operation, it remembers what it did (folders created, structural issues detected) so it has context for next time.
|
||||
@@ -0,0 +1,126 @@
|
||||
# Connector
|
||||
|
||||
> The agent that turns isolated notes into a living knowledge web.
|
||||
|
||||
## What it does
|
||||
|
||||
The Connector is obsessed with relationships between your notes. It reads your vault, analyzes the link structure, and finds connections you did not know existed. That meeting note from January? It relates to the idea you jotted down last week. That book quote? It supports the argument in your project brief. The Connector sees these threads and weaves them together.
|
||||
|
||||
Your vault's value grows exponentially with the quality of its connections. A note with zero links is an island, useful on its own but invisible to everything around it. The Connector ensures no note stays isolated for long. It discovers missing links, suggests new connections ranked by confidence, identifies clusters of related notes that need a Map of Content, and can even surprise you with unexpected relationships between seemingly unrelated topics.
|
||||
|
||||
It is also your graph health monitor. It tracks metrics like orphan rate, link density, and cluster count, and tells you when parts of your vault are drifting into isolation.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- **Full graph audit**: maps all wikilinks, identifies orphan notes (no incoming links), dead-end notes (no outgoing links), and disconnected clusters
|
||||
- **Targeted connection discovery**: given a specific note, finds all potentially related notes ranked by strength (strong, medium, weak)
|
||||
- **Serendipity mode**: discovers unexpected connections between notes that share no obvious keywords but relate conceptually
|
||||
- **Semantic bridging**: finds notes about the same concept using different terminology
|
||||
- **Bridge notes**: creates new notes that explicitly connect two otherwise separate clusters
|
||||
- **MOC enhancement**: audits Maps of Content for completeness and suggests missing entries
|
||||
- **Constellation view**: shows how a topic connects across different areas of your vault (work, personal, learning)
|
||||
- **People network**: maps how people in your vault are connected through meetings, projects, and references
|
||||
- **Graph health metrics**: tracks connectivity ratio, orphan rate, average path length, cluster count, and MOC coverage
|
||||
- **Batch processing**: after the Sorter files a batch of notes, analyzes all of them for connections at once
|
||||
|
||||
## How to use it
|
||||
|
||||
Trigger the Connector when you want to strengthen your vault's knowledge graph:
|
||||
|
||||
- "Find connections for my latest note"
|
||||
- "Analyze my vault graph"
|
||||
- "What notes are isolated?"
|
||||
- "What connects [topic A] and [topic B]?"
|
||||
- "Find missing links"
|
||||
- "Surprise me, what unexpected connections exist?"
|
||||
- "Audit the MOCs"
|
||||
- "How is my graph health?"
|
||||
- "Show me the people network"
|
||||
|
||||
In Italian: "Trova connessioni", "Analizza le relazioni", "Collega le note"
|
||||
In French: "Trouve des connexions", "Analyse du graphe"
|
||||
In Spanish: "Encuentra conexiones", "Analiza el grafo"
|
||||
In German: "Finde Verbindungen", "Netzwerkanalyse"
|
||||
|
||||
## Example conversations
|
||||
|
||||
### Connection discovery for a specific note
|
||||
|
||||
**You:** Find connections for my latest note on tiered pricing
|
||||
|
||||
**Connector:** I analyzed "Tiered Pricing Model" and found these potential connections:
|
||||
|
||||
**Strong (add these):**
|
||||
- [[Client Feedback on Pricing]] contains the client's response to the tiered model idea
|
||||
- [[Sprint Planning Q2]] is the meeting where Marco first proposed the tiers
|
||||
|
||||
**Medium (probably useful):**
|
||||
- [[Competitor Analysis Q1]] includes competitor pricing models for comparison
|
||||
- [[Revenue Projections 2026]] would be impacted by a pricing change
|
||||
|
||||
**Weak (worth considering):**
|
||||
- [[Reading Notes, SaaS Pricing Strategies]] has book notes with relevant frameworks
|
||||
|
||||
Want me to add the strong connections now?
|
||||
|
||||
---
|
||||
|
||||
### Graph health check
|
||||
|
||||
**You:** How is my graph health?
|
||||
|
||||
**Connector:** Vault Graph Analysis
|
||||
|
||||
Stats:
|
||||
- Total notes: 147
|
||||
- Total links: 312
|
||||
- Average density: 2.1 links per note
|
||||
- Orphan notes: 18 (12%), target is under 10%
|
||||
- Dead-end notes: 9
|
||||
|
||||
Islands (disconnected clusters):
|
||||
1. "Personal Finance": 5 interconnected notes, 0 external links
|
||||
2. "Old Project Beta": 8 notes, only 1 link to the rest of the vault
|
||||
|
||||
Top 5 most connected notes:
|
||||
1. [[MOC/Index]], 23 links out
|
||||
2. [[Sprint Planning Q2]], 8 links in, 6 links out
|
||||
3. [[Project Alpha Roadmap]], 5 links in, 9 links out
|
||||
|
||||
Recommendations:
|
||||
- The Personal Finance cluster should be linked to your Areas and daily notes
|
||||
- 18 orphan notes need attention. Want me to suggest connections for each?
|
||||
|
||||
---
|
||||
|
||||
### Serendipity mode
|
||||
|
||||
**You:** Surprise me, what unexpected connections exist?
|
||||
|
||||
**Connector:** Here are some connections you probably did not expect:
|
||||
|
||||
1. Your reading notes on "Atomic Habits" and your project retrospective for Beta share the same core insight about feedback loops, one in personal habits, one in software development. Linking them could create a powerful cross-domain concept note.
|
||||
|
||||
2. Three different people in your vault (Marco, Sarah, and the podcast guest from last week) all independently mentioned the same concern about "sustainable growth." This might be an emerging theme worth a dedicated note.
|
||||
|
||||
Want me to create any of these connections?
|
||||
|
||||
## Works with
|
||||
|
||||
- **Sorter**: after a batch filing, the Connector receives a notification to analyze newly filed notes
|
||||
- **Architect**: when the Connector discovers a cluster needing a new MOC, it flags the Architect to create one
|
||||
- **Seeker**: the Connector can ask the Seeker to verify content-level relationships before suggesting links
|
||||
- **Librarian**: broken wikilinks found during analysis are reported to the Librarian
|
||||
|
||||
## Tips
|
||||
|
||||
- **Run it after big filing sessions.** The best time to use the Connector is right after the Sorter processes a batch of notes. The new notes have the most linking potential.
|
||||
- **Start with "strong" connections.** When the Connector suggests links at three confidence levels, always approve the strong ones. They are almost always correct.
|
||||
- **Use serendipity mode for creative work.** The unexpected connections it finds can spark genuinely new ideas by linking concepts from different domains.
|
||||
- **Watch the orphan rate.** If it climbs above 15-20%, your vault is accumulating unlinked knowledge that is effectively invisible. Run a graph audit.
|
||||
- **Do not over-link.** The Connector follows a quality-over-quantity principle. A few meaningful links are worth more than dozens of superficial ones. Trust its judgment.
|
||||
- **Check the people network.** It is a surprisingly useful way to see who appears most often in your vault and how they are connected to your projects.
|
||||
|
||||
## What it remembers
|
||||
|
||||
The Connector keeps a post-it in `Meta/states/connector.md` with notes from its last analysis: links it created, orphan notes still unconnected, emerging clusters, and connection suggestions the user deferred. This gives it a head start on the next graph analysis.
|
||||
@@ -0,0 +1,142 @@
|
||||
# Librarian
|
||||
|
||||
> The quality inspector that keeps your vault healthy, consistent, and trustworthy.
|
||||
|
||||
## What it does
|
||||
|
||||
The Librarian is your vault's maintenance crew. While other agents create and organize notes, the Librarian checks that everything stays clean, consistent, and structurally sound over time. Think of it as a weekly health checkup for your entire knowledge base.
|
||||
|
||||
Run it once a week (or whenever things feel off), and it performs a thorough 6-phase audit: scanning folder structure, hunting duplicates, verifying every wikilink, auditing frontmatter consistency, reviewing Maps of Content, and generating a detailed health report. It finds the problems you would never notice on your own. That broken link from two months ago, the two nearly identical notes in different folders, the 15 notes still tagged `status: inbox` even though they were filed weeks ago.
|
||||
|
||||
The Librarian is conservative by design. It never deletes anything, only archives. It never auto-merges duplicates. Instead, it shows you both versions and asks. Every change is logged and transparent.
|
||||
|
||||
## Capabilities
|
||||
|
||||
Several of the Librarian's more complex, multi-step flows have been promoted to dedicated skills that run as guided conversations:
|
||||
|
||||
| Capability | Now handled by |
|
||||
|---|---|
|
||||
| Full 7-phase vault audit | `/vault-audit` skill |
|
||||
| Deep clean (extended cleanup) | `/deep-clean` skill |
|
||||
| Tag garden (tag analysis and cleanup) | `/tag-garden` skill |
|
||||
|
||||
What the Librarian agent still does directly:
|
||||
|
||||
- **Quick health check**: a lighter version focusing on the most common issues (broken links, inbox stragglers, recent duplicates)
|
||||
- **Consistency report**: shows exactly what is wrong and what was fixed, with counts and percentages
|
||||
- **Growth analytics**: tracks your vault's growth over time (notes per week, links per note, health score trends)
|
||||
- **Stale content detector**: identifies notes not touched in 30, 60, or 90 days across active areas
|
||||
- **Duplicate detection**: finds exact filename matches, "(copy)" variants, sync conflicts, and content-similar notes
|
||||
- **Broken link repair**: identifies wikilinks pointing to non-existent notes and fixes or flags them
|
||||
- **Orphan note rescue**: finds notes with zero incoming links and suggests where they should be connected
|
||||
- **Frontmatter consistency**: checks that every note has required fields (type, date, tags, status) and fixes format issues automatically
|
||||
- **Message archive cleanup**: archives resolved agent messages older than 7 days
|
||||
|
||||
## How to use it
|
||||
|
||||
Run the Librarian periodically to maintain vault quality. Some phrases invoke a dedicated skill instead of the agent:
|
||||
|
||||
- "Weekly review" / "Run the weekly audit" / "Vault audit" --> invokes the `/vault-audit` skill
|
||||
- "Deep clean the vault" --> invokes the `/deep-clean` skill
|
||||
- "Clean up the tags" / "Tag garden" --> invokes the `/tag-garden` skill
|
||||
- "Check vault health" / "Quick health check" --> Librarian agent
|
||||
- "Are there any duplicates?" --> Librarian agent
|
||||
- "Fix broken links" --> Librarian agent
|
||||
- "Show me orphan notes" --> Librarian agent
|
||||
- "Consistency report" --> Librarian agent
|
||||
- "How has my vault grown?" --> Librarian agent
|
||||
|
||||
In Italian: "Review settimanale", "Controlla il vault", "Ci sono duplicati?", "Pulizia"
|
||||
In French: "Revision hebdomadaire", "Verifier le vault"
|
||||
In Spanish: "Revision semanal", "Verificar el vault"
|
||||
In German: "Wochentliche Uberprufung", "Vault-Gesundheit"
|
||||
|
||||
## Example conversations
|
||||
|
||||
### Weekly review
|
||||
|
||||
**You:** Weekly review
|
||||
|
||||
**Librarian:** Running full 6-phase audit...
|
||||
|
||||
**Phase 1, Structure:** Folders OK (12/12 match the canonical structure). 1 empty folder found: `04-Archive/2024/`. Consider removing?
|
||||
|
||||
**Phase 2, Duplicates:** Found 2 potential duplicates:
|
||||
- "Project Plan.md" (01-Projects/) vs "Project Plan (updated).md" (01-Projects/). The updated version contains everything from the original plus 17 new lines. Recommendation: keep the updated version, archive the original.
|
||||
|
||||
**Phase 3, Links:** 3 broken wikilinks found and fixed:
|
||||
- `[[Sprint Planning]]` updated to `[[Sprint Planning Q2]]` (file was renamed)
|
||||
- `[[Marco]]` updated to `[[05-People/Marco Rossi]]` (path corrected)
|
||||
- `[[Old RFC]]`: target does not exist. Should I create a stub note or remove the link?
|
||||
|
||||
**Phase 4, Frontmatter:** 8 notes had format issues:
|
||||
- 5 notes had dates in non-standard format (auto-fixed to YYYY-MM-DD)
|
||||
- 3 notes were missing `status` field (added based on file location)
|
||||
|
||||
**Phase 5, MOCs:** 2 MOCs are stale (not updated in 30+ days with new notes available). Updated both with 4 new entries total.
|
||||
|
||||
**Phase 6, Health Report:** Saved to `Meta/health-reports/2026-03-21 - Vault Health.md`
|
||||
|
||||
Health Score: 87% (up from 82% last week)
|
||||
Notes: 147 total, 12 new this week
|
||||
Orphan notes: 18 (down from 23 after Connector work)
|
||||
|
||||
---
|
||||
|
||||
### Quick duplicate check
|
||||
|
||||
**You:** Are there any duplicates?
|
||||
|
||||
**Librarian:** Scanned 147 notes for duplicates. Found 3 issues:
|
||||
|
||||
1. **Exact duplicate:** "Meeting Notes March 10.md" exists in both `00-Inbox/` and `06-Meetings/2026/03/`. The Inbox version is older. Recommendation: delete the Inbox copy.
|
||||
|
||||
2. **Near-duplicate (85% overlap):** "API Design Notes.md" and "API Architecture Draft.md" cover the same topic with different titles. The Architecture Draft is more complete. Recommendation: merge and archive the older one.
|
||||
|
||||
3. **Sync conflict:** "Daily 2026-03-15 (conflict).md" is a sync conflict from Obsidian Sync. The conflict version has 2 extra lines. Recommendation: merge the extra lines into the main version.
|
||||
|
||||
Want me to handle any of these?
|
||||
|
||||
---
|
||||
|
||||
### Growth analytics
|
||||
|
||||
**You:** How has my vault grown this month?
|
||||
|
||||
**Librarian:** Vault Growth, March 2026
|
||||
|
||||
- Notes created: 42 (up 15% from February)
|
||||
- Average per week: 10.5
|
||||
- Most active areas: Projects (18 notes), Meetings (12 notes), Resources (7 notes)
|
||||
- Links created: 89 new links this month
|
||||
- Link density trend: 2.1 links/note (up from 1.8 in February)
|
||||
- Health score trend: 82% -> 85% -> 87% (improving steadily)
|
||||
|
||||
Top contributors (by agent):
|
||||
- Scribe: 22 notes
|
||||
- Transcriber: 12 notes
|
||||
- Postman: 8 notes
|
||||
|
||||
Your vault is growing healthily. The link density improvement is a good sign. The Connector has been doing solid work.
|
||||
|
||||
## Works with
|
||||
|
||||
- **Architect**: when the Librarian finds structural inconsistencies that need a design decision (overlapping areas, drifting taxonomy), it flags the Architect
|
||||
- **Sorter**: misplaced notes found during audits are reported to the Sorter for re-filing
|
||||
- **Connector**: orphan notes that need linking are flagged for the Connector
|
||||
- **Seeker**: when the Librarian finds conflicting information in duplicate notes, it asks the Seeker for content-level verification
|
||||
- **Scribe**: malformed notes in the Health area are sent back to the Scribe for reformatting
|
||||
- **All agents**: the Librarian cleans up the shared message board by archiving resolved messages older than 7 days
|
||||
|
||||
## Tips
|
||||
|
||||
- **Run it weekly.** A weekly audit catches small issues before they compound. Monthly audits find too much to fix at once.
|
||||
- **Start with quick health checks.** If you are new to the vault, a quick check is less overwhelming than a full 6-phase audit.
|
||||
- **Let it auto-fix the safe stuff.** Date format normalization, tag casing, and missing status fields are safe to fix automatically. The Librarian always asks before doing anything destructive.
|
||||
- **Pay attention to the health score.** It is a single number that tells you how well-maintained your vault is. Aim for 85%+.
|
||||
- **Use growth analytics for motivation.** Seeing your vault grow in notes, links, and quality is surprisingly satisfying and helps you stay consistent.
|
||||
- **Act on archive suggestions.** Stale content in active areas adds noise. Archiving old notes keeps your working areas focused.
|
||||
|
||||
## What it remembers
|
||||
|
||||
The Librarian keeps a post-it in `Meta/states/librarian.md` with notes from its last audit: issues found, problems fixed, and recurring problems across audits. This lets it track whether vault health is improving or degrading over time.
|
||||
@@ -0,0 +1,138 @@
|
||||
# Postman
|
||||
|
||||
> Your bridge between email (Gmail or Hey.com), Google Calendar, and your vault.
|
||||
|
||||
## What it does
|
||||
|
||||
The Postman connects your email and calendar to your Obsidian vault. It scans your inbox (Gmail via GWS CLI, Hey.com via Hey CLI, or Gmail via MCP as read-only fallback), identifies what actually matters (action requests, deadlines, important information), and saves it as structured notes. It imports Google Calendar events as meeting prep notes. It can even create new calendar events from your vault content.
|
||||
|
||||
The Postman is a smart filter, not a bulk importer. It knows the difference between a critical email from a client requesting a proposal and a marketing newsletter. It recognizes deadlines, extracts action items, and creates notes with the right priority level. Everything it skips, it tells you about, so you stay informed without your vault getting flooded with noise. When using Hey, the Postman leverages Hey's pre-sorted mailboxes (Imbox, Feed, Paper Trail, Reply Later, Set Aside, Bubble Up) for smarter triage.
|
||||
|
||||
It works in four modes: email triage (scan and save important emails), calendar import (bring upcoming events into your vault), event creation (schedule something from a note or request), and targeted search (find specific emails or events on a topic).
|
||||
|
||||
## Capabilities
|
||||
|
||||
Several of the Postman's more complex, multi-step flows have been promoted to dedicated skills that run as guided conversations:
|
||||
|
||||
| Capability | Now handled by |
|
||||
|---|---|
|
||||
| Email triage (scan and process unread emails) | `/email-triage` skill |
|
||||
| Meeting prep (comprehensive meeting brief) | `/meeting-prep` skill |
|
||||
| Weekly agenda (day-by-day week overview) | `/weekly-agenda` skill |
|
||||
| Deadline radar (unified deadline timeline) | `/deadline-radar` skill |
|
||||
|
||||
What the Postman agent still does directly:
|
||||
|
||||
- **Calendar import**: pulls upcoming Google Calendar events into the vault as meeting prep notes with participant lists and agenda
|
||||
- **Event creation**: creates Google Calendar events from your requests or from deadlines found in vault notes
|
||||
- **Targeted search**: searches email (Gmail or Hey) or Calendar for specific topics, people, or date ranges
|
||||
- **VIP filter**: prioritizes emails from important contacts (colleagues, clients, key people)
|
||||
- **Email drafting**: drafts reply emails based on vault context
|
||||
- **Travel mode**: when it detects travel-related events (flights, hotels, conferences), creates a consolidated travel itinerary note
|
||||
- **Thread intelligence**: reads entire email threads and synthesizes key points and latest developments
|
||||
- **Attachment awareness**: flags emails with attachments (cannot process them, but notes their existence)
|
||||
|
||||
## How to use it
|
||||
|
||||
Trigger the Postman for calendar and targeted email tasks. Some phrases invoke a dedicated skill instead of the agent:
|
||||
|
||||
- "Check my email" / "Triage my inbox" --> invokes the `/email-triage` skill
|
||||
- "Prepare me for tomorrow's meetings" --> invokes the `/meeting-prep` skill
|
||||
- "Weekly agenda" / "Plan my week" --> invokes the `/weekly-agenda` skill
|
||||
- "What deadlines are coming up?" --> invokes the `/deadline-radar` skill
|
||||
- "What's on my calendar this week?" --> Postman agent
|
||||
- "Create an event for Friday at 3pm" --> Postman agent
|
||||
- "Import this week's meetings" --> Postman agent
|
||||
- "Find emails about [topic]" --> Postman agent
|
||||
- "Draft a reply to [person]" --> Postman agent
|
||||
|
||||
In Italian: "Controlla la mail", "Cosa ho in inbox", "Crea evento", "Cosa ho in calendario"
|
||||
In French: "Verifie mes emails", "Qu'est-ce que j'ai au calendrier"
|
||||
In Spanish: "Revisa mi correo", "Que hay en mi calendario"
|
||||
In German: "Prufe meine Emails", "Was steht im Kalender"
|
||||
|
||||
## Example conversations
|
||||
|
||||
### Email triage
|
||||
|
||||
**You:** Check my email
|
||||
|
||||
**Postman:** Scanning your inbox... Found 28 unread messages.
|
||||
|
||||
Saved to vault (3):
|
||||
- **"Proposal Request From Luca"**: action required, high priority. Luca needs a project proposal by next Wednesday. Saved with action items and deadline.
|
||||
- **"Contract Renewal Deadline April 15"**: deadline alert. Saved with the date flagged.
|
||||
- **"Sprint Demo Feedback from Client"**: contains key decisions about the product direction. Saved as informational note.
|
||||
|
||||
Ignored (25):
|
||||
- 12 newsletters and mailing lists
|
||||
- 5 automated notifications (GitHub, Jira)
|
||||
- 4 purchase receipts
|
||||
- 3 system notifications (2FA, password resets)
|
||||
- 1 CC-only thread with no action required
|
||||
|
||||
Needs your input (1):
|
||||
- Email from an unknown sender about "partnership opportunity." Cannot determine relevance. Want me to save it?
|
||||
|
||||
---
|
||||
|
||||
### Calendar import with meeting prep
|
||||
|
||||
**You:** What's on my calendar this week?
|
||||
|
||||
**Postman:** Your week ahead (March 22-28):
|
||||
|
||||
**Monday March 22:**
|
||||
- 10:00-11:00, Sprint Planning with Marco, Sarah, Luca (Google Meet)
|
||||
- 14:00-14:30, 1:1 with Manager
|
||||
|
||||
**Wednesday March 24:**
|
||||
- 09:00-10:30, Client Demo (Zoom, external participants)
|
||||
- 16:00-17:00, Team Retrospective
|
||||
|
||||
**Friday March 26:**
|
||||
- 11:00-12:00, Budget Review (in person, Room 3B)
|
||||
|
||||
I can create meeting prep notes for any of these. For the Client Demo, I found 2 related notes in your vault that might be useful for preparation. Want me to import all events as vault notes?
|
||||
|
||||
---
|
||||
|
||||
### Event creation
|
||||
|
||||
**You:** Create an event for the proposal review, next Thursday at 2pm, invite Marco and Luca, one hour, on Zoom
|
||||
|
||||
**Postman:** Here is what I will create:
|
||||
|
||||
- **Title:** Proposal Review
|
||||
- **Date:** Thursday, March 27, 2026
|
||||
- **Time:** 14:00 - 15:00
|
||||
- **Location:** Zoom (I will add the link if you have a default Zoom room)
|
||||
- **Attendees:** Marco, Luca
|
||||
|
||||
Shall I proceed?
|
||||
|
||||
**You:** Yes, go ahead
|
||||
|
||||
**Postman:** Event created on Google Calendar. I also created a meeting prep note in `00-Inbox/` linked to the related proposal notes in your vault.
|
||||
|
||||
## Works with
|
||||
|
||||
- **Sorter**: all notes created by the Postman land in `00-Inbox/` for the Sorter to file
|
||||
- **Architect**: when emails or events reveal a new project, the Postman flags the Architect to create the folder structure
|
||||
- **Transcriber**: when a calendar event has a recording link (Zoom, Meet), the Postman flags it for the Transcriber
|
||||
- **Connector**: email threads that reference vault notes are flagged for cross-linking
|
||||
- **Seeker**: if a contact is not found in the vault, the Postman suggests searching with the Seeker
|
||||
|
||||
## Tips
|
||||
|
||||
- **Run email triage daily.** A quick scan takes under a minute and catches deadlines before they sneak up on you.
|
||||
- **Use "deadline radar" on Mondays.** Start your week knowing every deadline that is coming from your emails.
|
||||
- **Create meeting prep notes before important meetings.** The Postman pulls participant info from your People folder and links relevant vault notes.
|
||||
- **Let it create calendar events from notes.** If a note contains a deadline or meeting plan, tell the Postman to schedule it. Saves you switching to Google Calendar.
|
||||
- **Trust the noise filter.** The Postman is aggressive about filtering newsletters, notifications, and receipts. If it ever filters something important, tell it. It learns from your corrections.
|
||||
- **Check "needs your input" items.** The Postman flags ambiguous emails rather than guessing. These are usually worth a quick look.
|
||||
- **Make sure at least one email backend is connected.** The Postman needs either GWS (`gws`), Hey CLI (`hey`), or MCP connectors to access your email. Check `Meta/user-profile.md` to verify integrations are enabled (including the `email_backend` setting if you have multiple backends), or ask the Architect during onboarding.
|
||||
|
||||
## What it remembers
|
||||
|
||||
The Postman keeps a post-it in `Meta/states/postman.md` with notes from its last run: when it last scanned the inbox, emails it saved to the vault, pending follow-ups, and upcoming deadlines it detected. This prevents re-processing the same emails and keeps deadline tracking continuous.
|
||||
@@ -0,0 +1,113 @@
|
||||
# Scribe
|
||||
|
||||
> Your fast-thinking, clean-writing note-taking partner.
|
||||
|
||||
## What it does
|
||||
|
||||
The Scribe turns messy, rushed, half-formed thoughts into clean Obsidian notes. You type fast, you skip punctuation, you mix languages, you abbreviate everything. The Scribe does not care. It takes whatever you throw at it and produces polished, well-structured notes ready for your vault.
|
||||
|
||||
It is smart about what it captures. If you dump three unrelated topics in one message, it splits them into three separate notes. If you paste speech-to-text output full of "um" and "like," it cleans it up while keeping your voice. If you are rapid-firing ideas in brainstorm mode, it numbers them all without judging any.
|
||||
|
||||
Every note the Scribe creates lands in your Inbox (`00-Inbox/`), properly formatted with YAML frontmatter, tags, wikilinks to people and projects, and suggested connections to other notes. The Sorter will file them later. The Scribe's job is pure capture speed and quality.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- **Standard capture**: classifies your input (idea, task, note, person, reference, list) and applies the right template
|
||||
- **Voice-to-note**: detects speech-to-text output and cleans it up by removing filler words, restoring punctuation, and preserving your natural voice
|
||||
- **Thread capture**: when you send a stream of consciousness, splits it into individual atomic notes linked together
|
||||
- **Quote capture**: formats quotes with author, source, page number, and your commentary
|
||||
- **Reading notes**: structures book/article/podcast notes with key takeaways, section-by-section summaries, and action items
|
||||
- **Brainstorm mode**: captures everything without filtering, numbers ideas, groups by theme, highlights the most promising ones
|
||||
- **Multi-note detection**: automatically splits unrelated topics into separate notes
|
||||
- **Emotion tagging**: detects emotional tone and tags notes accordingly
|
||||
- **Auto-suggested connections**: mentions 2-3 related notes or topics at the end of each note
|
||||
- **Code, math, and diagram support**: wraps code in fenced blocks, uses LaTeX for math, creates Mermaid diagrams
|
||||
- **Multilingual**: works in any language, handles mixed-language input gracefully
|
||||
|
||||
## How to use it
|
||||
|
||||
Just start typing what you want to capture. The Scribe detects the right mode automatically. You can also be explicit:
|
||||
|
||||
- "Save this: [your text]"
|
||||
- "Quick note: [your text]"
|
||||
- "Brainstorm: [topic]"
|
||||
- "Quote: [quote text]"
|
||||
- "Reading notes for [book/article title]"
|
||||
- "Thread: [stream of thoughts]"
|
||||
- "Voice note: [pasted speech-to-text]"
|
||||
|
||||
In Italian: "Salvami questo", "Nota veloce", "Appuntati"
|
||||
In French: "Sauvegarde ca", "Note rapide"
|
||||
In Spanish: "Guarda esto", "Nota rapida"
|
||||
In German: "Schnelle Notiz", "Schreib das"
|
||||
|
||||
## Example conversations
|
||||
|
||||
### Quick messy capture
|
||||
|
||||
**You:** save this: meeting with Marco, budget discussion, he wants report by friday, also mentioned new hire starting in april, seems worried about Q2 numbers
|
||||
|
||||
**Scribe:** I identified 2 distinct topics and created 2 separate notes:
|
||||
|
||||
**1. Meeting With Marco, Budget Discussion**
|
||||
Filed as `2026-03-21 - Note - Budget Discussion With Marco.md` in `00-Inbox/`
|
||||
|
||||
Key points captured:
|
||||
- Marco wants the budget report by Friday
|
||||
- He expressed concern about Q2 numbers
|
||||
- Action item: deliver report by Friday
|
||||
|
||||
**2. New Hire Starting in April**
|
||||
Filed as `2026-03-21 - Note - New Hire April.md` in `00-Inbox/`
|
||||
|
||||
Linked to [[05-People/Marco]] in both notes. Does this capture everything correctly?
|
||||
|
||||
---
|
||||
|
||||
### Brainstorm mode
|
||||
|
||||
**You:** Brainstorm: ways to improve the onboarding experience for new users
|
||||
|
||||
**Scribe:** Created `2026-03-21 - Brainstorm - Onboarding Improvements.md` in `00-Inbox/`
|
||||
|
||||
Captured all your ideas, numbered and grouped. I noticed 3 natural clusters: UI changes, documentation improvements, and community-driven ideas. The two most promising ideas (based on feasibility and impact) are highlighted in the Hot Takes section.
|
||||
|
||||
Want to expand on any of these?
|
||||
|
||||
---
|
||||
|
||||
### Voice-to-note
|
||||
|
||||
**You:** Voice note: so basically i was thinking about um the whole pricing structure right and like marco said yesterday that we should probably move to a tiered model because uh the enterprise clients are paying the same as the small ones and thats just not sustainable you know so maybe we do three tiers basic pro and enterprise and each one gets different levels of support
|
||||
|
||||
**Scribe:** Detected speech-to-text input. Cleaned and structured as:
|
||||
|
||||
**Pricing Structure, Tiered Model Proposal**
|
||||
|
||||
Marco suggested moving to a tiered pricing model because enterprise clients currently pay the same as small clients, which is not sustainable. The proposed tiers:
|
||||
- **Basic**: entry level
|
||||
- **Pro**: mid-tier
|
||||
- **Enterprise**: full support
|
||||
|
||||
Each tier would include different levels of support.
|
||||
|
||||
Filed as `2026-03-21 - Idea - Tiered Pricing Model.md` with `source: voice-note` in the frontmatter. Sound right?
|
||||
|
||||
## Works with
|
||||
|
||||
- **Sorter** files the notes the Scribe drops in the Inbox
|
||||
- **Architect** provides the templates and naming conventions the Scribe follows. If a new project or area seems to be emerging, the Scribe flags it for the Architect
|
||||
- **Connector** gets flagged when the Scribe notices a note relates to many existing notes, so it can do deep linking
|
||||
|
||||
## Tips
|
||||
|
||||
- **Do not overthink your input.** The messier, the better. That is literally what the Scribe is for. Just dump your thoughts.
|
||||
- **Use "quick dump" for multiple topics.** The Scribe will detect and split them automatically.
|
||||
- **Paste raw speech-to-text directly.** No need to clean it up first. The Scribe handles filler words, broken sentences, and transcription artifacts.
|
||||
- **Say "brainstorm" when you want zero filtering.** The Scribe will capture every idea without judging, then gently highlight the best ones.
|
||||
- **Check the suggested connections.** The Scribe adds a Connections section at the end of each note. These are quick wins for building your knowledge graph.
|
||||
- **Trust the assumptions.** The Scribe makes judgment calls when your input is ambiguous. It always tells you what it assumed, so you can correct it if needed.
|
||||
|
||||
## What it remembers
|
||||
|
||||
The Scribe keeps a post-it in `Meta/states/scribe.md` with notes from its last run: which notes it created, brainstorm topics in progress, and assumptions it made. This means if you come back to continue a brainstorm or refine a note, the Scribe already has context.
|
||||
@@ -0,0 +1,117 @@
|
||||
# Seeker
|
||||
|
||||
> Ask your vault a question. Get an answer with sources.
|
||||
|
||||
## What it does
|
||||
|
||||
The Seeker is your vault's search engine and research assistant rolled into one. It does not just find files; it understands questions. Ask "What did we decide about pricing?" and it searches across meeting notes, project files, and email imports to synthesize an answer with source links. Ask "Find all notes about Marco from this month" and it queries by person, date range, and content.
|
||||
|
||||
The Seeker searches everything: file contents, filenames, YAML frontmatter, tags, wikilinks, and relationship graphs. It ranks results by relevance, separates high-quality matches from tangential ones, and presents everything in a clean, scannable format. When it finds nothing, it suggests alternative searches, checks for typos, and offers to create a new note on the topic.
|
||||
|
||||
Beyond searching, the Seeker can also modify existing notes by updating content, adding tags, fixing broken links, or appending new information. It always reads the full note first and confirms changes before making them.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- **Full-text search**: searches file contents with keyword and phrase matching
|
||||
- **Metadata search**: queries by type, date range, tag, person, project, or status
|
||||
- **Relationship search**: navigates the wikilink graph (forward links, backlinks, common connections)
|
||||
- **Answer mode**: synthesizes information from multiple notes to answer a question, with source citations
|
||||
- **Timeline mode**: finds notes within a date range, useful for "what happened last week" queries
|
||||
- **Diff mode**: compares versions of a topic across different notes to spot contradictions or evolution
|
||||
- **Missing knowledge detection**: identifies gaps in your vault (topics mentioned but never explained)
|
||||
- **Note modification**: append, update, refactor, re-tag, or fix links in existing notes
|
||||
- **Cross-reference answering**: pulls data from multiple sources and presents a unified answer
|
||||
|
||||
## How to use it
|
||||
|
||||
Ask any question about your vault, or search for specific content:
|
||||
|
||||
- "What did we decide about [topic]?"
|
||||
- "Find all meeting notes from March"
|
||||
- "What do I know about [topic]?"
|
||||
- "Find notes tagged #marketing"
|
||||
- "What notes mention Marco?"
|
||||
- "Where did I put the note about [subject]?"
|
||||
- "What am I missing about microservices?"
|
||||
- "Update the note about [topic] with [new info]"
|
||||
- "What connects Marketing and Sales in my vault?"
|
||||
|
||||
In Italian: "Cerca nel vault", "Trova", "Dove ho messo", "Che note ho su"
|
||||
In French: "Cherche dans le vault", "Trouve"
|
||||
In Spanish: "Busca en el vault", "Encuentra"
|
||||
In German: "Suche im Vault", "Finde"
|
||||
|
||||
## Example conversations
|
||||
|
||||
### Answer mode
|
||||
|
||||
**You:** What did we decide about the pricing model?
|
||||
|
||||
**Seeker:** Based on your notes, here is what I found about pricing decisions:
|
||||
|
||||
Marco proposed moving to a tiered pricing model (Basic, Pro, Enterprise) during the Sprint Planning on March 18. The main driver is that enterprise clients currently pay the same as small clients. The client feedback note from March 20 suggests the client is open to tiered pricing but wants volume discounts included.
|
||||
|
||||
No final decision has been recorded yet. The next step appears to be delivering the pricing report by Friday (March 22).
|
||||
|
||||
Sources:
|
||||
- [[06-Meetings/2026/03/Sprint Planning Q2]] (initial proposal)
|
||||
- [[02-Areas/Sales/Client Feedback on Pricing]] (client response)
|
||||
- [[00-Inbox/Tiered Pricing Model]] (Marco's voice note with details)
|
||||
|
||||
---
|
||||
|
||||
### Finding notes by criteria
|
||||
|
||||
**You:** Find all meeting notes from this month with open action items
|
||||
|
||||
**Seeker:** Found 5 meeting notes from March 2026 with uncompleted action items:
|
||||
|
||||
Top results:
|
||||
1. [[Sprint Planning Q2]], March 18, 3 open action items (2 assigned to you)
|
||||
2. [[Client Review Contract]], March 15, 1 open action item (pending legal review)
|
||||
3. [[Marketing Sync]], March 12, 2 open action items
|
||||
|
||||
Other results:
|
||||
4. [[Team Standup March 10]], 1 minor follow-up
|
||||
5. [[Budget Meeting]], March 5, 1 item marked low priority
|
||||
|
||||
Total: 8 open action items across 5 meetings. Want me to compile them into a task list?
|
||||
|
||||
---
|
||||
|
||||
### Missing knowledge
|
||||
|
||||
**You:** What am I missing about microservices?
|
||||
|
||||
**Seeker:** You have 4 notes that mention microservices, but I notice some gaps:
|
||||
|
||||
You have covered:
|
||||
- Architecture decision to adopt microservices (from a meeting note)
|
||||
- Service mesh comparison (from reading notes)
|
||||
|
||||
Missing or thin:
|
||||
- No notes on deployment strategy or CI/CD for microservices
|
||||
- No notes on monitoring and observability
|
||||
- The meeting note references a "microservices RFC" that does not exist in your vault
|
||||
|
||||
Would you like to create notes for any of these gaps, or search for related content that might cover them indirectly?
|
||||
|
||||
## Works with
|
||||
|
||||
- **Sorter**: the Seeker can verify whether similar notes already exist before the Sorter files new ones
|
||||
- **Connector**: when the Seeker finds unlinked but related notes, it flags them for the Connector
|
||||
- **Librarian**: the Seeker often discovers broken links, orphan notes, or frontmatter problems while searching
|
||||
- **Scribe**: if a search reveals missing knowledge, the Seeker can suggest creating a new note via the Scribe
|
||||
|
||||
## Tips
|
||||
|
||||
- **Ask questions, not just keywords.** The Seeker is best when you ask "What do I know about X?" rather than just typing "X."
|
||||
- **Use it for decision archaeology.** "What did we decide about Y?" is one of the most powerful queries. It searches across meetings, emails, and project notes.
|
||||
- **Request a timeline.** Saying "Show me everything about project Alpha in chronological order" gives you the full story of a project.
|
||||
- **Ask about gaps.** "What am I missing about [topic]?" triggers the missing knowledge detector, which is surprisingly useful for learning and project planning.
|
||||
- **Combine criteria.** "Find all notes tagged #urgent that mention Marco from the last two weeks." The Seeker handles compound queries.
|
||||
- **Use it to update notes.** Instead of finding a note and editing it yourself, tell the Seeker: "Update the note about X with this new info."
|
||||
|
||||
## What it remembers
|
||||
|
||||
The Seeker keeps a post-it in `Meta/states/seeker.md` with notes from its last search: what you searched for, what was found (or not), and recurring topics. This helps it refine future searches and flag vault gaps it has noticed over time.
|
||||
@@ -0,0 +1,139 @@
|
||||
# Sorter
|
||||
|
||||
> Inbox zero for your vault. Every note in the right place, every time.
|
||||
|
||||
## What it does
|
||||
|
||||
The Sorter is your vault's filing system. Notes pile up in your Inbox throughout the day: quick captures from the Scribe, email imports from the Postman, meeting notes from the Transcriber. The Sorter processes them all, figures out where each note belongs, moves it to the right folder, updates the Maps of Content, creates wikilinks, and gives you a clean summary of what went where.
|
||||
|
||||
It does not just look at metadata. The Sorter reads the full content of every note, detects mentioned people and projects, understands temporal context, and makes intelligent filing decisions. When something is ambiguous, it asks. When a destination folder does not exist yet, it either creates a minor subfolder or flags the Architect for a bigger structural decision.
|
||||
|
||||
Run the Sorter daily (or whenever your Inbox feels cluttered) and your vault stays organized without you having to think about where things go.
|
||||
|
||||
## Capabilities
|
||||
|
||||
Standard inbox triage has been promoted to a dedicated skill:
|
||||
|
||||
| Capability | Now handled by |
|
||||
|---|---|
|
||||
| Standard inbox triage (classify, route, update MOCs, extract actions) | `/inbox-triage` skill |
|
||||
|
||||
What the Sorter agent still does directly:
|
||||
|
||||
- **Smart batch mode**: groups related notes by project, topic, or date before filing, so related notes end up cross-linked
|
||||
- **Priority triage**: scans the inbox and ranks notes by urgency (critical, high, normal, low), filing the most important ones first
|
||||
- **Project pulse**: generates an activity report showing which projects received the most new notes and which have gone quiet
|
||||
- **MOC updates**: automatically adds filed notes to the relevant Map of Content
|
||||
- **Duplicate detection**: checks for existing notes with similar content before filing
|
||||
- **Action item extraction**: pulls tasks out of notes and ensures they are captured in daily or project notes
|
||||
- **Archive suggestions**: flags notes not touched in 30+ days as candidates for archiving
|
||||
- **Wikilink creation**: links people to `05-People/`, projects to `01-Projects/`, and related notes to each other
|
||||
- **Health-aware filing**: routes nutrition, diet, and therapy-related notes to the appropriate Health subfolders
|
||||
|
||||
## How to use it
|
||||
|
||||
Trigger the Sorter when your Inbox has accumulated notes. Some phrases invoke a dedicated skill instead of the agent:
|
||||
|
||||
- "Triage my inbox" / "Process inbox" / "File my notes" --> invokes the `/inbox-triage` skill
|
||||
- "Batch sort" / "Smart batch" (for 10+ notes) --> Sorter agent
|
||||
- "Priority triage" / "Urgent first" / "What needs attention?" --> Sorter agent
|
||||
- "Project pulse" / "Which projects are active?" --> Sorter agent
|
||||
- "Evening triage" / "Daily digest" --> Sorter agent
|
||||
|
||||
In Italian: "Smista la inbox", "Pulisci la inbox", "Svuota inbox"
|
||||
In French: "Trie la boite de reception", "Range mes notes"
|
||||
In Spanish: "Ordena la bandeja", "Triaje"
|
||||
In German: "Sortiere den Eingang", "Posteingang aufraumen"
|
||||
|
||||
## Example conversations
|
||||
|
||||
### Standard triage
|
||||
|
||||
**You:** Triage my inbox
|
||||
|
||||
**Sorter:** Inbox: 6 notes to process
|
||||
|
||||
1. [Meeting] 2026-03-18, Sprint Planning Q2
|
||||
2. [Idea] 2026-03-19, New Onboarding Approach
|
||||
3. [Task] 2026-03-20, Call Supplier by Wednesday
|
||||
4. [Note] 2026-03-20, Client Feedback on Pricing
|
||||
5. [Quote] 2026-03-21, Seneca on Time Management
|
||||
6. [Email] 2026-03-21, Proposal Request From Luca
|
||||
|
||||
Here is my filing plan:
|
||||
|
||||
- Sprint Planning Q2 --> `06-Meetings/2026/03/` (linked to [[01-Projects/Product]])
|
||||
- New Onboarding Approach --> `01-Projects/Rebrand/` (matches active project)
|
||||
- Call Supplier --> extracted as task in today's daily note
|
||||
- Client Feedback on Pricing --> `02-Areas/Sales/` (linked to [[05-People/Marco]])
|
||||
- Seneca on Time Management --> `03-Resources/Quotes/`
|
||||
- Proposal Request From Luca --> `01-Projects/Consulting/` (action required, high priority)
|
||||
|
||||
Shall I proceed?
|
||||
|
||||
---
|
||||
|
||||
### Priority triage
|
||||
|
||||
**You:** What needs attention?
|
||||
|
||||
**Sorter:** Priority scan of 8 inbox notes:
|
||||
|
||||
**Critical (act today):**
|
||||
- "Call Supplier by Wednesday" (deadline is tomorrow)
|
||||
- "Proposal Request From Luca" (client waiting for response)
|
||||
|
||||
**High (this week):**
|
||||
- "Sprint Planning Q2" (meeting notes with 3 unresolved action items)
|
||||
- "Client Feedback on Pricing" (relates to active project decision)
|
||||
|
||||
**Normal:**
|
||||
- "New Onboarding Approach" (idea, no deadline)
|
||||
- "Reading Notes, Atomic Habits Ch3"
|
||||
|
||||
**Low:**
|
||||
- "Seneca on Time Management" (quote, archivable)
|
||||
- "Random Bookmarks List"
|
||||
|
||||
Want me to file the critical items first?
|
||||
|
||||
---
|
||||
|
||||
### Project pulse
|
||||
|
||||
**You:** Project pulse
|
||||
|
||||
**Sorter:** Project Pulse, 2026-03-21
|
||||
|
||||
Most Active:
|
||||
1. **Rebrand**: 7 new notes this week (3 meetings, 2 ideas, 2 tasks)
|
||||
2. **Consulting**: 4 new notes (2 emails, 1 meeting, 1 task)
|
||||
|
||||
Quiet (no new notes in 7+ days):
|
||||
- **Beta Launch**: last note on 2026-03-10
|
||||
- **Internal Tools**: last note on 2026-03-05
|
||||
|
||||
Emerging Topics (not yet a project/area):
|
||||
- "AI automation" mentioned in 4 recent notes. Consider creating a dedicated area?
|
||||
|
||||
## Works with
|
||||
|
||||
- **Scribe**: most notes in the Inbox come from the Scribe
|
||||
- **Postman**: email and calendar imports land in the Inbox for the Sorter to process
|
||||
- **Transcriber**: meeting transcriptions arrive in the Inbox
|
||||
- **Architect**: when notes do not fit any existing folder, the Sorter flags the Architect to create new structure
|
||||
- **Connector**: after filing a batch, the Sorter can flag notes for the Connector to cross-link
|
||||
- **Librarian**: the Sorter reports duplicates and broken links it finds during triage
|
||||
|
||||
## Tips
|
||||
|
||||
- **Run it daily.** A small inbox is fast to process. A huge inbox takes longer and produces worse results because context fades.
|
||||
- **Use smart batch when you have 10+ notes.** The Sorter will group related notes together, which produces better cross-links than one-by-one processing.
|
||||
- **Trust the filing plan.** The Sorter always shows you where it intends to file before moving anything. Review the plan, approve, and move on.
|
||||
- **Check the archive suggestions.** At the end of every triage, the Sorter flags stale notes. Archiving keeps your active areas lean.
|
||||
- **Use project pulse weekly.** It is a quick way to see where your energy is actually going versus where you think it is going.
|
||||
- **Never delete notes.** The Sorter follows a strict no-deletion policy. Notes are moved, archived, or merged, never destroyed.
|
||||
|
||||
## What it remembers
|
||||
|
||||
The Sorter keeps a post-it in `Meta/states/sorter.md` with notes from its last triage: files still in the inbox, ambiguous notes it deferred, and filing patterns it noticed. This helps it pick up where it left off and avoid re-processing notes it already handled.
|
||||
@@ -0,0 +1,140 @@
|
||||
# Transcriber
|
||||
|
||||
> Turns raw recordings and transcripts into structured, actionable meeting intelligence.
|
||||
|
||||
## What it does
|
||||
|
||||
All transcription processing is now handled by the `/transcribe` skill, which runs as a guided, multi-turn conversation. The skill takes raw audio transcripts (meetings, lectures, podcasts, interviews, voice memos) and transforms them into richly structured Obsidian notes. It does not just clean up text. It extracts the intelligence: decisions made, action items with owners and deadlines, key insights, emotional dynamics, and follow-up needs.
|
||||
|
||||
Paste a messy Zoom transcript full of filler words and speaker labels, and the `/transcribe` skill will produce a polished meeting note with an executive summary, a decisions log, an action items table with confidence scores, and even a draft follow-up email you can send to attendees. Paste lecture notes, and it creates study-ready material with key concepts, definitions, and exam-relevant highlights.
|
||||
|
||||
The `/transcribe` skill works with whatever you give it, whether that is output from Whisper, Otter.ai, Google Meet auto-transcription, or your own handwritten notes from a call. It adapts its parsing to the source format and asks just enough context questions to produce the best possible output.
|
||||
|
||||
The Transcriber agent itself is kept for edge cases and direct follow-ups not covered by the skill.
|
||||
|
||||
## Capabilities
|
||||
|
||||
All of the following capabilities are delivered through the `/transcribe` skill:
|
||||
|
||||
- **Meeting notes**: full meeting processing with executive summary, key points, decisions log, action items table (with confidence scores), detailed notes by topic, open questions, next steps, and a follow-up email draft
|
||||
- **Lecture notes**: structured academic notes with key concepts, definitions, exam-relevant points, and connections to previous material
|
||||
- **Podcast summaries**: TL;DR, numbered key insights, notable quotes, detailed breakdown by topic, and resources mentioned
|
||||
- **Interview extraction**: structured Q&A format, key takeaways, notable quotes, and follow-up questions
|
||||
- **Voice journal**: personal reflections with mood detection, structured themes, and insights
|
||||
- **General transcription**: clean transcript with executive summary and key points for anything that does not fit the above
|
||||
- **Multi-speaker detection**: identifies and labels different speakers throughout the transcript
|
||||
- **Action item extraction**: catches explicit, implicit, and conditional actions with confidence levels
|
||||
- **Sentiment analysis**: flags emotionally charged segments (heated debates, frustration, enthusiasm)
|
||||
- **Glossary generation**: extracts domain-specific terms and jargon into a glossary table
|
||||
- **Follow-up email generator**: creates a ready-to-send email summarizing meeting outcomes
|
||||
|
||||
## How to use it
|
||||
|
||||
Paste a transcript or describe what you want to process. All of these phrases invoke the `/transcribe` skill:
|
||||
|
||||
- "Transcribe this meeting: [paste transcript]"
|
||||
- "Process these meeting notes"
|
||||
- "Summarize this podcast transcript"
|
||||
- "Create lecture notes from this: [paste]"
|
||||
- "Process my voice memo"
|
||||
- "What came out of the meeting? [paste]"
|
||||
- "Interview notes: [paste transcript]"
|
||||
|
||||
In Italian: "Trascrivi", "Sbobina", "Note del meeting", "Riassumi la call"
|
||||
In French: "Transcrire", "Notes de reunion", "Resume du podcast"
|
||||
In Spanish: "Transcribir", "Notas de reunion", "Resumen del podcast"
|
||||
In German: "Transkribieren", "Besprechungsnotizen", "Podcast-Zusammenfassung"
|
||||
|
||||
## Example conversations
|
||||
|
||||
### Meeting transcript processing
|
||||
|
||||
**You:** Process this meeting transcript: [pastes a 40-minute Zoom meeting transcript]
|
||||
|
||||
**Transcriber:** Before I process this, let me gather some context:
|
||||
|
||||
1. Date of the meeting? (I will default to today if not specified)
|
||||
2. Can you confirm the participants? I detected 4 speakers: Marco, Sarah, you, and someone labeled "Speaker D"
|
||||
3. Does this relate to a specific project?
|
||||
|
||||
**You:** Yesterday, Speaker D is Luca, it's about Project Alpha
|
||||
|
||||
**Transcriber:** Got it. Here is the processed meeting note:
|
||||
|
||||
**Sprint Planning, Project Alpha** (saved to `00-Inbox/`)
|
||||
|
||||
- Executive Summary: 4-sentence overview of the meeting
|
||||
- 6 Key Points covering the main topics discussed
|
||||
- 3 Decisions Made (with who decided and rationale)
|
||||
- Action Items table:
|
||||
|
||||
| Who | What | Deadline | Confidence |
|
||||
|-----|------|----------|------------|
|
||||
| You | Deliver pricing report | Friday | High |
|
||||
| Marco | Review API specs | Next Monday | High |
|
||||
| Sarah | Schedule client demo | TBD | Medium |
|
||||
| Luca | Investigate performance issue | This week | Low (inferred) |
|
||||
|
||||
- Detailed notes broken into 4 topic sections with timestamps
|
||||
- 2 Open questions flagged for follow-up
|
||||
- Follow-up email draft ready to send to attendees
|
||||
|
||||
Want me to adjust anything?
|
||||
|
||||
---
|
||||
|
||||
### Podcast summary
|
||||
|
||||
**You:** Summarize this podcast transcript. It's the Tim Ferriss show, episode about deep work with Cal Newport
|
||||
|
||||
**Transcriber:** Created `2026-03-21 - Podcast - Tim Ferriss on Deep Work.md`
|
||||
|
||||
**TL;DR:** Cal Newport argues that deep work is becoming both rarer and more valuable in the knowledge economy. The key insight: scheduling deep work blocks is more effective than trying to "find time" for it.
|
||||
|
||||
**Key Insights (7):**
|
||||
1. Deep work is a skill that atrophies without practice...
|
||||
2. The "any benefit" mindset for tools is the enemy of focus...
|
||||
[...]
|
||||
|
||||
**Notable Quotes:** 3 blockquotes captured with speaker attribution
|
||||
|
||||
**Resources Mentioned:** 4 books and 2 tools referenced in the episode
|
||||
|
||||
I also noticed this connects to your notes on productivity systems in `03-Resources/`. Want me to flag it for the Connector?
|
||||
|
||||
---
|
||||
|
||||
### Voice journal
|
||||
|
||||
**You:** Process my voice memo: [pastes a personal reflection transcript]
|
||||
|
||||
**Transcriber:** Processed as a Voice Journal entry.
|
||||
|
||||
**Detected mood:** Reflective, slightly anxious
|
||||
**Energy level:** Medium
|
||||
|
||||
Core reflection: You are processing the tension between your desire to take on the new project and your concern about overcommitting, especially given recent burnout.
|
||||
|
||||
I structured your thoughts into 3 themes: work-life boundaries, the new project opportunity, and recovery from burnout.
|
||||
|
||||
Saved as `2026-03-21 - Voice Journal - New Project Tensions.md`. Want to review it?
|
||||
|
||||
## Works with
|
||||
|
||||
- **Sorter**: all transcription output lands in the Inbox for the Sorter to file
|
||||
- **Postman**: when a meeting note references email threads, the Transcriber flags the Postman to cross-link
|
||||
- **Architect**: when a meeting introduces a new project or area, the Transcriber notifies the Architect
|
||||
- **Connector**: meeting notes that reference past decisions are flagged for cross-linking
|
||||
|
||||
## Tips
|
||||
|
||||
- **Provide participant names upfront.** The Transcriber asks for names, but giving them in your first message saves a round trip.
|
||||
- **Mention the project or area.** Context helps the Transcriber tag and link more accurately.
|
||||
- **Use the follow-up email draft.** For work meetings, the auto-generated email is a huge time saver. Review it and send.
|
||||
- **Check the confidence scores on action items.** "High" means someone explicitly said it. "Low" means the Transcriber inferred it from context, so verify these.
|
||||
- **Use voice journal mode for personal reflections.** It preserves your authentic voice instead of making everything sound corporate.
|
||||
- **Paste raw transcripts without cleanup.** The Transcriber handles filler words, broken sentences, and transcription artifacts. Do not waste time pre-editing.
|
||||
|
||||
## What it remembers
|
||||
|
||||
The Transcriber keeps a post-it in `Meta/states/transcriber.md` with notes from its last transcription: speaker names and roles it learned, meeting series context, and domain terminology it discovered. This means it gets better at identifying speakers and jargon over time.
|
||||
@@ -0,0 +1,219 @@
|
||||
# Codex CLI Guide
|
||||
|
||||
This guide covers everything you need to install, update, and run My Brain Is Full — Crew on [Codex CLI](https://openai.com/codex) (`@openai/codex`).
|
||||
|
||||
> **Windows note:** Codex CLI's Windows support is experimental. If you are on Windows, running inside WSL (Windows Subsystem for Linux) is strongly recommended.
|
||||
|
||||
---
|
||||
|
||||
## Install and update commands
|
||||
|
||||
### First-time install
|
||||
|
||||
```bash
|
||||
# Install Codex CLI globally
|
||||
npm i -g @openai/codex@latest
|
||||
|
||||
# Clone the repo inside your vault and install the Crew
|
||||
cd /path/to/your-vault
|
||||
git clone https://github.com/gnekt/My-Brain-Is-Full-Crew.git
|
||||
cd My-Brain-Is-Full-Crew
|
||||
bash scripts/launchme.sh --platform codex-cli
|
||||
```
|
||||
|
||||
The installer accepts an optional `--target` flag if you want to point it at a vault in a non-standard location:
|
||||
|
||||
```bash
|
||||
bash scripts/launchme.sh --platform codex-cli --target /path/to/your-vault
|
||||
```
|
||||
|
||||
### Update after a git pull
|
||||
|
||||
```bash
|
||||
cd /path/to/your-vault/My-Brain-Is-Full-Crew
|
||||
git pull
|
||||
bash scripts/updateme.sh --platform codex-cli
|
||||
```
|
||||
|
||||
The updater auto-detects Codex CLI by checking for `.codex/agents` in your vault. If multiple platforms are installed, pass `--platform codex-cli` explicitly.
|
||||
|
||||
---
|
||||
|
||||
## What installs where
|
||||
|
||||
After running `launchme.sh --platform codex-cli`, your vault will contain:
|
||||
|
||||
```
|
||||
your-vault/
|
||||
├── .codex/
|
||||
│ ├── agents/ ← 8 core crew agents (.toml format)
|
||||
│ ├── references/ ← shared docs the agents read
|
||||
│ └── config.toml ← MCP server definitions + profiles + sandbox policy
|
||||
├── .agents/
|
||||
│ └── skills/ ← 14 specialized skills (plain text instructions)
|
||||
├── Meta/
|
||||
│ └── scripts/ ← orchestra scripts (permission-free agent commands)
|
||||
└── AGENTS.md ← dispatcher (project instructions for Codex)
|
||||
```
|
||||
|
||||
Key differences from other platforms:
|
||||
|
||||
| Path | Purpose |
|
||||
|------|---------|
|
||||
| `.codex/agents/*.toml` | Custom agent definitions (Codex native format) |
|
||||
| `.agents/skills/` | Repo-scoped skill instructions (shared discovery path) |
|
||||
| `.codex/config.toml` | MCP servers, approval policy, sandbox mode, model profiles |
|
||||
| `AGENTS.md` | Dispatcher — Codex reads this as its primary project instruction file |
|
||||
|
||||
---
|
||||
|
||||
## Architecture differences from Claude Code, Gemini CLI, and OpenCode
|
||||
|
||||
### Dispatcher
|
||||
|
||||
All platforms use a dispatcher file, but the name and format differ:
|
||||
|
||||
| Platform | Dispatcher file |
|
||||
|----------|----------------|
|
||||
| Claude Code | `CLAUDE.md` |
|
||||
| Gemini CLI | `GEMINI.md` |
|
||||
| OpenCode | `AGENTS.md` |
|
||||
| Codex CLI | `AGENTS.md` (with root-context routing header) |
|
||||
|
||||
Codex CLI shares the `AGENTS.md` name with OpenCode but prepends a routing header that handles orchestration within the `agents.max_depth = 1` constraint (see below).
|
||||
|
||||
### Agent format
|
||||
|
||||
Claude Code, Gemini CLI, and OpenCode all use Markdown (`.md`) agent files. Codex CLI uses TOML:
|
||||
|
||||
```
|
||||
.claude/agents/architect.md ← Claude Code
|
||||
.gemini/agents/architect.md ← Gemini CLI
|
||||
.opencode/agents/architect.md ← OpenCode
|
||||
.codex/agents/architect.toml ← Codex CLI
|
||||
```
|
||||
|
||||
### Skills location
|
||||
|
||||
Skills install to `.agents/skills/` for Codex (not `.codex/skills/`). Codex CLI discovers skills from this shared path.
|
||||
|
||||
### Agent chaining (max_depth constraint)
|
||||
|
||||
Codex CLI enforces `agents.max_depth = 1`. This means child agents can only go one level deep. My Brain Is Full — Crew handles this through root-context orchestration:
|
||||
|
||||
- The dispatcher embeds orchestration instructions in the root context (not in a child)
|
||||
- Child agents (`spawn_agent`) finish one bounded task and return to root
|
||||
- Any next step is decided from the root context, not by a nested child
|
||||
|
||||
### Tool name differences
|
||||
|
||||
Codex CLI does not have the `AskUserQuestion` or `request_user_input` tools. The equivalent patterns are:
|
||||
|
||||
| Source concept | Codex CLI equivalent |
|
||||
|---|---|
|
||||
| `AskUserQuestion` | Ask a direct question in the chat thread and wait for the reply |
|
||||
| `request_user_input` | Same — use the root conversation for follow-up questions |
|
||||
| `Skill tool` | Follow the skill instructions directly in the root context |
|
||||
| `Agent tool` | Use `spawn_agent` for a bounded child task; orchestration returns to root |
|
||||
| `max chain depth 3` | `agents.max_depth = 1` with root-only orchestration |
|
||||
| `.mcp.json` | `.codex/config.toml` |
|
||||
|
||||
### MCP configuration
|
||||
|
||||
Claude Code uses `.mcp.json`. Codex CLI uses `.codex/config.toml`. The MCP server, approval policy, sandbox mode, and model profile settings all live in the TOML config. The CLI and Codex IDE extension share this same config file.
|
||||
|
||||
---
|
||||
|
||||
## Runtime smoke matrix
|
||||
|
||||
Use this table to verify the Crew works correctly in a real Codex vault after install or update. Run each row and compare the result against the expected outcome.
|
||||
|
||||
| Surface | Name | Prompt or command | Expected result |
|
||||
|---------|------|-------------------|----------------|
|
||||
| Agent | Architect | `@Architect Set up my vault structure` | Architect starts onboarding conversation or confirms vault is already set up |
|
||||
| Agent | Scribe | `@Scribe Save this note: quick test` | Scribe creates a note in 00-Inbox with proper frontmatter |
|
||||
| Agent | Sorter | `@Sorter Triage my inbox` | Sorter reviews inbox notes and files them, or reports inbox is empty |
|
||||
| Agent | Seeker | `@Seeker What do I know about this project?` | Seeker searches the vault and returns results with source citations |
|
||||
| Agent | Connector | `@Connector Find connections in my recent notes` | Connector analyzes the vault graph and suggests wikilinks |
|
||||
| Agent | Librarian | `@Librarian Run a vault health check` | Librarian scans for broken links, duplicates, and orphan notes |
|
||||
| Agent | Transcriber | `@Transcriber Process this transcript: [paste text]` | Transcriber generates structured meeting notes |
|
||||
| Agent | Postman | `@Postman Check my email` | Postman scans Gmail (or Hey) and saves actionable emails, or reports missing integration |
|
||||
| Skill | onboarding | `/onboarding` | Architect starts the full onboarding conversation |
|
||||
| Skill | create-agent | `/create-agent` | Architect walks through designing a new custom agent |
|
||||
| Skill | manage-agent | `/manage-agent` | Architect lists, edits, or removes custom agents |
|
||||
| Skill | defrag | `/defrag` | Architect runs the 5-phase vault defragmentation |
|
||||
| Skill | email-triage | `/email-triage` | Postman scans and prioritizes unread emails |
|
||||
| Skill | meeting-prep | `/meeting-prep` | Postman generates a comprehensive meeting brief |
|
||||
| Skill | weekly-agenda | `/weekly-agenda` | Postman produces a day-by-day week overview |
|
||||
| Skill | deadline-radar | `/deadline-radar` | Postman produces a unified deadline timeline |
|
||||
| Skill | transcribe | `/transcribe` | Transcriber processes a recording or transcript into structured notes |
|
||||
| Skill | vault-audit | `/vault-audit` | Librarian runs the full 7-phase vault audit |
|
||||
| Skill | deep-clean | `/deep-clean` | Librarian runs the extended vault cleanup |
|
||||
| Skill | tag-garden | `/tag-garden` | Librarian analyzes and cleans up tags |
|
||||
| Skill | inbox-triage | `/inbox-triage` | Sorter processes and routes all inbox notes |
|
||||
| Skill | contact-sync | `/contact-sync` | Postman syncs contacts to Apple Contacts |
|
||||
| Chaining | bounded child-agent chain | `@Sorter Triage my inbox` (with notes present that mention a new project) | Sorter files notes, then dispatcher signals Architect to create the new project folder; child returns to root before Architect runs |
|
||||
| MCP | MCP visibility | `codex -C <vault> mcp list` | Lists the MCP servers configured in `.codex/config.toml`, or shows the auth/setup state for each server |
|
||||
|
||||
### Running the non-interactive discovery smoke
|
||||
|
||||
```bash
|
||||
codex exec -C <vault> "List the project custom agents under .codex/agents, the repo skills under .agents/skills, and the dispatcher file used in this workspace."
|
||||
```
|
||||
|
||||
Expected output references:
|
||||
- `AGENTS.md` (the dispatcher)
|
||||
- `.codex/agents` path (custom agents)
|
||||
- `.agents/skills` path (repo skills)
|
||||
|
||||
### Running the MCP visibility smoke
|
||||
|
||||
```bash
|
||||
codex -C <vault> mcp list
|
||||
```
|
||||
|
||||
Expected: lists MCP servers from `.codex/config.toml` (e.g., `Gmail`, `Calendar`) or shows their auth/setup state.
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Agents are not discovered
|
||||
|
||||
- Verify `.codex/agents/` exists in your vault root and contains `.toml` files.
|
||||
- Open Codex CLI from your vault directory: `codex -C /path/to/your-vault`
|
||||
- Check that `AGENTS.md` exists at the vault root (not inside the repo subdirectory).
|
||||
|
||||
### Skills are not available
|
||||
|
||||
- Verify `.agents/skills/` exists in your vault root and contains subdirectories.
|
||||
- Skills must be at the vault root level: `<vault>/.agents/skills/<skill-name>/`
|
||||
|
||||
### Child agent chain does not return to root
|
||||
|
||||
- This is a Codex `agents.max_depth = 1` constraint. Child agents can only go one level deep.
|
||||
- The dispatcher uses root-context orchestration to work within this constraint.
|
||||
- If a task seems to require deeper nesting, flatten it: complete the first bounded step in a child, then handle the next step in the root context.
|
||||
|
||||
### MCP server not connecting
|
||||
|
||||
- MCP configuration lives in `.codex/config.toml` (not `.mcp.json`).
|
||||
- Check `codex -C <vault> mcp list` to see the current server status.
|
||||
- For Gmail/Calendar setup, see `docs/gws-setup-guide.md`.
|
||||
- For Apple Contacts, verify the `apple-contacts` server entry in `.codex/config.toml`.
|
||||
|
||||
### Codex errors about approvals
|
||||
|
||||
- Child agent approvals surface in the child thread. Approve or deny there, then continue orchestration from the root context after the child returns.
|
||||
- If a task requires deeper recursion, stop spawning children and flatten the next step into the root context or split the work into separate bounded child tasks.
|
||||
|
||||
### Windows users
|
||||
|
||||
Codex CLI's Windows support is experimental. Use WSL (Windows Subsystem for Linux) for the most reliable experience. From WSL, follow the standard Linux install path above.
|
||||
|
||||
### Reinstall vs update
|
||||
|
||||
- **Reinstall** (`launchme.sh`): Use when setting up a new vault or recovering from a broken state.
|
||||
- **Update** (`updateme.sh`): Use after `git pull` to push new agents, skills, and references to an existing vault. Custom agents are never overwritten.
|
||||
|
||||
For a migration from another platform, see [docs/codex-migration.md](codex-migration.md).
|
||||
@@ -0,0 +1,172 @@
|
||||
# Migrating to Codex CLI
|
||||
|
||||
This guide covers how to move an existing My Brain Is Full — Crew installation from Claude Code, Gemini CLI, or OpenCode to Codex CLI. It also explains what transfers automatically and what needs manual attention.
|
||||
|
||||
> **If you are doing a fresh install** (not migrating), follow [docs/codex-cli.md](codex-cli.md) instead.
|
||||
|
||||
---
|
||||
|
||||
## When to reinstall vs update
|
||||
|
||||
| Scenario | Recommended action |
|
||||
|----------|-------------------|
|
||||
| You have an existing Claude Code / Gemini CLI / OpenCode vault and want to add Codex CLI alongside it | Run `bash scripts/launchme.sh --platform codex-cli` in the same vault — multiple platforms can coexist |
|
||||
| You want to switch exclusively to Codex CLI | Run `launchme.sh --platform codex-cli`; the other platform files remain but are inactive |
|
||||
| Your Codex layout is broken or missing files | Run `launchme.sh --platform codex-cli` again — it is idempotent and safe to re-run |
|
||||
| You pulled new repo changes and want to update Codex | Run `bash scripts/updateme.sh --platform codex-cli` |
|
||||
|
||||
You do not need to remove other platform directories. Codex CLI only reads `.codex/` and `.agents/skills/`; it ignores `.claude/`, `.gemini/`, and `.opencode/`.
|
||||
|
||||
---
|
||||
|
||||
## Path mapping by platform
|
||||
|
||||
When you switch to Codex CLI, the project files move to new paths. Use this table to locate your existing files and understand where the equivalent lives in Codex.
|
||||
|
||||
| Source platform | Dispatcher | Agents | Skills | MCP or config | Codex target |
|
||||
|----------------|-----------|--------|--------|--------------|-------------|
|
||||
| Claude Code | `CLAUDE.md` | `.claude/agents/*.md` | `.claude/skills/` | `.mcp.json` | `AGENTS.md` / `.codex/agents/*.toml` / `.agents/skills/` / `.codex/config.toml` |
|
||||
| Gemini CLI | `GEMINI.md` | `.gemini/agents/*.md` | `.gemini/skills/` | (none) | `AGENTS.md` / `.codex/agents/*.toml` / `.agents/skills/` / `.codex/config.toml` |
|
||||
| OpenCode | `AGENTS.md` | `.opencode/agents/*.md` | `.opencode/skills/` | `opencode.json` | `AGENTS.md` / `.codex/agents/*.toml` / `.agents/skills/` / `.codex/config.toml` |
|
||||
|
||||
After running `launchme.sh --platform codex-cli`, the Codex files are installed automatically. You do not need to copy the old platform files manually.
|
||||
|
||||
---
|
||||
|
||||
## Moving from Claude Code
|
||||
|
||||
1. Pull the latest repo changes:
|
||||
```bash
|
||||
cd /path/to/your-vault/My-Brain-Is-Full-Crew
|
||||
git pull
|
||||
```
|
||||
|
||||
2. Run the Codex installer:
|
||||
```bash
|
||||
bash scripts/launchme.sh --platform codex-cli
|
||||
```
|
||||
|
||||
3. The installer creates:
|
||||
- `.codex/agents/` — all 8 core agents in TOML format
|
||||
- `.agents/skills/` — all 14 skills as plain text instructions
|
||||
- `.codex/config.toml` — MCP servers (translated from `mcp/servers.yaml`)
|
||||
- `AGENTS.md` — dispatcher with Codex routing header
|
||||
|
||||
4. Your existing `.claude/` directory and `CLAUDE.md` are left untouched.
|
||||
|
||||
5. MCP configuration: Claude Code uses `.mcp.json`. Codex CLI uses `.codex/config.toml`. If you added custom MCP servers to `.mcp.json` manually, you will need to add them to `.codex/config.toml` as well. See the `[mcp_servers.*]` TOML table format.
|
||||
|
||||
6. Custom agents: Claude Code custom agents live in `.claude/agents/`. Codex CLI custom agents must be in `.toml` format in `.codex/agents/`. Custom agents created via the `/create-agent` skill are not automatically migrated — see [Custom agents and what does not migrate automatically](#custom-agents-and-what-does-not-migrate-automatically).
|
||||
|
||||
---
|
||||
|
||||
## Moving from Gemini CLI
|
||||
|
||||
1. Pull the latest repo changes:
|
||||
```bash
|
||||
cd /path/to/your-vault/My-Brain-Is-Full-Crew
|
||||
git pull
|
||||
```
|
||||
|
||||
2. Run the Codex installer:
|
||||
```bash
|
||||
bash scripts/launchme.sh --platform codex-cli
|
||||
```
|
||||
|
||||
3. The installer creates the full Codex layout (same as above).
|
||||
|
||||
4. Your existing `.gemini/` directory and `GEMINI.md` are left untouched.
|
||||
|
||||
5. MCP configuration: Gemini CLI does not use `.mcp.json`. If you have MCP servers configured elsewhere, add them to `.codex/config.toml` manually.
|
||||
|
||||
6. Custom agents: Gemini CLI custom agents live in `.gemini/agents/`. These are Markdown files. For Codex CLI, custom agents must be TOML files in `.codex/agents/`. See [Custom agents and what does not migrate automatically](#custom-agents-and-what-does-not-migrate-automatically).
|
||||
|
||||
---
|
||||
|
||||
## Moving from OpenCode
|
||||
|
||||
1. Pull the latest repo changes:
|
||||
```bash
|
||||
cd /path/to/your-vault/My-Brain-Is-Full-Crew
|
||||
git pull
|
||||
```
|
||||
|
||||
2. Run the Codex installer:
|
||||
```bash
|
||||
bash scripts/launchme.sh --platform codex-cli
|
||||
```
|
||||
|
||||
3. The installer creates the full Codex layout. Note that both OpenCode and Codex CLI use `AGENTS.md` as the dispatcher. The installer will overwrite `AGENTS.md` with the Codex-specific version (which includes the root-context routing header). If you are running both platforms from the same vault, be aware that the two platforms share `AGENTS.md`.
|
||||
|
||||
4. Your existing `.opencode/` directory is left untouched.
|
||||
|
||||
5. MCP configuration: OpenCode uses `opencode.json`. Codex CLI uses `.codex/config.toml`. If you added custom MCP servers to `opencode.json`, add them to `.codex/config.toml` manually.
|
||||
|
||||
6. Custom agents: OpenCode custom agents live in `.opencode/agents/` as Markdown files. Codex CLI custom agents must be TOML files in `.codex/agents/`. See [Custom agents and what does not migrate automatically](#custom-agents-and-what-does-not-migrate-automatically).
|
||||
|
||||
---
|
||||
|
||||
## Custom agents and what does not migrate automatically
|
||||
|
||||
When you run the installer, the 8 core crew agents are automatically translated to Codex TOML format. However, **custom agents you created with `/create-agent`** are not automatically migrated because:
|
||||
|
||||
- They live in your platform's agents directory (`.claude/agents/`, `.gemini/agents/`, etc.)
|
||||
- They are Markdown files; Codex requires TOML
|
||||
- The installer never overwrites or deletes files in the agents directory that it did not create
|
||||
|
||||
### To migrate a custom agent manually
|
||||
|
||||
1. Locate your custom agent file (e.g., `.claude/agents/budget-tracker.md`)
|
||||
2. Open Codex CLI in your vault and run `/create-agent`
|
||||
3. Describe the agent's purpose — the Architect will guide you through creating a new `.toml` file in `.codex/agents/`
|
||||
4. Alternatively, create the TOML file manually using one of the generated core agents as a template (e.g., `.codex/agents/scribe.toml`)
|
||||
|
||||
### What the TOML format looks like
|
||||
|
||||
```toml
|
||||
[agent]
|
||||
name = "budget-tracker"
|
||||
description = "Monitors spending notes and flags when you are close to the monthly limit"
|
||||
model = "o4-mini"
|
||||
|
||||
[agent.prompt]
|
||||
content = """
|
||||
You are the Budget Tracker agent for the My Brain Is Full — Crew system.
|
||||
... (your agent instructions here)
|
||||
"""
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Verification after migration
|
||||
|
||||
After running the installer, verify the Codex layout with these commands:
|
||||
|
||||
### Check that files installed correctly
|
||||
|
||||
```bash
|
||||
ls <vault>/.codex/agents/ # Should list *.toml files for all 8 agents
|
||||
ls <vault>/.agents/skills/ # Should list subdirectories for all 14 skills
|
||||
ls <vault>/.codex/config.toml # Should exist with [mcp_servers.*] tables
|
||||
ls <vault>/AGENTS.md # Should exist with Codex routing header
|
||||
```
|
||||
|
||||
### Run the non-interactive discovery smoke
|
||||
|
||||
```bash
|
||||
codex exec -C <vault> "List the project custom agents under .codex/agents, the repo skills under .agents/skills, and the dispatcher file used in this workspace."
|
||||
```
|
||||
|
||||
Expected: response references `AGENTS.md`, `.codex/agents`, and `.agents/skills`.
|
||||
|
||||
### Check MCP visibility
|
||||
|
||||
```bash
|
||||
codex -C <vault> mcp list
|
||||
```
|
||||
|
||||
Expected: lists MCP servers from `.codex/config.toml`.
|
||||
|
||||
### Run the full runtime smoke matrix
|
||||
|
||||
See [docs/codex-cli.md — Runtime smoke matrix](codex-cli.md#runtime-smoke-matrix) for the complete list of agents, skills, chaining, and MCP checks.
|
||||
@@ -0,0 +1,224 @@
|
||||
# Real-World Usage Examples
|
||||
|
||||
Practical scenarios showing how the Crew works in daily life. Each example shows what you say and what happens behind the scenes.
|
||||
|
||||
---
|
||||
|
||||
## Scenario 1: The Brain Dump
|
||||
|
||||
**Situation**: You just got out of a meeting and your head is full of scattered thoughts.
|
||||
|
||||
**You say:**
|
||||
> "Quick dump: Marco wants the API docs by Thursday, Lisa mentioned the budget is getting cut by 15%, I had an idea about using webhooks instead of polling for the notification system, and I need to book a dentist appointment"
|
||||
|
||||
**What happens:**
|
||||
1. **Scribe** detects 4 distinct items
|
||||
2. Creates 4 separate notes:
|
||||
- `Task: API Docs for Marco.md` (with deadline: Thursday, linked to `[[Marco]]`)
|
||||
- `Note: Budget Cut 15 Percent.md` (tagged with #budget, linked to `[[Lisa]]`)
|
||||
- `Idea: Webhooks for Notifications.md` (tagged with #architecture, #notifications)
|
||||
- `Task: Book Dentist Appointment.md` (tagged with #personal, #health)
|
||||
3. All notes land in `00-Inbox/` with proper frontmatter
|
||||
4. Scribe reports: *"Captured 4 notes: 2 tasks, 1 idea, 1 informational note. Shall I save them?"*
|
||||
|
||||
---
|
||||
|
||||
## Scenario 2: Evening Inbox Triage
|
||||
|
||||
**Situation**: End of the day. Your inbox has accumulated 12 notes.
|
||||
|
||||
**You say:**
|
||||
> "Triage my inbox"
|
||||
|
||||
**What happens:**
|
||||
1. The `/inbox-triage` skill scans all 12 notes in `00-Inbox/`
|
||||
2. Reads each note's content and frontmatter
|
||||
3. Files them:
|
||||
- 3 meeting notes go to `06-Meetings/2026/03/`
|
||||
- 2 project tasks go to `01-Projects/Rebrand/`
|
||||
- 1 person note goes to `05-People/`
|
||||
- 2 ideas go to `03-Resources/Ideas/`
|
||||
- 2 ambiguous notes are kept in inbox with questions for you
|
||||
4. Updates 3 MOCs that gained new entries
|
||||
5. Leaves a message for **Connector** to check new links
|
||||
6. Reports the full summary with a clear breakdown
|
||||
|
||||
---
|
||||
|
||||
## Scenario 3: Meeting Transcription
|
||||
|
||||
**Situation**: You recorded a 45-minute sprint planning meeting and pasted the raw transcript.
|
||||
|
||||
**You say:**
|
||||
> "Transcribe this meeting, it was the Q2 sprint planning with Marco, Lisa, and Ahmed. We met today at 10am."
|
||||
|
||||
*[pastes raw transcript]*
|
||||
|
||||
**What happens:**
|
||||
1. The `/transcribe` skill processes the raw text
|
||||
2. Identifies speakers from context
|
||||
3. Generates:
|
||||
- Executive summary (4 sentences)
|
||||
- 8 key discussion points
|
||||
- 3 decisions made (with who decided and conditions)
|
||||
- Action items table (6 tasks, assigned to specific people, with deadlines)
|
||||
- Detailed notes organized by topic
|
||||
- 2 open questions for follow-up
|
||||
4. Creates wikilinks to all participants: `[[Marco]]`, `[[Lisa]]`, `[[Ahmed]]`
|
||||
5. Saves to `00-Inbox/` as `2026-03-21, Meeting, Q2 Sprint Planning.md`
|
||||
6. Leaves message for **Postman**: "Check if there were pre-meeting emails about Q2 planning"
|
||||
|
||||
---
|
||||
|
||||
## Scenario 4: Email Triage
|
||||
|
||||
**Situation**: Monday morning. You want to know what's important in your email.
|
||||
|
||||
**You say:**
|
||||
> "Check my email for anything urgent"
|
||||
|
||||
**What happens:**
|
||||
1. The `/email-triage` skill scans your Gmail inbox (last 48 hours)
|
||||
2. Reads 34 emails
|
||||
3. Filters:
|
||||
- 22 newsletters/promos/notifications are ignored
|
||||
- 3 action requests are saved as notes with tasks
|
||||
- 2 deadline reminders are saved with deadline tags
|
||||
- 4 informational emails from key contacts are saved as reference notes
|
||||
- 1 meeting invitation is saved and flagged for calendar sync
|
||||
- 2 ambiguous emails are summarized for your decision
|
||||
4. All notes land in `00-Inbox/`
|
||||
5. Creates wikilinks to people in `05-People/`
|
||||
6. Reports: *"34 emails scanned. 10 saved to vault (3 urgent, 2 deadlines, 4 info, 1 meeting). 22 filtered out. 2 need your input."*
|
||||
|
||||
---
|
||||
|
||||
## Scenario 7: Knowledge Discovery
|
||||
|
||||
**Situation**: You're writing a proposal and need context from your notes.
|
||||
|
||||
**You say:**
|
||||
> "What do I know about microservices architecture? I need to write a proposal."
|
||||
|
||||
**What happens:**
|
||||
1. **Seeker** searches your entire vault
|
||||
2. Finds 7 relevant notes across different areas:
|
||||
- 2 meeting notes where architecture was discussed
|
||||
- 1 resource note on microservices patterns
|
||||
- 3 project notes that reference architectural decisions
|
||||
- 1 archived note from a past project
|
||||
3. Synthesizes: *"Based on your notes, here's what you've documented about microservices..."*
|
||||
4. Provides a structured summary with source citations (`[[Meeting: Architecture Review]]`, etc.)
|
||||
5. Identifies a gap: *"Note: your vault has no notes on service mesh or container orchestration. You might want to add these to your proposal research."*
|
||||
|
||||
---
|
||||
|
||||
## Scenario 8: Weekly Review
|
||||
|
||||
**Situation**: Sunday morning. Time for your weekly vault check-up.
|
||||
|
||||
**You say:**
|
||||
> "Run the weekly review"
|
||||
|
||||
**What happens:**
|
||||
1. The `/vault-audit` skill runs a multi-phase audit:
|
||||
- Structure scan: all folders intact
|
||||
- Duplicate detection: found 1 near-duplicate
|
||||
- Link integrity: 3 broken links fixed automatically, 2 orphan notes flagged
|
||||
- Frontmatter audit: 5 notes missing tags (auto-fixed)
|
||||
- MOC review: 2 MOCs updated with new entries
|
||||
- Growth analytics: 23 notes added this week, vault health score: 94%
|
||||
2. Generates a health report saved to `Meta/health-reports/`
|
||||
3. Reports: *"Your vault is in great shape! 1 duplicate needs your decision, 2 orphan notes might need homes. Everything else is handled."*
|
||||
|
||||
---
|
||||
|
||||
## Scenario 10: Graph Intelligence
|
||||
|
||||
**Situation**: You want to understand how your knowledge connects.
|
||||
|
||||
**You say:**
|
||||
> "Analyze my vault graph and find missing connections"
|
||||
|
||||
**What happens:**
|
||||
1. **Connector** runs a full graph audit
|
||||
2. Reports:
|
||||
- 247 notes, 412 links, average 1.7 links per note
|
||||
- 18 orphan notes (7%, under the 10% target)
|
||||
- 3 isolated clusters
|
||||
- Top connected note: your MOC/Engineering with 23 links
|
||||
3. Discovers 12 suggested connections:
|
||||
- 4 strong (should definitely be linked)
|
||||
- 5 medium (probably useful)
|
||||
- 3 serendipitous (unexpected but interesting)
|
||||
4. Presents each with explanation: *"Your note on 'Team Communication Patterns' should link to 'Sprint Retrospective Q1', because both discuss the same communication breakdown from different angles."*
|
||||
|
||||
---
|
||||
|
||||
## Codex CLI session examples
|
||||
|
||||
These examples show how to start and use the Crew with Codex CLI specifically.
|
||||
|
||||
### Install and launch
|
||||
|
||||
```bash
|
||||
# Install Codex CLI
|
||||
npm i -g @openai/codex@latest
|
||||
|
||||
# Install the Crew for Codex CLI
|
||||
bash scripts/launchme.sh --platform codex-cli
|
||||
|
||||
# Launch Codex in your vault
|
||||
codex -C /path/to/your-vault
|
||||
```
|
||||
|
||||
### Verify the layout before your first session
|
||||
|
||||
```bash
|
||||
# Non-interactive discovery smoke — confirms agents, skills, and dispatcher are visible
|
||||
codex exec -C /path/to/your-vault "List the project custom agents under .codex/agents, the repo skills under .agents/skills, and the dispatcher file used in this workspace."
|
||||
|
||||
# Check MCP server visibility
|
||||
codex -C /path/to/your-vault mcp list
|
||||
```
|
||||
|
||||
### Using agents and skills inside Codex
|
||||
|
||||
Once inside the interactive `codex` session, the Crew works the same way as on other platforms — just talk naturally:
|
||||
|
||||
```
|
||||
"Initialize my vault" → /onboarding skill starts
|
||||
"Save this note: quick idea" → Scribe agent captures it
|
||||
"Triage my inbox" → /inbox-triage skill runs
|
||||
"Check my email" → /email-triage skill scans Gmail
|
||||
"Weekly review" → /vault-audit skill audits vault
|
||||
```
|
||||
|
||||
### Update after a git pull
|
||||
|
||||
```bash
|
||||
cd /path/to/your-vault/My-Brain-Is-Full-Crew
|
||||
git pull
|
||||
bash scripts/updateme.sh --platform codex-cli
|
||||
```
|
||||
|
||||
For the full runtime smoke matrix covering all 8 agents, all 14 skills, bounded child-agent chaining, and MCP visibility, see [docs/codex-cli.md](codex-cli.md).
|
||||
|
||||
---
|
||||
|
||||
## Daily Workflow Cheat Sheet
|
||||
|
||||
| Time | What to say | Skill/Agent |
|
||||
|------|------------|-------------|
|
||||
| Morning | "What's on my calendar today?" | Postman agent |
|
||||
| Morning | "Check my email" | `/email-triage` skill |
|
||||
| Any time | "Save this: [thought]" | Scribe agent |
|
||||
| After meeting | "Transcribe this meeting: [paste]" | `/transcribe` skill |
|
||||
| Evening | "Triage my inbox" | `/inbox-triage` skill |
|
||||
| Weekly | "Weekly review" | `/vault-audit` skill |
|
||||
| When lost | "Find [topic]" | Seeker agent |
|
||||
| When stuck | "Find connections for [note]" | Connector agent |
|
||||
|
||||
---
|
||||
|
||||
*These are just examples. The beauty of the Crew is that you don't need to memorize commands. Just talk naturally, and the right agent will pick it up.*
|
||||
@@ -0,0 +1,292 @@
|
||||
# Getting Started with My Brain Is Full - Crew
|
||||
|
||||
A step-by-step guide for setting up your AI-powered vault. No technical background required.
|
||||
|
||||
---
|
||||
|
||||
## What you need before starting
|
||||
|
||||
### Required
|
||||
- **Obsidian**: A free note-taking app. Download it at [obsidian.md](https://obsidian.md)
|
||||
- **An agent platform**: one of [Claude Code](https://claude.ai/code) (Pro/Max/Team), [Gemini CLI](https://github.com/google-gemini/gemini-cli), [OpenCode](https://opencode.ai), or [Codex CLI](https://openai.com/codex) (`npm i -g @openai/codex`).
|
||||
|
||||
> **Windows + Codex CLI:** Codex CLI's Windows support is experimental. If you plan to use Codex CLI on Windows, run it inside WSL (Windows Subsystem for Linux) for the best experience.
|
||||
- **An Obsidian vault**: This is just a folder on your computer where Obsidian stores your notes. If you don't have one yet, Obsidian will create one for you when you first open it.
|
||||
- **Git**: A tool to download the project. On Mac, the terminal will prompt you to install it automatically the first time you use it. On Windows, download it from [git-scm.com](https://git-scm.com).
|
||||
|
||||
### Optional (but recommended)
|
||||
- **Gmail account**: If you want the Postman agent to process your Gmail inbox (via GWS CLI or MCP)
|
||||
- **Hey.com account**: If you use Hey for email (via Hey CLI) — works alongside or instead of Gmail
|
||||
- **Google Calendar**: If you want calendar integration
|
||||
|
||||
---
|
||||
|
||||
## Step 1: Install Obsidian
|
||||
|
||||
1. Go to [obsidian.md](https://obsidian.md) and download the app for your system (Mac, Windows, or Linux)
|
||||
2. Open Obsidian
|
||||
3. If this is your first time, click **"Create new vault"**
|
||||
4. Give it a name (e.g., "My Brain", "Second Brain", "Knowledge Base", whatever feels right)
|
||||
5. Choose where to save it on your computer
|
||||
6. Remember this location. You'll need it in Step 3
|
||||
|
||||
### Install recommended plugins
|
||||
|
||||
Inside Obsidian:
|
||||
1. Go to **Settings** (gear icon, bottom left)
|
||||
2. Click **Community plugins**
|
||||
3. Click **Browse**
|
||||
4. Search for and install these plugins:
|
||||
|
||||
**Essential (install these first):**
|
||||
| Plugin | What it does |
|
||||
|--------|-------------|
|
||||
| **Templater** | Makes templates work with dynamic content (dates, etc.) |
|
||||
| **Dataview** | Lets you query your notes like a database |
|
||||
| **Calendar** | Visual calendar in the sidebar |
|
||||
| **Tasks** | Better task management with due dates and queries |
|
||||
|
||||
**Recommended (install when ready):**
|
||||
| Plugin | What it does |
|
||||
|--------|-------------|
|
||||
| **QuickAdd** | Rapid note capture |
|
||||
| **Folder Notes** | Index notes for folders |
|
||||
| **Tag Wrangler** | Manage and rename tags in bulk |
|
||||
| **Periodic Notes** | Weekly and monthly review notes |
|
||||
| **Omnisearch** | Better search across your vault |
|
||||
|
||||
Don't worry if this feels like a lot. The Architect agent will remind you about missing plugins during setup.
|
||||
|
||||
---
|
||||
|
||||
## Step 2: Install an agent platform
|
||||
|
||||
Install one of the following:
|
||||
|
||||
| Platform | Install | Subscription |
|
||||
|----------|---------|-------------|
|
||||
| **Claude Code** | [claude.ai/code](https://claude.ai/code) | Claude Pro, Max, or Team |
|
||||
| **Gemini CLI** | [github.com/google-gemini/gemini-cli](https://github.com/google-gemini/gemini-cli) | Google account |
|
||||
| **OpenCode** | [opencode.ai](https://opencode.ai) | Varies by provider |
|
||||
| **Codex CLI** | `npm i -g @openai/codex` | OpenAI account |
|
||||
|
||||
Claude Code works as both CLI and Desktop app (Cowork). The Crew works on all four supported platforms.
|
||||
|
||||
---
|
||||
|
||||
## Step 3: Install the Crew
|
||||
|
||||
Open your terminal and navigate to your Obsidian vault folder:
|
||||
|
||||
```bash
|
||||
cd /path/to/your-vault
|
||||
```
|
||||
|
||||
> **Not sure how to open the terminal?** On Mac, press `Command + Space`, type "Terminal", and press Enter. On Windows, press `Windows + R`, type "cmd", and press Enter.
|
||||
|
||||
Clone the repo inside your vault:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/gnekt/My-Brain-Is-Full-Crew.git
|
||||
```
|
||||
|
||||
Run the installer:
|
||||
|
||||
```bash
|
||||
cd My-Brain-Is-Full-Crew
|
||||
bash scripts/launchme.sh
|
||||
```
|
||||
|
||||
The script will ask a couple of questions:
|
||||
1. **Which platform?** Select your agent platform (Claude Code, Gemini CLI, OpenCode, or Codex CLI)
|
||||
2. **Is this your vault folder?** Confirm or enter the correct path
|
||||
|
||||
When it's done, your vault will look like this (paths vary by platform):
|
||||
|
||||
```
|
||||
your-vault/
|
||||
├── .<platform>/ ← .claude/, .gemini/, .opencode/
|
||||
│ ├── agents/ ← 8 lightweight crew agents
|
||||
│ ├── skills/ ← 14 specialized skills for complex flows
|
||||
│ ├── hooks/ ← file protection and validation
|
||||
│ └── references/ ← shared docs the agents read
|
||||
├── CLAUDE.md / GEMINI.md / AGENTS.md ← dispatcher (varies by platform)
|
||||
├── My-Brain-Is-Full-Crew/ ← the repo (for future updates)
|
||||
└── ... your Obsidian notes
|
||||
```
|
||||
|
||||
**Codex CLI** uses a split layout instead of a single platform directory:
|
||||
|
||||
```
|
||||
your-vault/
|
||||
├── .codex/
|
||||
│ ├── agents/ ← 8 core agents (.toml format)
|
||||
│ ├── references/ ← shared docs
|
||||
│ └── config.toml ← MCP servers + profiles + sandbox policy
|
||||
├── .agents/
|
||||
│ └── skills/ ← 14 specialized skills
|
||||
├── AGENTS.md ← dispatcher
|
||||
├── My-Brain-Is-Full-Crew/ ← the repo (for future updates)
|
||||
└── ... your Obsidian notes
|
||||
```
|
||||
|
||||
> **Something went wrong?** The most common issue is that `git` isn't installed. On Mac, the terminal will prompt you to install it automatically. On Windows, download it from [git-scm.com](https://git-scm.com). If you're stuck, just show this page to a tech-savvy friend. It takes 60 seconds.
|
||||
|
||||
---
|
||||
|
||||
## Step 4: Connect your vault
|
||||
|
||||
1. Open your agent platform (Claude Code, Gemini CLI, OpenCode, or Codex CLI)
|
||||
2. Open it **inside your Obsidian vault folder**. This is important: the platform needs to be in your vault to read and write your notes.
|
||||
|
||||
If you're using a CLI tool:
|
||||
```bash
|
||||
cd /path/to/your-vault
|
||||
claude # or: gemini, opencode, codex
|
||||
```
|
||||
|
||||
For Codex CLI, you can also use the `-C` flag to point directly at your vault:
|
||||
```bash
|
||||
codex -C /path/to/your-vault
|
||||
```
|
||||
|
||||
If you're using Claude Code Desktop (Cowork), open the vault folder as your working directory.
|
||||
|
||||
---
|
||||
|
||||
## Step 5: Initialize your vault
|
||||
|
||||
This is the fun part. Just type:
|
||||
|
||||
> **"Initialize my vault"**
|
||||
|
||||
The `/onboarding` skill will kick in and the **Architect** will start a friendly conversation with you. It will ask:
|
||||
|
||||
### About you
|
||||
- What should I call you?
|
||||
- What's your preferred language?
|
||||
- What do you do? (student, professional, creative, researcher...)
|
||||
- What brought you here? (overwhelm, organization, health, productivity...)
|
||||
|
||||
### About your vault
|
||||
- Are you new to Obsidian, or migrating from an existing vault?
|
||||
- Do you want all 8 agents, or just some?
|
||||
- What areas of your life do you want to manage?
|
||||
|
||||
### About integrations (optional)
|
||||
- Do you want email triage? (requires Gmail via GWS/MCP, or Hey.com via Hey CLI)
|
||||
- Do you want calendar integration? (requires Google Calendar via GWS/MCP)
|
||||
|
||||
After the conversation, the Architect creates your entire vault structure, saves your profile, and leaves you a personalized welcome note.
|
||||
|
||||
### Agent memory (Post-it)
|
||||
|
||||
Every agent has a small "post-it" file in `Meta/states/` where it jots down notes for its next run. This means agents remember what they did last time: the Sorter knows which files it already triaged, the Scribe remembers what you were brainstorming about, the Architect knows which onboarding step you were on if the conversation was interrupted.
|
||||
|
||||
You don't need to manage these files — agents handle them automatically. Each post-it is limited to 30 lines, so they never grow out of control.
|
||||
|
||||
---
|
||||
|
||||
## Step 6: Start using it
|
||||
|
||||
From now on, you just talk to your agent. Here are some things to try on your first day:
|
||||
|
||||
### Capture some thoughts
|
||||
> "Save this: I had an idea about reorganizing the team standup. Maybe we should do async updates on Mondays and only meet on Wednesdays"
|
||||
|
||||
The **Scribe** will turn this into a clean note in your inbox.
|
||||
|
||||
### Dump several things at once
|
||||
> "Quick notes: need to call the dentist, also Marco mentioned a book called Thinking Fast and Slow, and I should review the Q3 budget before Friday"
|
||||
|
||||
The **Scribe** detects multiple items and creates separate notes for each.
|
||||
|
||||
### Check your email
|
||||
> "Check my email for anything important"
|
||||
|
||||
The `/email-triage` skill scans your inbox (Gmail or Hey.com), saves actionable emails, and gives you a summary.
|
||||
|
||||
### File everything
|
||||
> "Triage my inbox"
|
||||
|
||||
The `/inbox-triage` skill processes all notes in your inbox and files them to the right places.
|
||||
|
||||
### Search your brain
|
||||
> "What do I know about the Henderson project?"
|
||||
|
||||
The **Seeker** searches your vault and synthesizes an answer with source citations.
|
||||
|
||||
---
|
||||
|
||||
## Step 7: Build daily habits
|
||||
|
||||
The Crew works best with simple daily routines:
|
||||
|
||||
### Morning (2 minutes)
|
||||
> "Check my calendar for today" to see what's ahead
|
||||
> "Any messages from the crew?" to check if agents flagged anything
|
||||
|
||||
### Throughout the day
|
||||
> Just dump thoughts as they come. The Scribe handles the rest.
|
||||
|
||||
### Evening (5 minutes)
|
||||
> "Triage my inbox" to let the Sorter file everything
|
||||
|
||||
### Weekly (10 minutes)
|
||||
> "Weekly review" to run the `/vault-audit` skill for a full vault health check
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "The agent doesn't seem to activate"
|
||||
Make sure your agent platform is open inside your vault folder (not a different directory). Verify agent files exist in the platform's agents directory (e.g., `.claude/agents/`). Try saying the trigger phrase differently. Agents and skills understand natural language in multiple languages.
|
||||
|
||||
### "Email/Calendar isn't working"
|
||||
The Postman needs at least one email backend: GWS CLI (`gws`), Hey CLI (`hey`), or MCP connectors. For GWS, see `docs/gws-setup-guide.md`. For Hey, install from [github.com/basecamp/hey-cli](https://github.com/basecamp/hey-cli) and run `hey auth login`.
|
||||
|
||||
For MCP connectors:
|
||||
- **Claude Code / OpenCode**: run the installer again (`bash scripts/launchme.sh`) and answer **yes** to the Gmail/Calendar question, or manually add the servers to your `.mcp.json` at the vault root.
|
||||
- **Codex CLI**: MCP servers are configured in `.codex/config.toml` (not `.mcp.json`). Run `bash scripts/launchme.sh --platform codex-cli` and the installer writes them automatically. See [docs/codex-cli.md](codex-cli.md) for the full MCP setup details.
|
||||
|
||||
### "My vault structure looks different from the docs"
|
||||
The Architect customizes the structure based on your onboarding answers.
|
||||
|
||||
### "How do I update to a new version?"
|
||||
|
||||
```bash
|
||||
cd /path/to/your-vault/My-Brain-Is-Full-Crew
|
||||
git pull
|
||||
bash scripts/updateme.sh
|
||||
```
|
||||
|
||||
For Codex CLI specifically:
|
||||
```bash
|
||||
bash scripts/updateme.sh --platform codex-cli
|
||||
```
|
||||
|
||||
Only changed files are updated. Your vault notes are never touched.
|
||||
|
||||
### "An agent did something weird"
|
||||
Open an issue on GitHub with:
|
||||
1. What you asked
|
||||
2. What happened
|
||||
3. What you expected
|
||||
|
||||
### "I want to change my profile"
|
||||
> "Update my profile" and the Architect will help you modify your settings
|
||||
|
||||
---
|
||||
|
||||
## Next steps
|
||||
|
||||
- **[Examples](examples.md)**: See real-world usage scenarios
|
||||
- **[Codex CLI Guide](codex-cli.md)**: Install/update guide, architecture differences, runtime smoke matrix, and troubleshooting for Codex CLI
|
||||
- **[Migrate to Codex CLI](codex-migration.md)**: Step-by-step migration from Claude Code, Gemini CLI, or OpenCode
|
||||
- **[Mobile Access](mobile-access.md)**: Use the Crew from your phone
|
||||
- **[Meet the Agents](agents/)**: Deep-dive into each agent's capabilities
|
||||
- **[Contributing](../CONTRIBUTING.md)**: Help make the Crew better
|
||||
|
||||
---
|
||||
|
||||
*Remember: the best organizational system is the one you actually use. Start small. Talk to your agent. Let the Crew handle the rest.*
|
||||
@@ -0,0 +1,249 @@
|
||||
# Setting Up Email Backends for the Postman Agent
|
||||
|
||||
The Postman agent supports three email backends. You can use one or more:
|
||||
|
||||
| Backend | Email Provider | Access Level | Calendar |
|
||||
|---------|---------------|-------------|----------|
|
||||
| **GWS CLI** (`gws`) | Gmail / Google Workspace | Full read/write | Yes (Google Calendar) |
|
||||
| **Hey CLI** (`hey`) | Hey.com | Full read/write | No (Hey has its own productivity tools, not Google Calendar) |
|
||||
| **MCP connectors** | Gmail | Read-only + drafts | Read-only (Google Calendar) |
|
||||
|
||||
If you have both Gmail and Hey.com, you can use `gws` and `hey` simultaneously. Set your preferred primary backend in `Meta/user-profile.md` with `email_backend: hey` or `email_backend: gws` (default: `gws`).
|
||||
|
||||
---
|
||||
|
||||
## Option A: Hey CLI (for Hey.com users)
|
||||
|
||||
### Step 1: Install Hey CLI
|
||||
|
||||
```bash
|
||||
# See https://github.com/basecamp/hey-cli for the latest instructions
|
||||
gem install hey-cli
|
||||
```
|
||||
|
||||
### Step 2: Authenticate
|
||||
|
||||
```bash
|
||||
hey auth login
|
||||
```
|
||||
|
||||
### Step 3: Verify
|
||||
|
||||
```bash
|
||||
hey auth status --json
|
||||
hey box imbox --json --limit 1
|
||||
```
|
||||
|
||||
If both return JSON, you're good. The Postman will auto-detect `hey` on PATH.
|
||||
|
||||
### Troubleshooting Hey
|
||||
|
||||
- **`hey: command not found`**: ensure the gem bin directory is on your PATH. Check with `gem environment` and add `<gem_dir>/bin` to PATH.
|
||||
- **Auth expired**: run `hey auth refresh` or `hey auth login`.
|
||||
- **General issues**: run `hey doctor` for diagnostics.
|
||||
|
||||
---
|
||||
|
||||
## Option B: Google Workspace CLI (for Gmail users)
|
||||
|
||||
The Postman agent uses the [Google Workspace CLI](https://github.com/googleworkspace/cli) (`gws`) to interact with Gmail and Google Calendar. This gives the agent full read/write access — searching, reading, archiving, deleting, labelling emails, and creating/modifying calendar events.
|
||||
|
||||
### Why gws instead of MCP?
|
||||
|
||||
The Anthropic-hosted MCP servers for Gmail and Calendar are read-only (plus draft creation). They cannot archive, delete, label, or send emails. The Google Workspace CLI wraps the full Google API surface, giving the Postman agent the ability to actually manage your inbox — not just read it.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- **Node.js** (v18+) and **npm**
|
||||
- Optional: **Google Cloud SDK** (`gcloud`) — only needed if you prefer CLI-based project setup instead of the Cloud Console UI
|
||||
- A **Google account** (personal Gmail works fine)
|
||||
|
||||
## Step 1: Install the Google Workspace CLI
|
||||
|
||||
```bash
|
||||
npm install -g @googleworkspace/cli
|
||||
```
|
||||
|
||||
Verify:
|
||||
|
||||
```bash
|
||||
gws --version
|
||||
```
|
||||
|
||||
## Step 2: Install Google Cloud SDK (if not already installed)
|
||||
|
||||
### macOS (Apple Silicon)
|
||||
|
||||
```bash
|
||||
curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-darwin-arm.tar.gz
|
||||
tar -xf google-cloud-cli-darwin-arm.tar.gz
|
||||
./google-cloud-sdk/install.sh
|
||||
```
|
||||
|
||||
### macOS (Intel)
|
||||
|
||||
```bash
|
||||
curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-darwin-x86_64.tar.gz
|
||||
tar -xf google-cloud-cli-darwin-x86_64.tar.gz
|
||||
./google-cloud-sdk/install.sh
|
||||
```
|
||||
|
||||
### Other platforms
|
||||
|
||||
See https://cloud.google.com/sdk/docs/install
|
||||
|
||||
After installation, restart your terminal so the new PATH takes effect. If you don't want to restart, you can source your profile manually:
|
||||
|
||||
```bash
|
||||
source ~/.zshrc # or ~/.bashrc
|
||||
```
|
||||
|
||||
Verify:
|
||||
|
||||
```bash
|
||||
gcloud --version
|
||||
```
|
||||
|
||||
## Step 3: Create a Google Cloud project
|
||||
|
||||
1. Go to https://console.cloud.google.com/
|
||||
2. Create a new project (e.g., `my-vault`)
|
||||
3. Note the project ID — you'll need it below
|
||||
|
||||
## Step 4: Configure the OAuth consent screen
|
||||
|
||||
1. Go to **APIs & Services > OAuth consent screen** in your project:
|
||||
`https://console.cloud.google.com/apis/credentials/consent?project=YOUR_PROJECT_ID`
|
||||
2. Choose **External** as User Type (the only option for personal Gmail accounts)
|
||||
3. Fill in the required fields:
|
||||
- App name: anything (e.g., "Vault CLI")
|
||||
- User support email: your email
|
||||
- Developer contact: your email
|
||||
4. Click through the remaining screens (scopes, test users) and save
|
||||
|
||||
**Important — Add yourself as a test user:**
|
||||
|
||||
5. Back on the OAuth consent screen, find the **Audience** section
|
||||
6. Under **Test users**, click **Add users**
|
||||
7. Enter your Gmail address and save
|
||||
|
||||
This step is easy to miss and you will get an "Access blocked" error without it. Unverified apps can only be used by explicitly listed test users.
|
||||
|
||||
## Step 5: Create OAuth credentials
|
||||
|
||||
1. Go to **APIs & Services > Credentials**:
|
||||
`https://console.cloud.google.com/apis/credentials?project=YOUR_PROJECT_ID`
|
||||
2. Click **Create Credentials > OAuth client ID**
|
||||
3. Application type: **Desktop app**
|
||||
4. Name: anything (e.g., "gws-cli")
|
||||
5. Click **Create**
|
||||
6. Copy the **Client ID** and **Client Secret**
|
||||
|
||||
## Step 6: Set up gws authentication
|
||||
|
||||
```bash
|
||||
gws auth setup
|
||||
```
|
||||
|
||||
When prompted, paste your Client ID and Client Secret.
|
||||
|
||||
## Step 7: Log in and select scopes
|
||||
|
||||
```bash
|
||||
gws auth login
|
||||
```
|
||||
|
||||
This opens an interactive scope selector. **Deselect everything** and only keep:
|
||||
|
||||
- `https://www.googleapis.com/auth/gmail.modify` — read/write/archive/delete emails
|
||||
- `https://www.googleapis.com/auth/gmail.send` — send emails and drafts
|
||||
- `https://www.googleapis.com/auth/calendar.events` — create/update/delete calendar events
|
||||
- `https://www.googleapis.com/auth/calendar.calendarlist.readonly` — list available calendars
|
||||
|
||||
Optionally also keep:
|
||||
|
||||
- `https://www.googleapis.com/auth/drive` — if you want Drive access
|
||||
- `https://www.googleapis.com/auth/tasks` — if you want Tasks access
|
||||
- `openid`, `userinfo.email`, `userinfo.profile` — for profile info
|
||||
|
||||
**Do not select all 85+ scopes.** Google will reject the auth request for unverified apps with too many scopes, especially admin/workspace scopes that aren't available to personal accounts.
|
||||
|
||||
After selecting scopes, a browser window opens. Sign in with your Google account. You may see a "This app isn't verified" warning — click **Continue** (this is expected for personal-use OAuth apps).
|
||||
|
||||
On success you'll see:
|
||||
|
||||
```
|
||||
Authentication successful. Encrypted credentials saved.
|
||||
```
|
||||
|
||||
## Step 8: Verify it works
|
||||
|
||||
Test Gmail access:
|
||||
|
||||
```bash
|
||||
gws gmail users messages list --params '{"userId": "me", "maxResults": 3}'
|
||||
```
|
||||
|
||||
Test Calendar access:
|
||||
|
||||
```bash
|
||||
gws calendar events list --params '{"calendarId": "primary", "timeMin": "2026-03-01T00:00:00Z", "maxResults": 3}'
|
||||
```
|
||||
|
||||
Both should return JSON results.
|
||||
|
||||
## Step 9: Remove MCP servers (optional)
|
||||
|
||||
If your `.mcp.json` still has the Anthropic-hosted Gmail/Calendar servers, you can remove them. Remove only the `gmail` and `google-calendar` entries from your `.mcp.json`, leaving any other MCP servers intact.
|
||||
|
||||
If `.mcp.json` contained only those two servers, you can delete the file entirely.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "Access blocked" / Error 403
|
||||
|
||||
You haven't added yourself as a test user. Go back to Step 4, point 5-7.
|
||||
|
||||
### "invalid_scope" / Error 400
|
||||
|
||||
You selected too many scopes, including ones not available to personal Gmail accounts (e.g., admin, classroom, chat). Re-run `gws auth login` and select only the scopes listed in Step 7.
|
||||
|
||||
### "gcloud CLI not found"
|
||||
|
||||
The Google Cloud SDK isn't on your PATH. Restart your terminal. If you don't want to restart, run:
|
||||
|
||||
```bash
|
||||
source ~/google-cloud-sdk/path.zsh.inc # adjust path if installed elsewhere
|
||||
```
|
||||
|
||||
### gws command not found
|
||||
|
||||
Restart your terminal first — this resolves most cases. If it still fails, the npm global bin directory may not be on your PATH. Check with:
|
||||
|
||||
```bash
|
||||
npm config get prefix
|
||||
```
|
||||
|
||||
And ensure `<prefix>/bin` is in your PATH.
|
||||
|
||||
### "Using keyring backend: keyring" warning
|
||||
|
||||
This is normal — gws stores encrypted credentials in your OS keyring. Not an error.
|
||||
|
||||
## How it works in the Postman agent
|
||||
|
||||
The Postman agent calls `gws` commands via the Bash tool. Key operations:
|
||||
|
||||
| Operation | Command |
|
||||
|-----------|---------|
|
||||
| Search inbox | `gws gmail users messages list --params '{"userId": "me", "q": "..."}'` |
|
||||
| Read email | `gws gmail users messages get --params '{"userId": "me", "id": "ID", "format": "full"}'` |
|
||||
| Read thread | `gws gmail users threads get --params '{"userId": "me", "id": "ID"}'` |
|
||||
| Mark as read | `gws gmail users messages modify --params '{"userId": "me", "id": "ID"}' --json '{"removeLabelIds": ["UNREAD"]}'` |
|
||||
| Archive | `gws gmail users messages modify --params '{"userId": "me", "id": "ID"}' --json '{"removeLabelIds": ["INBOX"]}'` |
|
||||
| Trash | `gws gmail users messages trash --params '{"userId": "me", "id": "ID"}'` |
|
||||
| List events | `gws calendar events list --params '{"calendarId": "primary", "timeMin": "...", "timeMax": "..."}'` |
|
||||
| Create event | `gws calendar events insert --params '{"calendarId": "primary"}' --json '{"summary": "...", ...}'` |
|
||||
| Create draft | `gws gmail users drafts create --params '{"userId": "me"}' --json '{"message": {"raw": "BASE64"}}'` |
|
||||
|
||||
All commands return JSON. The `--params` flag is for URL/query parameters; `--json` is for the request body.
|
||||
@@ -0,0 +1,162 @@
|
||||
# Using the Crew from Your Phone
|
||||
|
||||
> **Platform note:** This guide is specific to **Claude Code**. Remote Control is a Claude Code feature and is not available on Gemini CLI or OpenCode.
|
||||
|
||||
> A guide to controlling your vault from your phone using Claude Code's Remote Control feature.
|
||||
|
||||
---
|
||||
|
||||
## How it works
|
||||
|
||||
Claude Code has a feature called **Remote Control** that lets you control a local Claude Code session from your phone's browser or the Claude mobile app. Your computer runs Claude Code locally (with full access to your vault, agents, and MCP servers), and your phone acts as a remote interface.
|
||||
|
||||
Nothing moves to the cloud. Your vault stays on your computer. Your phone just sends messages and receives responses.
|
||||
|
||||
```
|
||||
Phone (browser or Claude app)
|
||||
↓ sends messages via Anthropic servers
|
||||
Your computer (Claude Code running locally)
|
||||
↓ executes agents, reads/writes vault
|
||||
Your Obsidian vault (local files)
|
||||
```
|
||||
|
||||
### A real-world example
|
||||
|
||||
I use this on the go. Before leaving, I start a Remote Control session on my laptop. Out and about, I open the session on my phone and ask: "What's on my calendar today?" or "Save this: just had an idea about reorganizing the team standup." I can even search my vault with "What do I know about the Henderson project?" and get a full answer with sources, right from my phone.
|
||||
|
||||
The vault, the agents, the MCP servers: everything works exactly as if I were sitting at my computer.
|
||||
|
||||
---
|
||||
|
||||
## Requirements
|
||||
|
||||
- **Claude Code v2.1.51 or later** (check with `claude --version`)
|
||||
- **Claude Pro, Max, or Team subscription** (not API keys)
|
||||
- Your computer must stay **on and connected to the internet** during the session
|
||||
- A phone with a browser or the Claude mobile app (iOS/Android)
|
||||
|
||||
> **Team/Enterprise users:** your admin must enable Remote Control at `claude.ai/admin-settings/claude-code`.
|
||||
|
||||
---
|
||||
|
||||
## Setup (one time)
|
||||
|
||||
If you haven't already, make sure Claude Code is authenticated and your vault is trusted:
|
||||
|
||||
```bash
|
||||
cd /path/to/your-vault
|
||||
claude
|
||||
```
|
||||
|
||||
If this is your first time, Claude Code will ask you to log in (`/login`) and accept the workspace trust dialog. Once that's done, you're set.
|
||||
|
||||
---
|
||||
|
||||
## Starting a session
|
||||
|
||||
On your computer, open a terminal and run:
|
||||
|
||||
```bash
|
||||
cd /path/to/your-vault
|
||||
claude remote-control --name "My Brain"
|
||||
```
|
||||
|
||||
This starts a local Claude Code session and displays:
|
||||
- A **session URL** you can open on your phone
|
||||
- A **QR code** you can scan (press spacebar to toggle it)
|
||||
|
||||
The session stays running, waiting for connections. Keep this terminal open.
|
||||
|
||||
### Alternative: enable on an existing session
|
||||
|
||||
If you already have Claude Code running, type this inside the session:
|
||||
|
||||
```
|
||||
/remote-control My Brain
|
||||
```
|
||||
|
||||
This makes your current session accessible remotely without starting a new one.
|
||||
|
||||
---
|
||||
|
||||
## Connecting from your phone
|
||||
|
||||
You have three options:
|
||||
|
||||
### Option 1: QR code (fastest)
|
||||
Press spacebar in the terminal to show the QR code. Scan it with your phone's camera or the Claude mobile app.
|
||||
|
||||
### Option 2: Session URL
|
||||
Copy the URL shown in the terminal and open it in your phone's browser.
|
||||
|
||||
### Option 3: Session list
|
||||
Go to [claude.ai/code](https://claude.ai/code) on your phone. Your session will appear in the list with a green indicator. Tap it to connect.
|
||||
|
||||
---
|
||||
|
||||
## Using the Crew from your phone
|
||||
|
||||
Once connected, you use the Crew exactly as you would on your computer. Just type (or use voice input) and the agents respond:
|
||||
|
||||
- "Save this: had a great idea about reorganizing the team standup" (Scribe captures it)
|
||||
- "Check my email for anything urgent" (Postman scans Gmail)
|
||||
- "What's on my calendar tomorrow?" (Postman checks Google Calendar)
|
||||
- "Find my notes about the Henderson project" (Seeker searches your vault)
|
||||
|
||||
Everything runs on your computer. Your phone is just the interface.
|
||||
|
||||
---
|
||||
|
||||
## Tips for mobile use
|
||||
|
||||
- **Use voice input.** Most phones have built-in speech-to-text on the keyboard. Talking is faster than typing on a phone, and the Scribe handles messy voice input perfectly.
|
||||
- **Keep sessions short and focused.** Mobile is great for quick captures, grocery runs, and check-ins. Save deep work for your computer.
|
||||
- **Name your sessions.** The `--name` flag makes it easy to find the right session on `claude.ai/code` if you have multiple projects.
|
||||
- **Your computer must stay awake.** If it goes to sleep or loses internet for more than ~10 minutes, the session ends. Adjust your sleep settings before leaving.
|
||||
- **Works on mobile data.** WiFi is smoother, but cellular works fine for text-based interactions.
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "Remote Control is not yet enabled"
|
||||
|
||||
Make sure these environment variables are NOT set in your shell:
|
||||
|
||||
```bash
|
||||
unset CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
|
||||
unset DISABLE_TELEMETRY
|
||||
```
|
||||
|
||||
For Team/Enterprise accounts, ask your admin to enable Remote Control in the admin settings.
|
||||
|
||||
### Session disappears from the list
|
||||
|
||||
Your computer probably went to sleep or lost internet. Go back to your computer, check the terminal, and restart the session if needed.
|
||||
|
||||
### Agents don't seem to activate
|
||||
|
||||
Make sure the terminal on your computer is running Claude Code **inside your vault folder**. If you started it in a different directory, the agents won't be loaded.
|
||||
|
||||
### QR code won't scan
|
||||
|
||||
Press spacebar to toggle the QR code display. If your terminal font is too small, try zooming in, or just copy the URL instead.
|
||||
|
||||
---
|
||||
|
||||
## What this is NOT
|
||||
|
||||
To be clear about limitations:
|
||||
|
||||
- This is **not a standalone mobile app.** Your computer must be running Claude Code for it to work.
|
||||
- This does **not** sync your vault to the cloud. Everything stays local on your computer.
|
||||
- You **cannot** use this with terminal SSH apps (Termius, Blink, etc.). Remote Control works through the browser or Claude mobile app only.
|
||||
- If your computer is off, there is no session to connect to.
|
||||
|
||||
---
|
||||
|
||||
## Further reading
|
||||
|
||||
- [Claude Code Remote Control documentation](https://docs.anthropic.com/en/docs/claude-code/remote-control)
|
||||
- [Getting Started with the Crew](getting-started.md)
|
||||
- [Examples of daily usage](examples.md)
|
||||
@@ -0,0 +1,55 @@
|
||||
# Vault Mapping
|
||||
|
||||
The Crew adapts to your existing folder structure — you don't have to rename anything.
|
||||
|
||||
## How it works
|
||||
|
||||
During onboarding, the Architect scans your vault and asks about any ambiguous folders. It then creates `Meta/vault-map.md`, which maps logical roles to your actual folder names:
|
||||
|
||||
```yaml
|
||||
---
|
||||
inbox: 00-Inbox
|
||||
projects: 01-Projects
|
||||
areas: 02-Areas
|
||||
resources: 03-Resources
|
||||
archive: 04-Archive
|
||||
people: 05-People
|
||||
meetings: 06-Meetings
|
||||
daily: 07-Daily
|
||||
templates: Templates
|
||||
meta: Meta
|
||||
moc: MOC
|
||||
---
|
||||
```
|
||||
|
||||
Every agent and skill reads this file at runtime from the fixed path `Meta/vault-map.md` and resolves vault-role tokens to your actual paths before acting. Only the 11 tokens listed below are substituted — other `{{...}}` patterns (like `{{date}}`, `{{Name}}`) are template placeholders and are left unchanged.
|
||||
|
||||
## Customizing
|
||||
|
||||
Edit `Meta/vault-map.md` directly. For example, if your inbox is called `Inbox/`:
|
||||
|
||||
```yaml
|
||||
inbox: Inbox
|
||||
```
|
||||
|
||||
Changes take effect immediately — no restart needed.
|
||||
|
||||
## Available tokens
|
||||
|
||||
| Token | Default | Purpose |
|
||||
|-------|---------|---------|
|
||||
| `{{inbox}}` | `00-Inbox` | New notes land here first |
|
||||
| `{{projects}}` | `01-Projects` | Active projects |
|
||||
| `{{areas}}` | `02-Areas` | Life areas (Work, Health, etc.) |
|
||||
| `{{resources}}` | `03-Resources` | Reference material |
|
||||
| `{{archive}}` | `04-Archive` | Completed or historical notes |
|
||||
| `{{people}}` | `05-People` | Person notes |
|
||||
| `{{meetings}}` | `06-Meetings` | Meeting notes |
|
||||
| `{{daily}}` | `07-Daily` | Daily notes |
|
||||
| `{{templates}}` | `Templates` | Note templates |
|
||||
| `{{meta}}` | `Meta` | Crew config files |
|
||||
| `{{moc}}` | `MOC` | Maps of Content |
|
||||
|
||||
## If vault-map.md is missing
|
||||
|
||||
Each agent falls back to the defaults above and warns you once. Existing users are unaffected — the Crew works exactly as before until you run onboarding.
|
||||
Reference in New Issue
Block a user