Umbrella
~/umbrella
One place to work from.
Nothing to set up twice.
Umbrella is a structure for running Claude Code across everything you work on. Each org gets one home folder with its instructions, rules, skills and memory. Every session starts there, so Claude always knows where to look.
- Built on Claude Code
- Plain markdown in git
- Your files stay where they are
Favorites
Locations
before you type a word
orgs/*/projects.yaml
Your files stay
where they are.
Code stays in its repos. Shared folders stay in OneDrive, Drive or iCloud. Each org lists where its projects already live and what the agent may touch, so nothing gets moved to fit the system.
projects:
bakery-site:
path: ~/Code/bakery-site
sync: git
brand-guides:
path: ~/OneDrive/Clients/Brand guides
sync: onedrive
photo-shoots:
path: ~/iCloud Drive/Shoots
sync: icloud
defaults:
new_project_root: ~/OneDrive/Studio/Projects
orgs/*/ingest/
Everything becomes a file.
Mail, calendar, meetings and texts sync in the background as dated markdown that any agent can search. Every change is committed. An hourly check sends an email if a feed goes quiet.
orgs/*/tasks/
Three messages. One task.
/triage reads every source together, the way a person would, and writes one task file with the evidence attached. Anything already closed stays closed.
MailRe: Hartley weddingTue 9:14 AM
Could we do the menu tasting on Saturday? The couple can only do weekends.
MeetingKitchen planningTue 2:02 PM
[14:02] Speaker 2: …for the Hartleys, a Saturday tasting works if we prep Friday…
low confidence · speaker labels guessMessagesChefWed 8:40 AM
Saturday at 2 is good for the tasting. Ordering the scallops today.
orgs/*/agents/
One rulebook.
Two ways to follow it.
The interactive agent stops and asks in chat. An autonomous worker takes jobs by email, runs on its own copy of everything, and enforces the same rules in code.
main · interactive
shared · both agents import it
- 1Paid API calls: say how many, then wait for a yes.
- 2Never write shared data without approval.
- 3Finished files are read-only. Edit a copy.
- 4Only email the team.
- 5No force-push. No merging to main.
…and whatever else the org adds
worker · runs on its own, takes jobs by email
~/.config/umbrella/
One place for every
key and every log.
Credentials live in one store, outside git. Every paid API call saves its response and writes a line to the same log, so nothing is paid for twice and every call can be traced. Caches, Python environments and browser installs are shared the same way.
flight-prices
Fares for a route and dateshotel-search
Rooms, rates and availabilitytrip-weather
Forecast for the travel datescredentials.json one store · never in git
flightsKey: ••••••••••••
hotelsKey: ••••••••••••
weatherKey: ••••••••••••
apistore/ every response, saved
apilog/2026-05-02.jsonl one line per call
_shared/skills/
Teach it once.
Skills live in one place. When a session starts, a hook links in the shared ones plus that org’s own, so a new skill is everywhere by the next session.
_shared/skills
orgs/acme/skills
orgs/studio/skills
orgs/home/skills
acme/agents/main/.claude/skills
studio/agents/main/.claude/skills
home/agents/main/.claude/skills
orgs/*/agents/main/sessions/
It picks up where it left off.
Every session keeps a journal as it works. Before the context runs out, /wrap writes a handoff, and the next session starts from there.
agents/main/sessions
One folder a day, one file per session. Several sessions in a day is normal, often at the same time.
docs/handoffs
memory
Episode 42 edit · 14:02 · studio/main
umbrella/README.md
It’s just folders.
Plain markdown in a git repo. No app, no server, no database. Open it in Finder and it’s all there, with every change in the history.
umbrella/ ├── _shared/ │ ├── bin/ # the scripts that wire it together │ ├── lib/ # sync code for mail, calendar, meetings │ ├── skills/ # skills every org gets │ └── templates/ # what a new org is stamped from ├── agents/ │ └── maintenance/ # looks after the structure itself └── orgs/ ├── acme/ # client work │ ├── ORG.md # who and what │ ├── OPERATIONS.md # where everything lives │ ├── GUARDRAILS.md # what needs a yes │ ├── projects.yaml # where the work already is │ ├── ingest/ # mail, calendar, meetings, texts │ ├── knowledge/ # reference that lasts │ ├── skills/ # this org's own │ ├── tasks/ # one file per task │ └── agents/ │ ├── main/ # interactive, the one you talk to │ └── worker/ # autonomous, takes jobs by email ├── home/ └── studio/
Adding an org
- 1
cp -R _shared/templates/org orgs/bakeryStamp it from the template. - 2
ORG.md · GUARDRAILS.mdSay who it’s for and what needs a yes. - 3
projects.yamlPoint to where the work already lives. - 4
alias bakery='cd ~/umbrella/orgs/bakery/agents/main && claude'Give it a way in. Shared skills link on the first session.
Built with Claude Code, from inside Claude Code.
Umbrella is a working system, not a product, so there’s nothing to download.
← All projects