Symlinks and Load Knowledge
Cabinet uses direct symlinks to bring external folders into your knowledge base without copying anything. The folder stays where it is on disk — Cabinet just creates a pointer to it.
How Load Knowledge works
- Right-click any item in the sidebar
- Choose Load Knowledge
- Pick a folder on your machine (or paste the path)
- Optionally set a display name
- Click Load
Cabinet creates a symlink inside the KB:
data/my-project -> /Users/me/Projects/my-project
The folder's contents appear directly as children in the sidebar tree. No wrapper directories, no extra nesting.
What gets written
Cabinet writes two hidden dotfiles into the target folder:
.cabinet-meta
Every linked folder gets this. Stores display metadata for the KB. Hidden from the sidebar.
title: My Project
tags:
- knowledge
created: '2026-04-12T00:00:00.000Z'
Cabinet also reads legacy
.cabinet.yamlfiles when they already exist, but new links use.cabinet-meta.
.repo.yaml (git repos only)
If the folder is a git repo, Cabinet auto-detects the branch and remote and writes a .repo.yaml so AI agents can read the source code in context.
name: my-project
local: /Users/me/Projects/my-project
remote: https://github.com/me/my-project.git
source: both
branch: main
If a .repo.yaml already exists in the folder, Cabinet skips writing it.
Both dotfiles are hidden from the sidebar by default.
Sidebar icons
| Icon | Color | Meaning |
|---|---|---|
| GitBranch | Orange | Linked git repo (has .repo.yaml) |
| Link2 | Blue | Linked non-repo directory |
Unlinking
To remove a linked folder:
- Right-click the linked item in the sidebar
- Choose Unlink
This removes only the symlink from the KB. The original folder and all its files are untouched. The .cabinet-meta dotfile in the target is also cleaned up.
Changing the data directory
By default, Cabinet stores content in ./data (dev mode) or a platform-specific app-data path (Electron). Override with the CABINET_DATA_DIR environment variable:
CABINET_DATA_DIR=/path/to/my/kb npm run dev
You can also make data/ itself a symlink pointing elsewhere — the tree builder follows symlinks transparently.
Tips
- Linked folders with an
index.html(and noindex.md) render as embedded websites - Add a
.appmarker for full-screen mode - If the target folder has its own
index.md, Cabinet uses it as the landing page - Agents discover linked repos by reading
.repo.yamlin the current or any parent directory
Back to Getting Started.