You need an AI brain.
In January I set up OpenClaw and called it Alfi. Self-hosted Claude agent on a 3 EUR/month Hetzner box, running in Telegram with persistent memory and its own IP.
First use case was a group chat with my girlfriend where we'd drop in places we wanted to visit and get reminders. "Tell me when the weather in Gran Canaria drops below 20 degrees, so I'm prepared" Then tracking my sister's flight when she came to visit. Small things.
It felt sharper than stock Claude Code at the time. The difference wasn't the Hetzner box, it was the tools I'd wired in. Where a vanilla Claude session would say:
I can see X is available in Poland. Check Allegro for prices, should be there.
Alfi, with a browser installed and a permission profile that didn't stop to ask me every step, said:
This is available in Poland. I wanted to check prices but WebFetch got blocked by Allegro. I'm installing a browser to check directly, I'll be back soon.
So I kept adding tools. Google Drive. Docs. Access to our company files. Every new tool, the agent gave up less and did more. Suddenly I was working even in the toilet. Not glamorous but useful.
AND I LOVED IT.
Files beat prompts
Then I noticed the thing that changed how I work with an LLM. When doing research, splitting the instruction into steps beat bundling everything into one monster prompt.
This does not work:
Research energy-tech companies from Germany, Poland, and Nordics. Include what they do, grade their usefulness as a fryga prospect, find founders' names and LinkedIn profiles.
This works:
Research energy-tech companies from Germany, Poland, and Nordics. Put name, website, and short summary into a Google Sheet.
Then:
Now gather information about each and grade them as prospects.
Finally:
Find C-level executives and links to their LinkedIn profiles.
Same task, better accuracy, fewer hallucinations. The agent used to invent LinkedIn URLs and founder names that didn't exist. With the sheet as ground truth, it started saying "couldn't find this one" instead of making it up. Something to write into, something to read from between every step.
The agent works better against files than against your chat history. Chat history compacts. Files persist.
The memory problem
Even with Alfi's built-in memory, it kept forgetting.
What document do you mean? I don't have any memory of it.
I got jealous of people using Notion. But I never got it to work for myself. Even my friend who'd been evangelising Notion for years abandoned his 4-year-old workspace. Too much maintenance.
And I hate maintenance. It destroys the whole fun part of organising your knowledge. Same as backlogs. Just don't.
Hey Claude, let's set up Notion MCP.
Then I looked at the pricing. And I thought about vendor lock-in. About working without internet. About trusting a SaaS with everything I know about my companies, clients, and team.
But really, none of that was the main thing. The main thing was: how do I give Claude more context?
Piping everything through a Notion MCP felt like a detour. I wanted the agent to read my knowledge the way it reads code: open the file, follow the links. Write an index at the top, and the agent knows where to look for everything else. OpenAI's Frontier team called it harness engineering: agents navigate a structured repo, not a database.
The answer had been in front of me the whole time.
Markdown files. In a git repository.
I felt stupid. How had I not seen it earlier?
(Anthropic killed 3rd party API access a few months later. RIP Alfi.)
HQ
Everything below runs on a regular Claude or ChatGPT subscription. No self-hosted agent, no custom infrastructure. Claude Code even runs on my phone through the Claude app now. The one thing Alfi had going for it is gone.
I opened an empty repo in Obsidian, ran Claude in the same folder, and started typing everything I knew. fryga. rubyonai. Teammates. Clients. Ongoing initiatives. Competitive research. The Swedish energy-tech pipeline. LinkedIn analytics. Strategy notes. Decisions and why we made them.
Oh, and if you haven't used Obsidian: it's a free markdown editor with backlinks and a graph view. Local files.
Three hours in, I had most of my business on disk.
Then I realised knowledge alone is a wiki. Not a brain.
So I added tasks, in the same repo. Each task linked to an initiative. Each initiative linked to the knowledge that shaped it. Each decision backlinked from every task and initiative that depends on it.
Then I added a library. Every article worth reading, every podcast worth citing, every conference talk I watched. Ingested as markdown, summarised by the agent, cross-linked into my knowledge. When I write, the agent doesn't just pull from my notes. It pulls from the thinking I've collected on that exact topic. All local, all markdown, all linked.
And I log everything. Transcripts from important calls. Meeting notes. Strategic thoughts I had on a walk. Slack debates that mattered. Raw and time-stamped. Then decisions get distilled out of the log: into tasks if there's action, into knowledge if there's something to remember. My head edits itself every day. The files don't.
Library and log are the raw intake. Knowledge and tasks are what gets distilled out. Connect them and you have a brain. Keep them separate and you have a reading list, a journal, a reference manual, and a backlog.
Now my day starts like this:
Hey, what should I do today?
And the agent reads my initiatives, my open tasks, the notes from my last call, my team's capacity, and answers.
I have a personal assistant. Again. And they know everything about me. The way I want it.
Why the brain has to span everything
Here's the thing most setups miss. Claude Code reads a CLAUDE.md file in your repo, a plain text file where you tell the agent how your project works. Useful, but it only covers one codebase.
Your actual work lives across projects. Client code, marketing, sales prospecting, team coordination, research, content. Each feeds the others. Competitive research becomes a LinkedIn post. A LinkedIn post becomes a sales conversation. A sales conversation becomes a case study. A team retrospective shifts the strategy for next quarter.
You connect those dots in your head. Slowly, imperfectly, often not at all.
Give the agent one brain that covers all of it, and it connects them for you.
That's the point. It's not memory for my coding agent, and it's not a second brain app. It's one set of files you and your agents both read and write, across every project.
(Obie Fernandez and Andrej Karpathy landed in the same place from different directions. Obie built Nexus at his company Zar. Karpathy's been using LLMs to compile markdown wikis for his research. Different stacks, same idea.)
Zeitgeist.
What a file looks like
Here's one of my initiative files, simplified:
---
tags: [initiative]
title: Nordics Energy Tech Pipeline
company: [fryga]
status: active
owner: marcin
started: 2026-03-15
---
## Goal
Land first producer-side energy-tech client in Nordics by end of Q2.
## Context
Working with Ole (Rubynor) to target small renewable power plants.
## Key decisions
- 2026-04-13: focus on Norway first, Ole's network is strongest there
- 2026-04-08: lead with producer-side, not grid-side, cleaner product-market fit signal
Plain markdown, frontmatter with the fields I care about, a few sections. Links to other files via wikilinks ([[ole]], [[rubynor]]) so the agent can navigate sideways.
What to put in yours
Three things to capture first:
- Companies and clients. Who you work with, what they do, what you're building together, who the stakeholders are.
- Active initiatives. The big threads you're pulling on right now: rewriting your website, launching a podcast, breaking into a new market, hiring your first senior dev, migrating off Heroku. For each: the goal, the why, the owner, the status.
- Decisions. Whenever you make one, log it with the why: strategy changes, hires, technical choices. The agent can derive what from your files. Only you know why.
Everything else (tasks, research, meeting notes, a library of articles you care about) builds from those three.
Structure: flat folders. initiatives/, tasks/, knowledge/, library/, log/. Obsidian on top for backlinks and graph view. A CLAUDE.md at the root that tells your agent which index files to read first.
The session startup rule from mine:
At the start of every conversation, read all index.md files (initiatives, tasks, knowledge, library, log) to familiarize yourself with the business context and current state of work. Do this silently before responding.Steal the whole scaffold if you want: github.com/marostr/hq-starter. Clone it, replace the {{placeholders}} with your own companies and owner name, commit, go.
You don't need to know how it works
Clone the repo, open it in Claude Code, ask:
Walk me through this vault and help me set it up.
Claude reads the CLAUDE.md, finds the placeholders, asks you the right questions, fills them in. The scaffold is designed to explain itself to any agent reading it.
Want to change something? Rename a folder, add a new template, change how tasks link to initiatives. You don't edit a config file. You tell the agent what you want. The vault is markdown and prompts all the way down. Change the markdown, change the behaviour.
Obsidian on top
Markdown files plus Claude Code get you 80% of the way. Obsidian gets you the last 20%.
Backlinks and graph view. Open an initiative, see every task, every decision, every call note that touches it. Automatically, because every wikilink is bidirectional. This is the dot-connecting you can't do in your head.
Dashboards via Obsidian Bases. Frontmatter becomes a live database. A filter like status == "active" and company == "fryga" gives me every active fryga initiative as a table. Active tasks by company, open initiatives by status, stale files, upcoming deadlines. All live queries on the frontmatter. Humans use the dashboards, agents read the raw markdown. One source, two views.
Team edits via git. Our whole team works out of the same vault. Merge conflicts are rare and visible when they happen. Each person signs their updates with initials so authorship stays legible when you read an old note six months later.
Keep it fresh
A stale vault is worse than no vault. An agent confidently acting on outdated context is a liability.
Two habits.
Validate the structure. I have a /validate-vault slash command in Claude Code that runs nine tests: frontmatter consistency, link integrity, index accuracy, dashboard filter sanity, schema match. Under the hood it calls the Obsidian CLI (obsidian unresolved, obsidian orphans, obsidian eval) to catch broken wikilinks, orphan files, and drift. Output is a short inline report from Claude: broken links, schema mismatches, missing index entries. Takes under a minute. Run it every sometimes.
Review the content. Ask the agent to scan for files that haven't been touched in weeks and flag what's probably out of date. Two minutes of curation a week beats a dead knowledge base.
Personal assistant, brain, sparring partner
I've stopped procrastinating, by the way.
It wasn't laziness. It was too many tasks, across too many projects, too many priorities, too many companies. Sometimes I was just paralyzed. So many things that I didn't even know where to start.
Now I can just ask. And sometimes the answer is:
Marcin, you're overcomplicating this. Just do it, it'll greatly push you forward.
So I do.
Personal assistant, brain, and sparring partner in one.
Show me what's in yours. Reach out on LinkedIn or at marcin@fryga.io.