How the system works. Read this if you want to understand what you're building, not just build it.
Most AI assistants forget everything between sessions. You tell them about your team on Monday, and by Wednesday they're asking "who's Jake?" again. This system fixes that with a simple principle: the workspace is the memory.
Every session, the assistant reads a set of files. Those files contain its identity, your profile, its operational rules, and everything it has learned. When it learns something new, it writes it to a file. When it wakes up next time, it reads that file. No magic. No embeddings database (though you can add one). Just files.
Files are read in a specific order at the start of every session. This order matters — earlier files establish context for later ones.
1. SOUL.md → Who the assistant is. Personality. Directives. Boundaries.
2. USER.md → Who you are. Organizations. Accounts. Preferences.
3. MEMORY.md → What it remembers. Institutional knowledge. Lessons learned.
4. AGENTS.md → How it operates. Capture rules. Classification. Reporting.
5. SCHEMAS.md → File templates. Loaded on-demand, not at boot.
6. TOOLS.md → Environment notes. Device names, SSH hosts, etc.
SOUL.md and USER.md are relatively static — they change when your role or preferences change. MEMORY.md grows over time. AGENTS.md is your operating manual — you'll refine it as you learn what works.
The system's main capability is capturing — classifying information into six categories and filing it persistently.
| Category | What It Catches | Example |
|---|---|---|
| Question | Something that needs an answer | "Did the client approve the wireframes?" |
| Decision | A choice that was made | "We're going with Postgres instead of MongoDB" |
| Task | Work with an owner and a deadline | "Jake needs to deploy the staging server by Friday" |
| Commitment | A promise between people | "I told Sarah I'd review her PR by end of day" |
| Context | Knowledge, no action needed | "The client's fiscal year ends in March" |
| Project | A container for the other five | "Website Redesign — Q2 deliverable for Acme Corp" |
These categories cover the complete lifecycle of professional information:
When something could be multiple categories, classify in this order:
Commitments take priority because they're the most dangerous to miss. A forgotten task is annoying. A broken promise damages relationships.
Sometimes something is both a commitment and a task. Example: "I'll build that report by Friday." That's a commitment (you promised) AND a task (work to do). Create both. Link them. The commitment tracks whether the promise was kept. The task tracks the actual work.
Every capture gets a unique ID: [PREFIX]-YYYYMMDD-NNN
| Prefix | Category |
|---|---|
| Q | Question |
| D | Decision |
| T | Task |
| C | Commitment |
| X | Context |
The sequence number (NNN) resets daily and is tracked in _sequence.md.
Captures live in one of two places:
projects/[name]/[category]/ — if the capture belongs to a known projectcaptures/[category]/ — if it's an orphan (no project yet)Orphans can be moved to a project later. The important thing is to capture first, organize second.
Every project directory and the captures/ directory has an _index.md — a table of all open items and recently closed items.
Indexes are the primary query surface. When the assistant answers "what's going on with Project X?", it reads the index first, not every individual file. This makes queries fast and keeps the system scalable.
Index rules:
People who appear in captures get their own files under people/. The directory structure mirrors the relationship:
people/
├── employees/ # Your team members
├── clients/
│ └── [company-slug]/ # Grouped by company
│ ├── _client.md # Company-level file
│ └── [person].md # Individual contacts
├── vendors/
│ └── [company-slug]/ # Grouped by company
└── leads/ # Prospects, not yet clients
Person files track:
Person files are created automatically when a new name appears in captures. The assistant tells you when it creates one.
MEMORY.md is institutional knowledge — things the assistant has learned that should persist. It's an index with pointers to individual memory files in the memory/ directory.
Memory is NOT:
Memory IS:
Memory is capped at 300 lines in the index file. Older or less-referenced entries get archived.
The assistant proactively reports on the state of your world. The default rhythm:
Reporting is fully customizable. You can change the cadence, content, and format. Some people want daily briefings. Some want weekly. Some want nothing unless something's wrong.
Everything so far describes an assistant you talk to in a terminal: you open your AI tool in the workspace, it reads its files, you work, it writes down what it learned. That alone is a complete, useful assistant - many people never need more.
But the version that triages your email before you wake up, pings your phone when something's urgent, and runs a morning briefing on a schedule needs one more thing: a way to keep running when you're not at the keyboard. There are two paths, and neither is required to start.
The lightweight path — a scheduler and a few scripts. This is how the original Bob runs. The pieces are ordinary:
No gateway, no daemon, no platform to adopt. If you can write a cron job and a short script, you can make an assistant always-on. This is the honest minimum, and it's genuinely enough.
The turnkey path — a gateway. If you'd rather not assemble the glue yourself, an open-source gateway like OpenClaw packages it: multi-channel messaging (Telegram, Slack, WhatsApp, and more), background processing, multi-agent routing, and phone access — configured rather than hand-built. Same capability as the lightweight path, traded for less assembly. Use it if it saves you time; skip it if you'd rather keep the stack thin.
What powers the reasoning, either way: an AI runtime like Claude Code or Codex CLI for file and terminal work, backed by an LLM (Claude, GPT, or a local model via Ollama). You can route different work to different models by cost and capability — or just start with one.
The point stands: the assistant is the files and the framework. Always-on is a deployment choice you layer on once the assistant has proven it's worth waking up on its own.
If you run your assistant as several instances at once — multiple sessions, multiple machines, or multiple AI tools — you need multi-instance sync. This adds:
Most people don't need this. If you use one AI tool, skip it entirely.
The assistant operates on a two-tier trust model:
Internal actions (high autonomy):
These happen silently. The assistant tells you what it did, but doesn't ask permission.
External actions (zero autonomy without approval):
These ALWAYS require showing you exactly what will be sent/done and getting explicit "yes."
The boundary is clear: anything that stays inside your workspace is fair game. Anything that touches the outside world needs your approval. You can move specific actions across this boundary as you build trust.
Two names are central to every instance:
The assistant name. Your assistant has a personality and needs a name. "Bob" is taken (that's the original, built at Airtight Design). Pick something you'll be comfortable saying every day. This name is used in SOUL.md, CLAUDE.md, and throughout the framework.
The framework name. The operational system (captures, indexes, person files, the whole workspace) needs a name. The default is "the Matrix", which is what we call ours at Airtight Design. You can keep it or pick your own. This name is used in AGENTS.md headers, documentation, and conversational references. It gives the system identity beyond "the files."
Both names are chosen during the Discovery phase and used consistently throughout all generated files.
The framework is designed to be changed. When it stops fitting, you don't work around it — you edit it. Everything that governs the assistant lives in plain files you control: AGENTS.md (the rules), SOUL.md (the personality), SCHEMAS.md (the shapes). No part of it is locked.
Signs it's the framework, not you:
What to do about it: change the rule. Add the classification trigger. Sharpen the urgency definition. Adjust a schema. Your assistant can do most of this for you — tell it what's not working and ask it to propose an edit to the relevant file, then review it. This is the normal maintenance loop, not a failure state. The system gets sharper every time you tune it, and the only authority on how it should work for you is you.
Before your assistant builds something new, have it search for what already exists - and extend that instead of starting over.
("Grep" is developer shorthand for "search through your files." The principle is older than the jargon: look before you build.)
The fastest way to turn a tidy assistant into a messy one is to let it solve the same problem twice. Ask it to handle something new and, left unchecked, it will cheerfully invent a fresh way to do a job your system already does - a second place to file notes, a second way to name things, a second format for the same report. Now the same information lives in two shapes, and every search, every briefing, every future change has to account for both. Nothing is technically broken. It's just that half of what you're looking for is filed under a convention you forgot you had.
AI makes this trap easier to fall into, not harder. When producing a plausible new approach takes seconds, it's faster for the assistant to reinvent than to go find the thing that already exists. So it reinvents - unless you tell it not to.
The fix is a habit, not a feature: any time your assistant is about to add something new to how the system works, it searches the workspace first. If a pattern already exists, the job becomes "extend that" instead of "build another one." One way to track tasks, not three. One naming scheme, not a drawer full of them.
Here's the everyday version. Say your assistant already files promises as Commitments. A week later you ask it to "keep an eye on follow-ups," and it spins up a brand-new follow-ups list, separate from the commitments it's already tracking. Two systems for one job. The follow-up you're chasing is in whichever one you didn't check. Had it searched first, it would have seen that a follow-up is just a Commitment with a due date and extended what was already there.
Bake the rule into your AGENTS.md so it runs every session:
Grep before greenfield. Before building anything new into how the system works - a new way to file, track, name, or report - search the existing files first. If something already handles it, extend it. Don't start a parallel version.
Adding something new to your system has never been easier. Living with it has never gotten easier at all. This one habit is what keeps the second cost from quietly swallowing the first - the difference between a system that gets sharper as it grows and one that slowly turns into a pile you stop trusting.
The system is designed to evolve:
The captures accumulate. The memory deepens. The person files get richer. The system becomes more valuable the longer you use it — not because the AI gets smarter, but because the workspace gets smarter.
This is a reference document. You don't need to memorize it. Your AGENTS.md file will contain all the operational rules your assistant needs.
How the system works. Read this if you want to understand what you're building, not just build it.
Most AI assistants forget everything between sessions. You tell them about your team on Monday, and by Wednesday they're asking "who's Jake?" again. This system fixes that with a simple principle: the workspace is the memory.
Every session, the assistant reads a set of files. Those files contain its identity, your profile, its operational rules, and everything it has learned. When it learns something new, it writes it to a file. When it wakes up next time, it reads that file. No magic. No embeddings database (though you can add one). Just files.
Files are read in a specific order at the start of every session. This order matters — earlier files establish context for later ones.
1. SOUL.md → Who the assistant is. Personality. Directives. Boundaries.
2. USER.md → Who you are. Organizations. Accounts. Preferences.
3. MEMORY.md → What it remembers. Institutional knowledge. Lessons learned.
4. AGENTS.md → How it operates. Capture rules. Classification. Reporting.
5. SCHEMAS.md → File templates. Loaded on-demand, not at boot.
6. TOOLS.md → Environment notes. Device names, SSH hosts, etc.
SOUL.md and USER.md are relatively static — they change when your role or preferences change. MEMORY.md grows over time. AGENTS.md is your operating manual — you'll refine it as you learn what works.
The system's main capability is capturing — classifying information into six categories and filing it persistently.
| Category | What It Catches | Example |
|---|---|---|
| Question | Something that needs an answer | "Did the client approve the wireframes?" |
| Decision | A choice that was made | "We're going with Postgres instead of MongoDB" |
| Task | Work with an owner and a deadline | "Jake needs to deploy the staging server by Friday" |
| Commitment | A promise between people | "I told Sarah I'd review her PR by end of day" |
| Context | Knowledge, no action needed | "The client's fiscal year ends in March" |
| Project | A container for the other five | "Website Redesign — Q2 deliverable for Acme Corp" |
These categories cover the complete lifecycle of professional information:
When something could be multiple categories, classify in this order:
Commitments take priority because they're the most dangerous to miss. A forgotten task is annoying. A broken promise damages relationships.
Sometimes something is both a commitment and a task. Example: "I'll build that report by Friday." That's a commitment (you promised) AND a task (work to do). Create both. Link them. The commitment tracks whether the promise was kept. The task tracks the actual work.
Every capture gets a unique ID: [PREFIX]-YYYYMMDD-NNN
| Prefix | Category |
|---|---|
| Q | Question |
| D | Decision |
| T | Task |
| C | Commitment |
| X | Context |
The sequence number (NNN) resets daily and is tracked in _sequence.md.
Captures live in one of two places:
projects/[name]/[category]/ — if the capture belongs to a known projectcaptures/[category]/ — if it's an orphan (no project yet)Orphans can be moved to a project later. The important thing is to capture first, organize second.
Every project directory and the captures/ directory has an _index.md — a table of all open items and recently closed items.
Indexes are the primary query surface. When the assistant answers "what's going on with Project X?", it reads the index first, not every individual file. This makes queries fast and keeps the system scalable.
Index rules:
People who appear in captures get their own files under people/. The directory structure mirrors the relationship:
people/
├── employees/ # Your team members
├── clients/
│ └── [company-slug]/ # Grouped by company
│ ├── _client.md # Company-level file
│ └── [person].md # Individual contacts
├── vendors/
│ └── [company-slug]/ # Grouped by company
└── leads/ # Prospects, not yet clients
Person files track:
Person files are created automatically when a new name appears in captures. The assistant tells you when it creates one.
MEMORY.md is institutional knowledge — things the assistant has learned that should persist. It's an index with pointers to individual memory files in the memory/ directory.
Memory is NOT:
Memory IS:
Memory is capped at 300 lines in the index file. Older or less-referenced entries get archived.
The assistant proactively reports on the state of your world. The default rhythm:
Reporting is fully customizable. You can change the cadence, content, and format. Some people want daily briefings. Some want weekly. Some want nothing unless something's wrong.
Everything so far describes an assistant you talk to in a terminal: you open your AI tool in the workspace, it reads its files, you work, it writes down what it learned. That alone is a complete, useful assistant - many people never need more.
But the version that triages your email before you wake up, pings your phone when something's urgent, and runs a morning briefing on a schedule needs one more thing: a way to keep running when you're not at the keyboard. There are two paths, and neither is required to start.
The lightweight path — a scheduler and a few scripts. This is how the original Bob runs. The pieces are ordinary:
No gateway, no daemon, no platform to adopt. If you can write a cron job and a short script, you can make an assistant always-on. This is the honest minimum, and it's genuinely enough.
The turnkey path — a gateway. If you'd rather not assemble the glue yourself, an open-source gateway like OpenClaw packages it: multi-channel messaging (Telegram, Slack, WhatsApp, and more), background processing, multi-agent routing, and phone access — configured rather than hand-built. Same capability as the lightweight path, traded for less assembly. Use it if it saves you time; skip it if you'd rather keep the stack thin.
What powers the reasoning, either way: an AI runtime like Claude Code or Codex CLI for file and terminal work, backed by an LLM (Claude, GPT, or a local model via Ollama). You can route different work to different models by cost and capability — or just start with one.
The point stands: the assistant is the files and the framework. Always-on is a deployment choice you layer on once the assistant has proven it's worth waking up on its own.
If you run your assistant as several instances at once — multiple sessions, multiple machines, or multiple AI tools — you need multi-instance sync. This adds:
Most people don't need this. If you use one AI tool, skip it entirely.
The assistant operates on a two-tier trust model:
Internal actions (high autonomy):
These happen silently. The assistant tells you what it did, but doesn't ask permission.
External actions (zero autonomy without approval):
These ALWAYS require showing you exactly what will be sent/done and getting explicit "yes."
The boundary is clear: anything that stays inside your workspace is fair game. Anything that touches the outside world needs your approval. You can move specific actions across this boundary as you build trust.
Two names are central to every instance:
The assistant name. Your assistant has a personality and needs a name. "Bob" is taken (that's the original, built at Airtight Design). Pick something you'll be comfortable saying every day. This name is used in SOUL.md, CLAUDE.md, and throughout the framework.
The framework name. The operational system (captures, indexes, person files, the whole workspace) needs a name. The default is "the Matrix", which is what we call ours at Airtight Design. You can keep it or pick your own. This name is used in AGENTS.md headers, documentation, and conversational references. It gives the system identity beyond "the files."
Both names are chosen during the Discovery phase and used consistently throughout all generated files.
The framework is designed to be changed. When it stops fitting, you don't work around it — you edit it. Everything that governs the assistant lives in plain files you control: AGENTS.md (the rules), SOUL.md (the personality), SCHEMAS.md (the shapes). No part of it is locked.
Signs it's the framework, not you:
What to do about it: change the rule. Add the classification trigger. Sharpen the urgency definition. Adjust a schema. Your assistant can do most of this for you — tell it what's not working and ask it to propose an edit to the relevant file, then review it. This is the normal maintenance loop, not a failure state. The system gets sharper every time you tune it, and the only authority on how it should work for you is you.
Before your assistant builds something new, have it search for what already exists - and extend that instead of starting over.
("Grep" is developer shorthand for "search through your files." The principle is older than the jargon: look before you build.)
The fastest way to turn a tidy assistant into a messy one is to let it solve the same problem twice. Ask it to handle something new and, left unchecked, it will cheerfully invent a fresh way to do a job your system already does - a second place to file notes, a second way to name things, a second format for the same report. Now the same information lives in two shapes, and every search, every briefing, every future change has to account for both. Nothing is technically broken. It's just that half of what you're looking for is filed under a convention you forgot you had.
AI makes this trap easier to fall into, not harder. When producing a plausible new approach takes seconds, it's faster for the assistant to reinvent than to go find the thing that already exists. So it reinvents - unless you tell it not to.
The fix is a habit, not a feature: any time your assistant is about to add something new to how the system works, it searches the workspace first. If a pattern already exists, the job becomes "extend that" instead of "build another one." One way to track tasks, not three. One naming scheme, not a drawer full of them.
Here's the everyday version. Say your assistant already files promises as Commitments. A week later you ask it to "keep an eye on follow-ups," and it spins up a brand-new follow-ups list, separate from the commitments it's already tracking. Two systems for one job. The follow-up you're chasing is in whichever one you didn't check. Had it searched first, it would have seen that a follow-up is just a Commitment with a due date and extended what was already there.
Bake the rule into your AGENTS.md so it runs every session:
Grep before greenfield. Before building anything new into how the system works - a new way to file, track, name, or report - search the existing files first. If something already handles it, extend it. Don't start a parallel version.
Adding something new to your system has never been easier. Living with it has never gotten easier at all. This one habit is what keeps the second cost from quietly swallowing the first - the difference between a system that gets sharper as it grows and one that slowly turns into a pile you stop trusting.
The system is designed to evolve:
The captures accumulate. The memory deepens. The person files get richer. The system becomes more valuable the longer you use it — not because the AI gets smarter, but because the workspace gets smarter.
This is a reference document. You don't need to memorize it. Your AGENTS.md file will contain all the operational rules your assistant needs.
Last updated: July 16, 2026
Phone
(404) 594-5520Phone
(404) 594-5520Address
1777 Ellsworth Industrial Blvd NW
Suite B
Atlanta, GA 30318
Address
1777 Ellsworth Industrial Blvd NW
Suite B
Atlanta, GA 30318
© 2026 Airtight Design.