Core Concepts Overview
Understand PuppyOne's data model and core architecture.
Data hierarchy
PuppyOne organizes your data in a three-layer structure:
Organization
└── Project
└── Content Nodes (Mut Merkle tree)
├── Folder
│ ├── JSON file
│ ├── Markdown file
│ └── Uploaded file
└── ...Organization
An Organization is the top-level management unit, typically representing your team or company.
- Manage members and roles
- Contain multiple Projects
- Centralize billing and permission management
Project
A Project is the namespace for a specific set of business data.
- For example: "Product Knowledge Base", "Support FAQ", or "Engineering Docs"
- Each Project has its own independent content tree, stored in a Mut Merkle tree backed by S3
- You can configure project-level access control and membership
Content Node
A Content Node is PuppyOne's core data structure: a tree made up of folders, JSON files, Markdown files, and uploaded files, all identified by path.
Unlike a traditional table model, the content tree supports arbitrary nesting and can hold both structured data and unstructured documents, much like a cloud file system.
Core concepts
| Concept | Description |
|---|---|
| Content Node | The basic unit of data. Supports four types: folder, JSON, Markdown, and file. Identified by path, stored in a Mut Merkle tree. |
| Access Point | The unified abstraction for every external integration: data sync, agents, MCP endpoints, sandboxes, and local folders |
| MCP Protocol | The standard protocol AI models use to access your data directly from clients like Cursor and Claude Desktop |
Access Points: the single entry point for integrations
PuppyOne uses the concept of an access point to manage every external integration in one place:
Access Point
├── Sync Source - Pull data from Notion, GitHub, Gmail, and more
├── Agent - AI agent with model and tool bindings
├── MCP Endpoint - Expose data through MCP
├── Sandbox - Isolated code execution environment
└── Filesystem - Bidirectional local folder syncWhether you are connecting a Notion source or creating an MCP endpoint for Cursor, you use the same interface:
puppyone access add notion <url> # Add a Notion data source
puppyone access add mcp "My MCP" # Create an MCP endpoint
puppyone access add filesystem ~/docs # Mount a local folder
puppyone access ls # List all access points