Agent Brain
Starter kit
First committed by Railly
Published in Railly/agent-brain. Publisher page
22 GitHub stars
What it is
An agent-powered knowledge system built on Obsidian + Claude Code + Codex
AutoGineer overview, from the brain’s own files
Agent Brain is a structured template designed to eliminate cold starts for AI coding agents by providing a persistent, local-first knowledge base. Built on Obsidian and Markdown, it organizes personal and professional context into a seven-folder vault structure. The system uses a canonical skill architecture where workflows are defined once and mirrored across different agent runtimes, such as Claude Code and Codex. It includes a suite of 15 predefined workflows covering daily planning, knowledge management, content creation, and reflection, all driven by explicit configuration files that define user identity, goals, stack preferences, and recurring failure patterns.
How it works
Memory model: Markdown vault
AutoGineer overview, from the brain’s own files
The system organizes information into seven specific folders: Inbox for raw captures, Journal for daily logs, Garden for evergreen notes, Projects for active work, Areas for ongoing context, Content for drafts, and System for configuration. Workflows are defined as canonical markdown files in a central directory and synchronized to specific agent-compatible folders. Users interact with these workflows via slash commands. The system maintains context through dedicated files that agents read to understand the user's identity, technical stack, and communication preferences.
| Folder | Role | Files |
|---|---|---|
| .claude | agent-config | 30 |
| docs | docs | 8 |
| examples | examples | 4 |
| scripts | scripts | 2 |
| .agents | folder | 15 |
| vault | folder | 22 |
Requirements
Runtimes: Node.js
Works with: Claude Code, OpenAI Codex, GitHub Copilot, Cursor, Kiro, OpenCode, Amp, Cline, JetBrains Junie, Devin (ex-Windsurf)
Set it up
- Download the brain as a ZIP and unzip it where you keep your notes or project: https://mp-staging.autogineer.com/agent-brains/railly/agent-brain/download
Claude Code reads CLAUDE.md from this folder automatically.
cd agent-brain && claude
AutoGineer scanned these files at commit 7e27fe3.
- Not scanned by AutoGineerThe author’s README also describes installing it from a clone of its repository. Read its install section: AutoGineer did not scan that path. https://github.com/Railly/agent-brain/blob/7e27fe39db729f6c45411b4cbf00767ea87b58a7/README.md#quick-start
First committed by Railly. Published in Railly/agent-brain. Licence: MIT License.
Usage
AutoGineer overview, from the brain’s own files
- Automating daily stand-ups and planning
- Managing project context and technical documentation
- Processing web research into atomic notes
- Reflecting on recurring work patterns to improve performance
- “/morning”
- The agent provides a briefing including calendar events, tasks, and Most Important Tasks (MITs) for the day.
- “/ship”
- The agent commits and pushes the current work, then automatically logs the activity into the daily journal.
- “/challenge”
- The agent analyzes a proposed idea and argues against it to prevent sycophancy and improve critical thinking.
- “/inbox”
- The agent processes raw clips from the inbox folder and converts them into structured, atomic notes in the garden.
Documentation by Railly
Agent Brain
Your AI already knows your stack, repos, goals, and recurring failures. Zero cold starts.
Agent Brain is a local-first personal operating system built with Obsidian and Markdown. It gives Claude Code, Codex, and other coding agents a shared source of context plus reusable workflows for daily work, retrieval, reflection, and shipping.
Read the series:
Obsidian as a Personal OS for AI Coding Agents, the v1 architecture
My Agentic Second Brain, Four Months Later, the v2 update
Releases
Quick start
git clone --branch v2.0.0 https://github.com/Railly/agent-brain.git
cd agent-brain
claude
/init/init asks for your identity, stack, goals, recurring failure, and vault location. It creates the seven-folder vault, installs all runtime adapters, generates personalized context files, discovers local repos, and creates the first daily log.
Already using v1? Follow the non-destructive migration guide. Your notes and personalized context do not need to move.
What changed in v2
The first release proved that a vault could remove the cold start from coding sessions. The second release makes the template easier to evolve without runtime drift.
.agents/skills/is the canonical source for all workflows..claude/skills/exposes generated copies to Claude Code..claude/commands/preserves generated slash command aliases.The seven-folder vault and all 15 workflow names remain unchanged.
bun run checkverifies skills, adapters, documentation, and mirrored templates.Migration copies system surfaces only. It never replaces personal notes or context files.
Vault structure
| Folder | Purpose |
|---|---|
01_Inbox/ | Raw captures from Web Clipper |
02_Journal/ | Daily logs, weekly plans, and reflections |
03_Garden/ | Evergreen concepts, people, tools, and meetings |
04_Projects/ | Active project work |
05_Areas/ | Ongoing contexts such as work, learning, and health |
06_Content/ | Drafts ready to refine or publish |
07_System/ | Context maps, conventions, and system configuration |
Fifteen workflows
Daily: /morning, /today, /log, /ship, /week
Knowledge: /inbox, /relink, /vault-search, /meeting, /research
Thinking: /challenge, /pulse
Content: /draft, /de-ai
Setup: /init
One source, multiple runtimes
.agents/skills/<name>/SKILL.md canonical workflow contract
.claude/skills/<name>/SKILL.md Claude Code skill adapter
.claude/commands/<name>.md v1-compatible slash command aliasRun bun run sync after changing a canonical skill. The generated adapters are normal files so the template works on macOS, Linux, and Windows. bun run check fails if any adapter drifts.
System files
| File | Purpose |
|---|---|
CLAUDE.md | Identity, stack, goals, and operating preferences for Claude Code |
AGENTS.md | The same context for Codex and other agents |
PURPOSE.md | Architecture and design decisions |
HOME.md | Vault dashboard and entry points |
HUMAN.md | Daily workflow guide for the owner |
Core loop
capture -> process -> connect -> use -> reflect/inboxturns raw captures into durable notes./relinkfinds missing relationships./vault-searchretrieves local evidence./shipcommits and pushes work, then logs it to the daily journal./todayand/pulseturn activity into reflection and course correction.
The system improves through explicit files and version history, not opaque model memory.
What this template does not include
The public template is the portable persistence and workflow layer. It does not ship the private queue, daemon, messaging gateways, background workers, or policy engine described in the second article. Those systems are still evolving and should not be presented as a stable starter kit.
It also does not claim to measure software quality. Checks can verify template integrity, and review gates can track findings that escape review, but neither is a complete measure of reliability, maintainability, or user outcomes.
Documentation
| Document | Purpose |
|---|---|
| Setup | New installation and manual setup |
| Migration v2 | Safe upgrade from v1 |
| Commands | All 15 workflows |
| Customization | Add or change canonical skills |
| Philosophy | Principles behind the system |
| Advanced | Boundaries for automation and control planes |
| v2 review | Deterministic checks, migration proof, and lens results |
| Changelog | Release history |
Verify the template
bun run checkThe check fails when a canonical skill is missing, frontmatter is invalid, an adapter is stale, a documented workflow does not exist, or mirrored templates drift.
Built by
Railly Hugo, Software Engineer at Vercel Labs and founder of Crafter Station.
License
MIT
.claude/commands/inbox.md
name: inbox description: Process unprocessed clips from Web Clipper into atomic notes
Process pending clips from 01_Inbox/.
IMPORTANT: Be direct
Don't check if folders exist - they do
Don't search for existing notes - just write
Don't read ideas.md before appending - just append
Minimize tool calls
Flow
Find unprocessed clips List all
.mdfiles directly in01_Inbox/- these are unprocessed.For each clip (read content, extract insight, identify topic)
Create atomic note in
03_Garden/concepts/{topic-slug}.md(FLAT, evergreen):--- type: concept created: {{date}} themes: [] sources: - "[[01_Inbox/processed/{{date}}/{processed-slug}]]" people: [] --- # {Topic} {1-2 sentence insight} ## Key ideas - {extracted points} ## Connections - [[Related concept]] - how it relatesIf concept already exists: Append to Key ideas + add new source to
sources:arrayExtract content ideas to
05_Areas/content-creation/ideas/{{date}}/{slug}.md:--- type: content-idea format: tweet | thread | blog | short | tutorial status: idea source: "[[03_Garden/concepts/{concept-slug}]]" created: {{date}} priority: 3 --- # {Title} {The content idea - actual tweet text, thread hook, or blog thesis} ## Hook {Why this will resonate} ## Notes - {Additional context}Enrich with metadata:
People: If author or people mentioned, create
03_Garden/people/{person-name}.mdif doesn't existLocation: If place mentioned, add coordinates to concept note
Find connections
List existing notes:
03_Garden/concepts/Look for related topics (semantic similarity, shared tags)
Add backlinks to the new concept and existing related concepts
Mark clip as processed - add
generated:links + move to date folder:First, update the clip's frontmatter to add the
generated:field:--- generated: - "[[03_Garden/concepts/{concept-slug}]]" - "[[05_Areas/.../ideas/{{date}}/{idea-slug}]]" ---Then move to
01_Inbox/processed/{{date}}/{semantic-slug}.md.Naming rules for semantic slug:
Extract the core insight/topic, NOT the source title
Use lowercase, hyphens, 3-6 words
Bad:
thread-by-bryan-johnson.mdGood:
life-systems-over-willpower.md
Summary
Processed: 3 clips → 01_Inbox/processed/{{date}}/ Created concepts: willpower-vs-systems.md, ai-auth.md Content ideas: 2 created - ideas/{{date}}/willpower-tweet.md - ideas/{{date}}/ai-auth-deep-dive.md Connections: [[clerk-context]] ↔ [[ai-auth]]
Bidirectional Linking (CRITICAL)
┌─────────────────────────────────────────────────────────────────┐
│ 01_Inbox/processed/2026-01-21/life-systems-over-willpower.md │
│ frontmatter.generated: │
│ - "[[03_Garden/concepts/willpower-vs-systems]]" │
│ - "[[05_Areas/.../ideas/2026-01-21/willpower-tweet]]" │
└─────────────────────────────────────────────────────────────────┘
│
┌───────────────┴───────────────┐
▼ ▼
┌─────────────────────────────┐ ┌─────────────────────────────────┐
│ 03_Garden/concepts/ │ │ 05_Areas/.../ideas/2026-01-21/ │
│ willpower-vs-systems.md │ │ willpower-tweet.md │
│ frontmatter.sources: │ │ frontmatter.source: │
│ - "[[01_Inbox/processed │ │ "[[03_Garden/concepts/ │
│ /2026-01-21/...]]" │ │ willpower-vs-systems]]" │
└─────────────────────────────┘ └─────────────────────────────────┘Rules:
processed/*.md→generated:array (forward links)concepts/*.md→sources:array (back links to clips)ideas/*.md→source:string (back link to concept)
Notify (Optional)
If you have a notification hook configured in CLAUDE.md, run it with the summary.
Options
/inbox- Process all pending/inbox 3- Process only 3 most recent/inbox --dry- Show what would be processed without doing it
92 files
- .agents/skills/challenge/SKILL.md
- .agents/skills/de-ai/SKILL.md
- .agents/skills/draft/SKILL.md
- .agents/skills/inbox/SKILL.md
- .agents/skills/init/SKILL.md
- .agents/skills/log/SKILL.md
- .agents/skills/meeting/SKILL.md
- .agents/skills/morning/SKILL.md
- .agents/skills/pulse/SKILL.md
- .agents/skills/relink/SKILL.md
- .agents/skills/research/SKILL.md
- .agents/skills/ship/SKILL.md
- .agents/skills/today/SKILL.md
- .agents/skills/vault-search/SKILL.md
- .agents/skills/week/SKILL.md
- .claude/commands/challenge.md
- .claude/commands/de-ai.md
- .claude/commands/draft.md
- .claude/commands/inbox.md
- .claude/commands/init.md
- .claude/commands/log.md
- .claude/commands/meeting.md
- .claude/commands/morning.md
- .claude/commands/pulse.md
- .claude/commands/relink.md
- .claude/commands/research.md
- .claude/commands/ship.md
- .claude/commands/today.md
- .claude/commands/vault-search.md
- .claude/commands/week.md
- .claude/skills/challenge/SKILL.md
- .claude/skills/de-ai/SKILL.md
- .claude/skills/draft/SKILL.md
- .claude/skills/inbox/SKILL.md
- .claude/skills/init/SKILL.md
- .claude/skills/log/SKILL.md
- .claude/skills/meeting/SKILL.md
- .claude/skills/morning/SKILL.md
- .claude/skills/pulse/SKILL.md
- .claude/skills/relink/SKILL.md
- .claude/skills/research/SKILL.md
- .claude/skills/ship/SKILL.md
- .claude/skills/today/SKILL.md
- .claude/skills/vault-search/SKILL.md
- .claude/skills/week/SKILL.md
- AGENTS.md
- ATTRIBUTION.md
- CHANGELOG.md
- CLAUDE.md
- HOME.md
- HUMAN.md
- LICENSE
- PURPOSE.md
- README.md
- VERSION
- docs/ADVANCED.md
- docs/COMMANDS.md
- docs/CUSTOMIZATION.md
- docs/MIGRATION-v2.md
- docs/PHILOSOPHY.md
- docs/REVIEW-CONVENTIONS.md
- docs/REVIEW-v2.0.0.md
- docs/SETUP.md
- examples/CLAUDE-developer.md
- examples/CLAUDE-personal.md
- examples/anti-patterns-example.md
- examples/pulse-report-example.md
- package.json
- scripts/check-template.ts
- scripts/sync-adapters.ts
- vault/01_Inbox/2026-03-15-building-agents-that-actually-work.md
- vault/01_Inbox/processed/2026-02-20/context-window-management.md
- vault/02_Journal/daily/2026-03-15.md
- vault/02_Journal/reflections/2026-q1-reflection.md
- vault/02_Journal/weekly/week-2026-W11.md
- vault/03_Garden/_MOCs/ai-agents.md
- vault/03_Garden/concepts/context-engineering.md
- vault/03_Garden/concepts/tool-use-patterns.md
- vault/03_Garden/meetings/2026-03-12-team-sync.md
- vault/03_Garden/people/Alex Kim.md
- vault/03_Garden/people/Jordan Rivera.md
- vault/03_Garden/people/Simon Willison.md
- vault/03_Garden/tools/claude-code.md
- vault/04_Projects/dashboard-v2/README.md
- vault/05_Areas/content-creation/ideas/2026-03-15/agent-patterns-thread.md
- vault/05_Areas/health/daily/2026-03-15.md
- vault/06_Content/2026-03-16/dark-mode-ux/blog.md
- vault/07_System/context-files/anti-patterns.md
- vault/07_System/context-files/knowledge-system.md
- vault/HOME.md
- vault/HUMAN.md
- vault/PURPOSE.md
Advantages
- Eliminates cold starts by providing agents with immediate access to user goals, stack, and history. evidence: README.md
- Uses a single source of truth for workflows that synchronizes across multiple agent runtimes. evidence: README.md
Limitations
- Does not include advanced infrastructure like messaging gateways or background workers. evidence: README.md
- Does not provide automated metrics for software quality or reliability. evidence: README.md
Security
Risk level: Medium risk
This brain runs
Agent instructions that run or fetch something (48)
.agents/skills/de-ai/SKILL.md:- Shortened 2 run-on sentences.agents/skills/draft/SKILL.md:If you have a notification hook configured in CLAUDE.md, run it with the summary..agents/skills/inbox/SKILL.md:If you have a notification hook configured in CLAUDE.md, run it with the summary..agents/skills/init/SKILL.md:If no repos found, create the file with an empty table and a note saying "Run /init again after cloning some repos, or add them manually.".agents/skills/init/SKILL.md:- Clip an article and run /inbox.agents/skills/init/SKILL.md:2. Open a new terminal in {path} and run: claude.agents/skills/meeting/SKILL.md:User pastes meeting notes or provides a recording, run `/meeting`:.agents/skills/morning/SKILL.md:Only run these if the tools are available:.agents/skills/pulse/SKILL.md:If you have a notification hook configured in CLAUDE.md, run it with the pulse summary..agents/skills/research/SKILL.md:agent-browser open "https://example.com"· uses the network.agents/skills/ship/SKILL.md:Run `git status` to see changes.agents/skills/ship/SKILL.md:Run `git diff --stat` for overview.agents/skills/today/SKILL.md:| # | Tool | Call | Purpose | |---|------|------|---------| | 1 | Bash | Scan repos under `~/Programming` for today's commits via `git log --oneline --since="today"` per repo | Collect commits | | 2 | Read | `02_Journal/daily/{TODAY}.md` | Check if log exists (preserve Ship Log entries …[+186 chars].agents/skills/today/SKILL.md:{from weekly file, or "No weekly goal set -- run /week"}.agents/skills/week/SKILL.md:Run `/pulse` for full analysis..agents/skills/week/SKILL.md:If you have a notification hook configured in CLAUDE.md, run it with the week summary..claude/commands/de-ai.md:- Shortened 2 run-on sentences.claude/commands/draft.md:If you have a notification hook configured in CLAUDE.md, run it with the summary..claude/commands/inbox.md:If you have a notification hook configured in CLAUDE.md, run it with the summary..claude/commands/init.md:If no repos found, create the file with an empty table and a note saying "Run /init again after cloning some repos, or add them manually.".claude/commands/init.md:- Clip an article and run /inbox.claude/commands/init.md:2. Open a new terminal in {path} and run: claude.claude/commands/meeting.md:User pastes meeting notes or provides a recording, run `/meeting`:.claude/commands/morning.md:Only run these if the tools are available:.claude/commands/pulse.md:If you have a notification hook configured in CLAUDE.md, run it with the pulse summary..claude/commands/research.md:agent-browser open "https://example.com"· uses the network.claude/commands/ship.md:Run `git status` to see changes.claude/commands/ship.md:Run `git diff --stat` for overview.claude/commands/today.md:| # | Tool | Call | Purpose | |---|------|------|---------| | 1 | Bash | Scan repos under `~/Programming` for today's commits via `git log --oneline --since="today"` per repo | Collect commits | | 2 | Read | `02_Journal/daily/{TODAY}.md` | Check if log exists (preserve Ship Log entries …[+186 chars].claude/commands/today.md:{from weekly file, or "No weekly goal set -- run /week"}.claude/commands/week.md:Run `/pulse` for full analysis..claude/commands/week.md:If you have a notification hook configured in CLAUDE.md, run it with the week summary..claude/skills/de-ai/SKILL.md:- Shortened 2 run-on sentences.claude/skills/draft/SKILL.md:If you have a notification hook configured in CLAUDE.md, run it with the summary..claude/skills/inbox/SKILL.md:If you have a notification hook configured in CLAUDE.md, run it with the summary..claude/skills/init/SKILL.md:If no repos found, create the file with an empty table and a note saying "Run /init again after cloning some repos, or add them manually.".claude/skills/init/SKILL.md:- Clip an article and run /inbox.claude/skills/init/SKILL.md:2. Open a new terminal in {path} and run: claude.claude/skills/meeting/SKILL.md:User pastes meeting notes or provides a recording, run `/meeting`:.claude/skills/morning/SKILL.md:Only run these if the tools are available:.claude/skills/pulse/SKILL.md:If you have a notification hook configured in CLAUDE.md, run it with the pulse summary..claude/skills/research/SKILL.md:agent-browser open "https://example.com"· uses the network.claude/skills/ship/SKILL.md:Run `git status` to see changes.claude/skills/ship/SKILL.md:Run `git diff --stat` for overview.claude/skills/today/SKILL.md:| # | Tool | Call | Purpose | |---|------|------|---------| | 1 | Bash | Scan repos under `~/Programming` for today's commits via `git log --oneline --since="today"` per repo | Collect commits | | 2 | Read | `02_Journal/daily/{TODAY}.md` | Check if log exists (preserve Ship Log entries …[+186 chars].claude/skills/today/SKILL.md:{from weekly file, or "No weekly goal set -- run /week"}.claude/skills/week/SKILL.md:Run `/pulse` for full analysis..claude/skills/week/SKILL.md:If you have a notification hook configured in CLAUDE.md, run it with the week summary.
- Medium risk: runs-instruction-instruction-network (.agents/skills/research/SKILL.md:17)
- Medium risk: runs-instruction-instruction-network (.claude/commands/research.md:17)
- Medium risk: runs-instruction-instruction-network (.claude/skills/research/SKILL.md:17)
Attribution and licence
- First committed by
Railly
- Publisher
- Railly Hugo (Community)
- Source
- Railly/agent-brain · commit 7e27fe3
- Licence
- MIT License (files served here)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Contributors
- Railly
AutoGineer is not affiliated with or endorsed by Railly.
Download
The ZIP holds the files AutoGineer serves, with ATTRIBUTION.md and the licence. Download agent-brain.zip