# Open ChatKit Studio

Explore and build embeddable chat experiences.

## Applications

- **Studio** (port 3000) - Main launcher interface with cards for each app
- **Playground** (port 3001) - AG-UI playground for customizing and learning
- **World** (port 3002) - Interactive globe demo with CopilotKit

## Getting Started

```bash
# Install dependencies
pnpm install

# Setup environment variables for agents (optional)
cp apps/playground/agent/.env.example apps/playground/agent/.env
cp apps/world/agent/.env.example apps/world/agent/.env
# Edit the .env files with your API keys

# Run all apps concurrently
pnpm dev

# Run individual apps
pnpm dev:studio       # Studio launcher only
pnpm dev:playground   # Playground app only
pnpm dev:world        # World app only
```

## Structure

```
open-chatkit-studio/
├── apps/
│   ├── studio/        # Main launcher (Next.js 15)
│   ├── playground/    # AG-UI Playground with LangGraph agent
│   └── world/         # CopilotKit World Explorer
├── package.json       # Root workspace config
├── pnpm-workspace.yaml
└── turbo.json         # Turborepo config
```

## Architecture

This is a monorepo combining multiple chat applications:

- **Monorepo Manager**: pnpm workspaces
- **Build System**: Turborepo for optimized parallel builds
- **Framework**: Next.js 15 with TypeScript
- **Styling**: Tailwind CSS 4
- **Agents**: LangGraph for playground and world apps

Each app runs on its own port and can be developed independently. The studio launcher provides a unified entry point with visual cards linking to each application.

## Development

### Building All Apps

```bash
pnpm build
```

### Building Individual Apps

```bash
pnpm build:studio
pnpm build:playground
pnpm build:world
```

### Running Agents

Playground and World apps each have their own LangGraph agents:

```bash
# Playground agent (port 8124)
cd apps/playground && pnpm dev:agent

# World agent (port 8125)
cd apps/world && pnpm dev:agent
```

## Port Configuration

- Studio: 3000
- Playground: 3001
- World: 3002
- Playground Agent: 8124
- World Agent: 8125
