Your assistant's identity, personality, and knowledge about you live in a folder on your computer: ~/.vellum/workspace/.
The files that define who your assistant is and how it behaves are plain text — markdown files you can open, read, and edit in any text editor. The workspace also contains conversation history, installed skills, a scratch area for working files, and internal databases for memory and search.
~/.vellum/ ├── workspace/ │ ├── IDENTITY.md ← Who your assistant is │ ├── SOUL.md ← How your assistant behaves │ ├── USER.md ← What it knows about you │ ├── NOW.md ← Working scratchpad (tasks, context, goals) │ ├── config.json ← Runtime configuration │ ├── conversations/ ← Per-conversation folders with attachments │ ├── skills/ ← Installed and custom skills │ ├── scratch/ ← Working files, exports, generated assets │ └── data/ ← Internal state │ ├── db/ ← Conversation history (SQLite) │ ├── qdrant/ ← Memory embeddings (vector DB) │ ├── memory/ ← Knowledge base documents │ ├── apps/ ← User-built apps │ ├── avatar/ ← Avatar image │ ├── logs/ ← Daemon logs │ └── ... ← Browser profile, sounds, proxy certs ├── protected/ ← Credentials & secrets (never exported) └── hooks/ ← Event-triggered automation
Three identity files are loaded into every conversation. When your assistant wakes up, it reads them to remember who it is, who you are, and how it should behave. Edit any of them, and the changes take effect on the next conversation.
Your assistant's self-definition:
- Name: Gigi - Emoji: 😏 - Nature: AI familiar - Personality: Witty, sharp, slightly irreverent - Role: Personal assistant, second brain
You can edit this file directly. Change the name, tweak the personality, swap the emoji. Your assistant picks up the changes next time you talk to it.
The big one. SOUL.md is your assistant's constitution — the principles and behavioral rules it follows in every conversation.
What's in here:
Your assistant updates this file on its own as it learns what works for you. But you can edit it too. Want it to stop being sarcastic? Remove the sarcasm. Want it to always explain before acting? Add that rule. It's your file.
Everything your assistant has learned about you:
Your assistant adds to this over time through conversations. You can also edit it directly to fast-track the learning process or correct something it got wrong. If you declined to answer a question during onboarding, it's marked here so the assistant doesn't re-ask.
A working scratchpad for what's happening right now. Unlike the identity files, NOW.md is ephemeral — it tracks in-progress tasks, session context, goals, and anything the assistant needs to carry between conversations.
The assistant reads and updates this file naturally as you work together. Think of it as a shared notepad — you can edit it too if you want to set priorities or leave context for the next session.
This file only exists during onboarding. It's the script your assistant follows for your first conversation — figuring out its name, its vibe, who you are, and what you need help with. Once onboarding is complete, the assistant deletes it. If you see it in your workspace, onboarding hasn't finished yet.
When your assistant gets an update, release notes appear in this file. The assistant reads them, decides what's worth telling you about, and then deletes the file. You might catch it between updates, but it's not meant to stick around.
Every conversation gets its own folder inside conversations/, named with a timestamp and unique ID. Each folder can contain attachments — files you sent to the assistant or that it generated during the conversation.
The workspace is also a git repository. Your assistant automatically commits changes after each conversation turn, so you get a full history of how your workspace evolved over time.
Custom skills you've built or installed from the community live here. Each skill gets its own folder. A minimal skill only needs one file:
More complex skills can also include:
Built-in skills from the catalog are loaded automatically and don't appear here — only custom and community-installed skills show up in this directory. You can inspect, modify, or delete any of them.
The scratch/ directory is a general-purpose working area. When the assistant generates images, exports files, writes scripts, or creates anything that isn't a conversation attachment, it lands here. Think of it as the assistant's desktop — a place for working files that don't belong anywhere specific.
This is where the assistant keeps its internal state. You generally won't need to touch these, but here's what's in there:
| Folder | What it stores |
|---|---|
| db/ | Conversation history, messages, and tool invocations (SQLite) |
| qdrant/ | Memory embeddings powering the search system (vector DB) |
| memory/ | Knowledge base documents for long-term recall |
| apps/ | Apps you've asked the assistant to build |
| avatar/ | Your assistant's avatar image |
| logs/ | Daemon logs (useful for debugging) |
| browser-profile/ | Headless browser session data |
| sounds/ | Custom notification sounds |
~/.vellum/protected/ is separate from the workspace. It stores credentials, API keys, OAuth tokens, and trust configuration.
This directory is never included in diagnostic exports — when you send logs to Vellum for debugging, your secrets stay on your machine. The assistant can use these credentials but cannot read or display them in conversation.
Your assistant operates within a security boundary:
| Tool type | Access | Permission |
|---|---|---|
| Workspace tools | file_read, file_write, file_edit — restricted to ~/.vellum/workspace/ | No approval needed |
| Host tools | host_file_read, host_file_write, host_file_edit — can access files anywhere on your machine | Requires approval |
| Shell commands | bash runs sandboxed in the workspace; host_bash runs on your machine | host_bash requires approval |
Path traversal (using ../ to escape the workspace) is blocked. Symlinks that point outside the boundary are rejected. The sandbox is enforced at the OS level using sandbox-exec on macOS.