Content
<div align="center">
<img src="assets/puppyone.svg" alt="Puppyone Logo" width="72" height="72" />
<h1>Puppyone</h1>
<p><b>Git-native Context Drive for AI agents.</b></p>
<p>Puppyone provides context hosting for AI agents, with Git version control and file-level scoped permissions for every agent.</p>
<p>
<a href="https://www.puppyone.ai"><img src="https://img.shields.io/badge/Website-puppyone.ai-39BC66?style=flat-square" alt="Website" /></a>
<a href="https://www.puppyone.ai/doc"><img src="https://img.shields.io/badge/Docs-Read-D7F3FF?style=flat-square&logo=readthedocs&logoColor=black" alt="Documentation" /></a>
<a href="https://discord.gg/zwJ9Y3Uvpd"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat-square&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://x.com/puppyone_ai"><img src="https://img.shields.io/badge/X-(Twitter)-000000?style=flat-square&logo=x&logoColor=white" alt="X" /></a>
</p>
</div>
---
## What is Puppyone?
Puppyone provides context hosting for AI agents, with Git version control and file-level scoped permissions for every agent.
It supports CLI, MCP, Git, bash/SSH, and web app interactions through Access Points for different AI agents.
<p align="center">
<img src="assets/context-drive-access-diagram.png" alt="Puppyone Context Drive exposed through CLI, MCP, Git, and SSH access methods" width="100%" />
</p>
<p align="center"><em>One shared Context Drive, multiple scoped Access Points for different agents and tools.</em></p>
---
## Get Started
### 1. Install / Deploy
#### Option A: Cloud (Hosted)
The fastest way — no infrastructure to manage.
Create an account at [puppyone.ai](https://www.puppyone.ai).
#### Option B: Self-Hosted (Docker)
Run the full stack locally with Docker. The only prerequisite is [Docker](https://www.docker.com/).
```bash
git clone https://github.com/puppyone-ai/puppyone.git
cd puppyone/docker
cp .env.example .env
docker compose up -d
```
This starts everything — PostgreSQL, Auth, API gateway, Redis, MinIO, backend, and frontend — in a single command. The database schema is applied automatically on first run.
The Docker defaults already separate browser-facing URLs (`localhost`) from container-internal service URLs (`api`, `kong`), so the same setup works for both client-side and Next.js server-side requests.
The backend container also mounts the host Docker socket and a dedicated sandbox temp directory, so agent bash and sandbox endpoints work out of the box in the local Compose stack without changing the backend's global temp directory behavior.
| Service | URL |
|---------|-----|
| Frontend | `http://localhost:3000` |
| Backend API | `http://localhost:9090` |
| Supabase API | `http://localhost:8000` |
| MinIO Console | `http://localhost:9001` |
> **Security note:** The local Docker stack enables Docker-backed sandboxes by sharing the host Docker daemon with the backend container. This is convenient for local self-hosting, but for remote or multi-tenant deployments you should prefer `SANDBOX_TYPE=e2b` with an `E2B_API_KEY`.
The first startup may take 1-2 minutes. Then open `http://localhost:3000`. If the web app is not reachable yet, run `docker compose ps`.
Optional: to enable agent chat in the self-hosted stack, add your `ANTHROPIC_API_KEY` to `docker/.env` and restart:
```bash
cd docker
docker compose up -d
```
Optional: OAuth connectors such as GitHub, Gmail, and Google Drive require provider credentials in the backend environment. See `backend/.env.example` for the current variables.
### 2. First Run (for both cloud and self-host)
The product flow is the same for Cloud and self-hosted once the stack is running. Start by opening the web app and signing in:
- Cloud: [puppyone.ai](https://www.puppyone.ai)
- Self-Hosted: `http://localhost:3000`
If you want to manage your workspace from the CLI, install it and sign in:
```bash
npm install -g puppyone
puppyone auth login # first run asks: Cloud / Local / Custom URL
```
For self-hosted, choose `Local` at the prompt or pass `-u http://localhost:9090`.
The CLI stores sessions per target, so you can switch between Cloud and self-hosted without re-entering credentials (`puppyone auth targets switch <url>`).
**1. Create your first Context Drive**
```bash
puppyone project create "My Project"
puppyone project use "My Project"
```
This creates a project and sets it as active. You can also create your first project directly from the web app.
**2. Add your first content**
Start with something that works immediately in both Cloud and self-hosted:
| Source | Action |
|--------|--------|
| Webpage | `puppyone access add url https://example.com --scope /refs` |
| Files or folders | Upload directly from the web app |
Use target folders to organize uploaded or synced content into any path in your Context Drive.
### 3. Optional: Enable More Features
- **Agent chat** — In self-hosted deployments, add `ANTHROPIC_API_KEY` to `docker/.env` and restart the stack.
- **OAuth connectors** — In self-hosted deployments, configure provider credentials in the backend environment before using GitHub, Gmail, Google Drive, and other OAuth-based sources.
- **Distribute via MCP** — Create an MCP endpoint when you want agents in Cursor, Claude Desktop, or other MCP clients to read your Context Drive:
```bash
puppyone access add mcp "My Context"
# → outputs MCP endpoint URL and API key
```
See the [documentation](https://www.puppyone.ai/doc) for supported sources and advanced setup details.
---
## Features
### Connected
Connect context from SaaS tools, databases, and the web into agent-friendly files.
Puppyone provides built-in source connectors for GitHub, Gmail, Google Drive, Google Docs, Google Sheets, Google Calendar, Google Search Console, web pages, local filesystem access, and Supabase databases.
All data is transformed into agent-friendly formats (Markdown, JSON, raw files) and stored in your **Context Drive** — a cloud file system that any agent can browse like a local directory.
<img src="assets/connect-demo.gif" alt="Connect data sources" width="100%" />
### Collaborative
Agent-level auth, versioning, audit, and collaboration — built for agents, not humans.
- **File Level Security (FLS)** — Per-agent file permissions enforced at the filesystem layer. If an agent doesn't have access, the file physically doesn't exist in its environment. Think Row Level Security (RLS), but for files.
- **Version history & rollback** — File-level versioning with diff comparison and one-click rollback. Folder-level snapshots for bulk recovery.
- **Audit logs** — Every read and write operation is recorded: who did what, to which file, and when.
- **Checkout / commit workflow** — Locking, conflict detection, and resolution for concurrent agent edits.
<img src="assets/auth-demo.gif" alt="File Level Security" width="100%" />
### Accessible
One Context Drive, many ways in. Your agents access it however they work best:
- **MCP (Model Context Protocol)** — Auto-generated MCP endpoints for each agent. Connect Cursor, Claude Desktop, Windsurf, Cline, or any MCP-compatible client in seconds.
- **Sandbox** — Isolated Docker/E2B containers with only the authorized files mounted. Agents execute code securely without seeing anything they shouldn't.
- **REST API** — Full programmatic access. Read, write, query, and manage everything.
- **CLI** — Every operation available via `puppyone` command line, so AI coding tools like Claude Code can drive the platform directly.
- **Local folder sync** — Real-time bidirectional sync between local directories and the cloud Context Drive via the OpenClaw protocol.
---
## Tech Stack
| Layer | Technology |
|-------|-----------|
| Backend | [Python 3.12+](https://www.python.org/) / [FastAPI](https://fastapi.tiangolo.com/) |
| Frontend | [Next.js 15](https://nextjs.org/) / React 18 / TypeScript / Tailwind CSS |
| CLI | Node.js / [Commander.js](https://github.com/tj/commander.js) |
| Database | [Supabase](https://supabase.com/) (PostgreSQL) |
| Auth | Supabase Auth (JWT + Access Key) |
| Storage | AWS S3 / MinIO / LocalStack |
| Task Queue | [ARQ](https://github.com/samuelcolvin/arq) (Redis) |
| Sandbox | Docker / [E2B](https://e2b.dev/) |
---
## Contributing
We welcome issues, feature requests, and pull requests.
- For small fixes, open a PR directly.
- For larger changes, [file an issue](https://github.com/puppyone-ai/puppyone/issues/new/choose) first to discuss the design.
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
---
## License
Puppyone is open source under the [Apache License 2.0](LICENSE).
You can use, modify, and distribute Puppyone freely — for personal projects,
internal company tools, self-hosted deployments (single- or multi-tenant),
commercial products, and managed services — subject to the standard Apache 2.0
terms (preserve copyright and `NOTICE`, document significant modifications, and
note that no trademark rights are granted).
See [`LICENSE`](LICENSE) for the full license text and [`NOTICE`](NOTICE) for
attribution of bundled third-party components.
> **Trademarks.** "Puppyone", "PuppyOne", and the Puppyone logo are trademarks
> of PuppyOne authors and are **not** licensed under Apache 2.0. If you fork or
> redistribute, please use a different name and logo for your distribution.
> **Hosted service.** [puppyone.ai](https://www.puppyone.ai) is the official
> managed offering operated by the PuppyOne team. The hosted service is governed
> by its own Terms of Service.
Connection Info
You Might Also Like
markitdown
Python tool for converting files and office documents to Markdown.
markitdown
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
Filesystem
Node.js MCP Server for filesystem operations with dynamic access control.
TrendRadar
TrendRadar: Your hotspot assistant for real news in just 30 seconds.
mempalace
The highest-scoring AI memory system ever benchmarked. And it's free.
mempalace
The highest-scoring AI memory system ever benchmarked. And it's free.