{"id":31112070,"url":"https://github.com/steinathan/attendee-pipecat","last_synced_at":"2025-09-17T08:51:53.359Z","repository":{"id":312352765,"uuid":"1047227450","full_name":"steinathan/attendee-pipecat","owner":"steinathan","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-30T01:20:05.000Z","size":182,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-30T03:07:38.844Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/steinathan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-30T00:59:48.000Z","updated_at":"2025-08-30T01:21:27.000Z","dependencies_parsed_at":"2025-08-30T03:07:40.962Z","dependency_job_id":"6f2b0b9b-8468-49cf-b604-61b325132f54","html_url":"https://github.com/steinathan/attendee-pipecat","commit_stats":null,"previous_names":["steinathan/attendee-pipecat"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/steinathan/attendee-pipecat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steinathan%2Fattendee-pipecat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steinathan%2Fattendee-pipecat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steinathan%2Fattendee-pipecat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steinathan%2Fattendee-pipecat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/steinathan","download_url":"https://codeload.github.com/steinathan/attendee-pipecat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steinathan%2Fattendee-pipecat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275563648,"owners_count":25487541,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-17T02:00:09.119Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-17T08:51:47.961Z","updated_at":"2025-09-17T08:51:53.350Z","avatar_url":"https://github.com/steinathan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pipecat Voice Agent with Attendee\n\nThis project demonstrates how to create a real-time voice agent using Pipecat framework in Python with FastAPI, integrated with Attendee's meeting bot API.\n\n## Features\n\n- Real-time voice-to-voice conversational AI using Pipecat\n- Integration with Deepgram for speech-to-text\n- Integration with OpenAI for language processing\n- Integration with Attendee API for meeting bot functionality\n- WebSocket-based communication between browser and server\n- Configurable agent personality and voice\n\n## Prerequisites\n\n1. Python 3.10 or higher\n2. [UV](https://github.com/astral-sh/uv) for dependency management\n3. Pipecat framework\n4. API keys for:\n   - Deepgram (for STT/TTS)\n   - OpenAI (for LLM)\n   - Attendee (for meeting bot API)\n5. Ngrok or similar tunneling service for WebSocket connections\n\n## Setup Instructions\n\n1. Clone the repository\n2. Install dependencies using UV:\n   ```\n   uv sync\n   ```\n3. Copy `.env.example` to `.env` and fill in your API keys:\n   ```\n   DEEPGRAM_API_KEY=your_deepgram_api_key\n   OPENAI_API_KEY=your_openai_api_key\n   ATTENDEE_API_KEY=your_attendee_api_key\n   ATTENDEE_API_HOST=https://app.attendee.dev\n   NGROK_URL=wss://your-ngrok-url.ngrok-free.app\n   PORT=8000\n   ```\n4. Run the application:\n   ```\n   uv run app/main.py\n   ```\n   \n   Alternatively, you can activate the virtual environment and run directly:\n   ```\n   source .venv/bin/activate  # On Windows: .venv\\Scripts\\activate\n   python app/main.py\n   ```\n   \n   If port 8080 is already in use, you can specify a different port:\n   ```\n   PORT=8081 uv run app/main.py\n   ```\n\n## Usage\n\n1. Start ngrok or your preferred tunneling service to expose port 8000\n2. Open `http://localhost:8000` in your browser\n3. Configure the voice agent:\n   - Meeting URL: The URL of the meeting the bot should join\n   - WebSocket Tunnel URL: Your ngrok WebSocket URL\n   - Agent Prompt: Customize the AI assistant's personality\n   - Greeting Message: Set what the agent says when it joins\n   - Voice Model: Choose from available Deepgram voice models\n4. Click \"Launch Voice Agent\" to start the bot\n\n## Project Structure\n\n- `app/main.py`: Main FastAPI application with WebSocket endpoint\n- `static/index.html`: Frontend interface\n- `pyproject.toml`: Project dependencies and metadata\n- `.env.example`: Environment variable template\n\n## API Endpoints\n\n- `GET /`: Serve the web interface\n- `WebSocket /ws`: Handle real-time audio streaming and bot configuration\n\n## Configuration\n\nThe application can be configured using environment variables:\n\n- `DEEPGRAM_API_KEY`: Deepgram API key for speech processing\n- `OPENAI_API_KEY`: OpenAI API key for language processing\n- `ATTENDEE_API_KEY`: Attendee API key for meeting bot functionality\n- `ATTENDEE_API_HOST`: Attendee API host URL (default: https://app.attendee.dev)\n- `NGROK_URL`: Ngrok URL for WebSocket connections (default: ws://localhost:8080)\n- `PORT`: Port to run the server on (default: 8080)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteinathan%2Fattendee-pipecat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsteinathan%2Fattendee-pipecat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteinathan%2Fattendee-pipecat/lists"}