An open API service indexing awesome lists of open source software.

https://github.com/wunderlabs-dev/claudebin.com

Claudebin is a minimalistic tool for publishing and sharing Claude coding sessions
https://github.com/wunderlabs-dev/claudebin.com

claude claude-code claude-code-plugin

Last synced: 14 days ago
JSON representation

Claudebin is a minimalistic tool for publishing and sharing Claude coding sessions

Awesome Lists containing this project

README

          


Claudebin


Share your Claude Code sessions with teammates.


Website ·
Plugin ·
Getting Started


Claudebin - Export and share your Claude Code sessions as resumable URLs | Product Hunt

---

> **Web App** (this repo) - the Next.js frontend and API at [claudebin.com](https://claudebin.com)
>
> **Plugin** - the Claude Code plugin at [github.com/wunderlabs-dev/claudebin](https://github.com/wunderlabs-dev/claudebin)

## What it looks like

Publish any Claude Code session with a single command and get a shareable link - complete with syntax highlighting, tool calls, and the full conversation thread.


Thread view

## Getting Started

```bash
bun install # Install dependencies
bun dev # Start dev server
bun build # Build for production
bun check # Lint & format
```

### Environment Variables

```bash
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
OPENROUTER_API_KEY= # For title generation
```

### Local Development with the Plugin

1. Start the web app: `bun dev` (runs on port 3000)
2. Build the plugin:
```bash
cd /path/to/claudebin/mcp && bun install && bun run build
```
3. Run Claude with the local plugin:
```bash
CLAUDEBIN_API_URL=http://localhost:3000 claude --plugin-dir /path/to/claudebin --dangerously-skip-permissions
```

## Architecture

```
claudebin.com/
├── app/ # Next.js 16 web application
│ └── src/
│ ├── app/ # Pages and API routes
│ ├── components/ # UI components
│ ├── containers/ # Page containers
│ ├── server/ # Backend logic
│ │ ├── actions/ # Server actions (mutations)
│ │ ├── repos/ # Data access (Supabase)
│ │ ├── services/ # Business logic
│ │ └── api/ # OpenAPI schemas
│ └── context/ # React context providers
└── supabase/ # Database migrations
```

### Routes

| Route | Description |
|---|---|
| `/` | Homepage with featured threads |
| `/threads` | Browse public threads |
| `/threads/[id]` | View a session |
| `/threads/[id]/embed` | Embeddable version |
| `/profile/[username]` | User profile |
| `/auth/login` | GitHub OAuth |

### API

OpenAPI spec at `/api/openapi.json`.

| Endpoint | Method | Description |
|---|---|---|
| `/api/auth/start` | `POST` | Start CLI auth flow |
| `/api/auth/poll` | `GET` | Poll for auth completion |
| `/api/auth/refresh` | `POST` | Refresh access token |
| `/api/auth/validate` | `GET` | Validate access token |
| `/api/sessions/publish` | `POST` | Publish a session |
| `/api/sessions/poll` | `GET` | Poll processing status |
| `/api/threads/[id]/messages` | `GET` | Get thread messages |
| `/api/threads/[id]/md` | `GET` | Get thread as markdown |

### Session Processing Pipeline

```
Plugin uploads JSONL ─→ Store in Supabase Storage ─→ Parse into messages ─→ Generate title (LLM) ─→ Ready
```

### Database

PostgreSQL with Row Level Security. Auto-profile creation on signup, denormalized counts via triggers, and full-text search on message content.

| Table | Description |
|---|---|
| `profiles` | User data synced from `auth.users` |
| `sessions` | Published threads with view/like counts |
| `messages` | Parsed conversation messages |
| `session_likes` | User likes |
| `cli_auth_sessions` | Temporary CLI OAuth tokens |

## Tech Stack

| | |
|---|---|
| **Framework** | Next.js 16, Turbopack |
| **Database** | Supabase (PostgreSQL) |
| **Auth** | Supabase Auth, GitHub OAuth |
| **Styling** | Tailwind CSS, shadcn/ui |
| **Tooling** | Bun, Biome |

## License

MIT