Docs/Reference/Directory Structure

Directory Structure

PurePoint uses two directory trees: a project-level .pu/ directory and a global ~/.pu/ directory.

Project directory (.pu/)

Created by pu init in your project root.

.pu/
├── manifest.json          # Workspace state (source of truth)
├── config.yaml            # Project configuration
├── agent-context.md       # Context for non-Claude agents (codex, opencode)
├── grid-layout.json       # Pane grid layout persistence (macOS app)
├── worktrees/             # Git worktree directories
│   └── wt-{id}/          # Individual worktree checkout
├── prompts/               # Per-agent prompt files
│   └── {agent-id}.md     # Prompt used for a specific agent
├── templates/             # Saved prompt templates (local scope)
│   └── {name}.md         # Markdown with YAML frontmatter
├── agents/                # Saved agent definitions (local scope)
│   └── {name}.yaml       # Agent def YAML
├── swarms/                # Saved swarm definitions (local scope)
│   └── {name}.yaml       # Swarm def YAML
├── schedules/             # Saved schedule definitions (local scope)
│   └── {name}.yaml       # Schedule def YAML
└── triggers/              # Saved trigger definitions (local scope)
    └── {name}.yaml       # Trigger def YAML

Key files

FileFormatManaged byEditable
manifest.jsonJSONDaemonNo (daemon-managed)
config.yamlYAMLUser / pu initYes
agent-context.mdMarkdownpu initYes
grid-layout.jsonJSONmacOS appNo (app-managed)

Definition directories

Templates, agent defs, swarm defs, schedules, and triggers are all user-editable. You can create them via CLI commands or by writing YAML/Markdown files directly. See the corresponding docs for file formats:

Global directory (~/.pu/)

Created automatically. Holds daemon runtime files and global-scope definitions.

~/.pu/
├── bin/
│   └── pu                 # CLI binary (installed by macOS app)
├── daemon.pid             # Daemon process ID (standalone mode)
├── daemon.sock            # Unix domain socket for IPC
├── daemon.log             # Daemon stderr log
├── templates/             # Global prompt templates
├── agents/                # Global agent definitions
├── swarms/                # Global swarm definitions
├── schedules/             # Global schedule definitions
└── triggers/              # Global trigger definitions

Runtime files

FilePurposeWhen present
daemon.pidPID file to prevent duplicate daemonsStandalone mode only
daemon.sockUnix socket for CLI-to-daemon communicationWhile daemon is running
daemon.logDaemon stderr output for debuggingWhile daemon is running

CLI binary

The macOS app installs the pu binary to ~/.pu/bin/pu on launch. Add it to your PATH:

export PATH="$HOME/.pu/bin:$PATH"

ID formats

EntityFormatExample
Worktreewt-{8 alphanumeric}wt-abc12def
Agentag-{8 alphanumeric}ag-xyz98765
SessionUUID v4550e8400-e29b-41d4-a716-446655440000

Character set: [a-z0-9] (36 characters).