mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
Add explicit lightningcss dependency for Vercel build
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -42,3 +42,4 @@ coverage/
|
|||||||
|
|
||||||
# Misc
|
# Misc
|
||||||
*.pem
|
*.pem
|
||||||
|
.vercel
|
||||||
|
|||||||
188
README.md
Normal file
188
README.md
Normal file
@@ -0,0 +1,188 @@
|
|||||||
|
# Realtime Voice Monorepo
|
||||||
|
|
||||||
|
OpenAI Realtime API voice assistant with tmux MCP integration.
|
||||||
|
|
||||||
|
## Packages
|
||||||
|
|
||||||
|
- **`@realtime-voice/mcp-server`** - MCP server for tmux control
|
||||||
|
- Located in `packages/mcp-server/`
|
||||||
|
- Provides tmux session management via MCP protocol
|
||||||
|
- Can run as HTTP server or stdio mode
|
||||||
|
|
||||||
|
- **`@realtime-voice/web`** - Next.js web interface
|
||||||
|
- Located in `packages/web/`
|
||||||
|
- Voice interaction with OpenAI Realtime API
|
||||||
|
- Password authentication
|
||||||
|
- Agent activity transparency (debug panel)
|
||||||
|
- Real-time status display
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install all dependencies
|
||||||
|
npm install
|
||||||
|
|
||||||
|
# Run web app in dev mode
|
||||||
|
npm run dev
|
||||||
|
|
||||||
|
# Run MCP server in dev mode
|
||||||
|
npm run dev:mcp
|
||||||
|
|
||||||
|
# Build everything
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# Type check all packages
|
||||||
|
npm run typecheck
|
||||||
|
```
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
### Web App
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Development
|
||||||
|
npm run dev # Start Next.js dev server (port 3000)
|
||||||
|
|
||||||
|
# Production
|
||||||
|
npm run build:web # Build for production
|
||||||
|
npm run start # Start production server
|
||||||
|
```
|
||||||
|
|
||||||
|
### MCP Server
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Development
|
||||||
|
npm run dev:mcp # Start with HTTP server and dev-password
|
||||||
|
|
||||||
|
# Production
|
||||||
|
npm run build:mcp # Build TypeScript
|
||||||
|
npm run start:mcp # Run built server
|
||||||
|
```
|
||||||
|
|
||||||
|
## Environment Variables
|
||||||
|
|
||||||
|
Create `.env.local` in `packages/web/`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
OPENAI_API_KEY=sk-your-api-key-here
|
||||||
|
AUTH_PASSWORD=your-secure-password-here
|
||||||
|
MCP_SERVER_URL=https://your-mcp-server-url
|
||||||
|
```
|
||||||
|
|
||||||
|
See `packages/web/.env.local.example` for template.
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
realtime-voice-monorepo/
|
||||||
|
├── packages/
|
||||||
|
│ ├── mcp-server/ # MCP Server Package
|
||||||
|
│ │ ├── src/
|
||||||
|
│ │ │ ├── index.ts # CLI entry point
|
||||||
|
│ │ │ ├── http-server.ts # HTTP server mode
|
||||||
|
│ │ │ └── tmux.ts # Tmux operations
|
||||||
|
│ │ ├── build/ # Compiled output
|
||||||
|
│ │ ├── package.json
|
||||||
|
│ │ └── tsconfig.json
|
||||||
|
│ │
|
||||||
|
│ └── web/ # Web App Package
|
||||||
|
│ ├── app/
|
||||||
|
│ │ ├── api/ # API routes
|
||||||
|
│ │ ├── components/ # React components
|
||||||
|
│ │ ├── hooks/ # Custom hooks
|
||||||
|
│ │ ├── types/ # TypeScript types
|
||||||
|
│ │ └── voice-client.tsx # Main voice UI
|
||||||
|
│ ├── package.json
|
||||||
|
│ └── next.config.js
|
||||||
|
│
|
||||||
|
├── package.json # Root workspace config
|
||||||
|
├── tsconfig.base.json # Shared TypeScript config
|
||||||
|
└── README.md # This file
|
||||||
|
```
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
### Web App
|
||||||
|
- Real-time voice interaction with OpenAI
|
||||||
|
- WebRTC-based low-latency audio streaming
|
||||||
|
- Live audio level visualization
|
||||||
|
- Mute/unmute controls
|
||||||
|
- Password authentication
|
||||||
|
- Agent activity transparency (debug log panel)
|
||||||
|
- Real-time agent status display
|
||||||
|
- Tool call visibility
|
||||||
|
|
||||||
|
### MCP Server
|
||||||
|
- Full tmux session control
|
||||||
|
- List sessions, windows, and panes
|
||||||
|
- Send keystrokes and text
|
||||||
|
- Create and kill sessions/windows/panes
|
||||||
|
- Capture pane output
|
||||||
|
- HTTP server mode with password auth
|
||||||
|
- stdio mode for Claude Desktop integration
|
||||||
|
|
||||||
|
## Deployment
|
||||||
|
|
||||||
|
### Web App (Vercel)
|
||||||
|
|
||||||
|
The web app is configured for Vercel deployment:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Deploy from monorepo
|
||||||
|
cd ~/dev/realtime-voice-monorepo
|
||||||
|
vercel --prod
|
||||||
|
|
||||||
|
# Set environment variables
|
||||||
|
vercel env add OPENAI_API_KEY production
|
||||||
|
vercel env add AUTH_PASSWORD production
|
||||||
|
vercel env add MCP_SERVER_URL production
|
||||||
|
```
|
||||||
|
|
||||||
|
### MCP Server
|
||||||
|
|
||||||
|
The MCP server typically runs locally:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build and run
|
||||||
|
npm run build:mcp
|
||||||
|
npm run start:mcp -- --http --password your-password
|
||||||
|
```
|
||||||
|
|
||||||
|
## Scripts Reference
|
||||||
|
|
||||||
|
### Root Level
|
||||||
|
|
||||||
|
| Script | Description |
|
||||||
|
|--------|-------------|
|
||||||
|
| `npm run dev` | Start web app dev server |
|
||||||
|
| `npm run dev:mcp` | Start MCP server dev server |
|
||||||
|
| `npm run build` | Build all packages |
|
||||||
|
| `npm run build:mcp` | Build MCP server only |
|
||||||
|
| `npm run build:web` | Build web app only |
|
||||||
|
| `npm run typecheck` | Type check all packages |
|
||||||
|
| `npm run start` | Start web app production server |
|
||||||
|
| `npm run start:mcp` | Start MCP server production |
|
||||||
|
|
||||||
|
### Package Level
|
||||||
|
|
||||||
|
Run commands in specific packages:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Run command in web package
|
||||||
|
npm run <script> --workspace=web
|
||||||
|
|
||||||
|
# Run command in mcp-server package
|
||||||
|
npm run <script> --workspace=mcp-server
|
||||||
|
```
|
||||||
|
|
||||||
|
## Tech Stack
|
||||||
|
|
||||||
|
- **Monorepo**: npm workspaces
|
||||||
|
- **Web**: Next.js 15, React 19, TypeScript, Tailwind CSS
|
||||||
|
- **MCP Server**: TypeScript, Express, MCP SDK
|
||||||
|
- **Voice**: OpenAI Realtime API, WebRTC
|
||||||
|
- **Build**: TypeScript compiler, Next.js build
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT
|
||||||
2030
package-lock.json
generated
Normal file
2030
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
1827
packages/web/package-lock.json
generated
1827
packages/web/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -23,6 +23,7 @@
|
|||||||
"@types/react": "^19.2.2",
|
"@types/react": "^19.2.2",
|
||||||
"@types/react-dom": "^19.2.1",
|
"@types/react-dom": "^19.2.1",
|
||||||
"autoprefixer": "^10.4.21",
|
"autoprefixer": "^10.4.21",
|
||||||
|
"lightningcss": "^1.29.5",
|
||||||
"next": "^15.5.4",
|
"next": "^15.5.4",
|
||||||
"openai-realtime-api": "^1.0.8",
|
"openai-realtime-api": "^1.0.8",
|
||||||
"postcss": "^8.5.6",
|
"postcss": "^8.5.6",
|
||||||
|
|||||||
8
vercel.json
Normal file
8
vercel.json
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://openapi.vercel.sh/vercel.json",
|
||||||
|
"buildCommand": "cd packages/web && npm run build",
|
||||||
|
"outputDirectory": "packages/web/.next",
|
||||||
|
"installCommand": "npm install",
|
||||||
|
"framework": null,
|
||||||
|
"devCommand": "cd packages/web && npm run dev"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user