Skip to content

Set up Cursor Cloud dev environment (AGENTS.md notes) - #2

Draft
vijit-lark wants to merge 1 commit into
mainfrom
cursor/setup-dev-environment-3fa1
Draft

Set up Cursor Cloud dev environment (AGENTS.md notes)#2
vijit-lark wants to merge 1 commit into
mainfrom
cursor/setup-dev-environment-3fa1

Conversation

@vijit-lark

Copy link
Copy Markdown
Contributor

What

Provisions and verifies a full development environment for openlily (the Pipecat voice assistant under server/) on the Cursor Cloud VM, and records durable, non-obvious startup/run guidance for future agents.

The only committed change is an AGENTS.md addition (## Cursor Cloud specific instructions). Environment provisioning is handled by the update script and the VM snapshot; .env/brains.yaml/.venv are git-ignored and not committed.

Environment

  • Installed uv + Python 3.11 (pinned by server/.python-version) and PortAudio system libs (for PyAudio).
  • uv sync for the server/ project with the local, web, and email extras. local-models is intentionally excluded (its mlx-whisper runtime is Apple-Silicon only).
  • Update script: uv sync --project server --extra local --extra web --extra email (idempotent).

Verified

Task Command Result
Lint uv run ruff check . Runs; 3 pre-existing findings (UP035/UP017) in committed code
Type-check uv run pyright Runs; 5 pre-existing reportArgumentType in agent.py
Tests uv run pytest 79 passed
Run app uv run bot.py --mode webrtc Server up on :7860; browser client connects to Client/Agent READY

Hello-world (running app, end to end)

Opened the Pipecat client at http://localhost:7860/client/, clicked Connect, and the WebRTC session reached Client: READY / Agent: READY. Server logs show the full cascade pipeline assembling (SmallWebRTCInputTransport → CartesiaSTT → LLMUserAggregator → OpenAIResponsesLLM → CartesiaTTS → … → LLMAssistantAggregator), Silero VAD + Smart Turn v3 loading, Client connected, and Pipeline ready; played readiness chime. With placeholder keys, the pipeline then hits HTTP 401 on Cartesia/OpenAI — which confirms the wiring reaches the external APIs; a real spoken/text reply needs valid provider keys.

openlily_webrtc_client_connects_ready.mp4

Notes for future agents (in AGENTS.md)

  • No audio device on the VM → local/local-with-wake-word can't run headless; use --mode webrtc.
  • cli.py uses load_dotenv(override=True), so a server/.env overrides real env-var Secrets — don't create a .env that sets keys you provide as Secrets.
  • Provider keys gate the conversation (default brain needs OPENAI_API_KEY + CARTESIA_API_KEY), not server startup.

To show artifacts inline, enable in settings.

Open in Web Open in Cursor 

Co-authored-by: vijit-lark <vijit-lark@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants