{"id":50575929,"url":"https://github.com/ericmey/openclaw-livekit","last_synced_at":"2026-06-04T22:01:42.451Z","repository":{"id":352296609,"uuid":"1214612348","full_name":"ericmey/openclaw-livekit","owner":"ericmey","description":"OpenClaw LiveKit voice stack — SIP trunking + realtime voice agents monorepo","archived":false,"fork":false,"pushed_at":"2026-05-22T02:13:23.000Z","size":861,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-22T11:42:23.560Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ericmey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-18T20:11:51.000Z","updated_at":"2026-05-22T02:13:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ericmey/openclaw-livekit","commit_stats":null,"previous_names":["ericmey/openclaw-livekit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ericmey/openclaw-livekit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericmey%2Fopenclaw-livekit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericmey%2Fopenclaw-livekit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericmey%2Fopenclaw-livekit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericmey%2Fopenclaw-livekit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ericmey","download_url":"https://codeload.github.com/ericmey/openclaw-livekit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericmey%2Fopenclaw-livekit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33921352,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-04T02:00:06.755Z","response_time":64,"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":"2026-06-04T22:01:41.278Z","updated_at":"2026-06-04T22:01:42.432Z","avatar_url":"https://github.com/ericmey.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# openclaw-livekit\n\nMonorepo for the OpenClaw voice stack: SIP trunking, realtime voice agents, and\nthe operations layer that wires them together.\n\n## What's in here\n\n```\nopenclaw-livekit/\n├── pyproject.toml                 uv workspace root + ruff/pyright config\n├── docker-compose.yaml            livekit-server + livekit-sip + redis\n├── config/                        live configs (bootstrap copies .example files here)\n├── secrets/                       local-only secrets (gitignored)\n├── logs/                          runtime voice logs (gitignored)\n├── scripts/                       ops verbs (deploy, cycle, health, etc.)\n├── docs/                          architecture, operations, gotchas\n├── Makefile                       stable wrapper around scripts/\n│\n├── sdk/                           shared runtime (telemetry, trace, transcript, post-call, clients)\n├── tools/                         @function_tool mixins — browseable catalog at tools/README.md\n└── agents/                        voice personas\n    ├── nyla/                      realtime persona (Gemini 2.5 native audio)\n    ├── aoi/                       realtime persona, technical partner\n    ├── yua/                       realtime persona, coding and QA partner\n    └── party/                     chained STT/LLM/TTS variant\n```\n\nEvery Python package is a uv workspace member declared in the root\n`pyproject.toml`. One `.venv/` at the root serves them all.\n\n## Bring Your Own Stack\n\nThis repo is a working reference for one personal voice stack, not a\ndrop-in product. The included agents (`nyla`, `aoi`, `yua`, `party`) and tools\nare samples you can replace with your own personas, model choices, and\ntool mixins.\n\nBefore trying to run it, have these pieces at hand:\n\n| Area | What you provide | Where to configure |\n|------|------------------|--------------------|\n| LiveKit + SIP | LiveKit server/API keys and SIP bridge config | `config/livekit*.yaml`, `docker-compose.yaml` |\n| SIP provider | A DID/trunk provider such as Twilio | `config/sip-*.json`, [docs/twilio-trunk.md](docs/twilio-trunk.md) |\n| Agents | Personas, prompts, voices, models | `agents/*`, `scripts/deploy-agents.sh` |\n| Tools | Function tools the voice model may call | `tools/src/tools/`, [tools/README.md](tools/README.md) |\n| OpenClaw | Optional Gateway hook target for async delegation | `OPENCLAW_HOOK_*`, [OpenClaw](https://github.com/openclaw/openclaw) |\n| Musubi | Optional memory/presence service | `MUSUBI_V2_*`, [Musubi](https://github.com/ericmey/musubi) |\n| Telemetry | Any OTLP/HTTP backend or collector | `OPENCLAW_OTLP_*`, [docs/OBSERVABILITY.md](docs/OBSERVABILITY.md) |\n| macOS supervisor | launchd runs the Python agents | `config/launchd/`, `make deploy`, `make cycle` |\n\nSee [docs/BRING-YOUR-OWN-STACK.md](docs/BRING-YOUR-OWN-STACK.md) for the\nreplacement map and external project pointers.\n\n## Config And Secrets\n\nThe repo commits example configs only. Real runtime files are local-only\nand gitignored:\n\n| Local file | Starts from | Purpose |\n|------------|-------------|---------|\n| `secrets/livekit-agents.env` | `config/secrets.env.example` | Provider keys, OpenClaw/Musubi/OTLP endpoints, launchd env |\n| `config/livekit.yaml` | `config/livekit.yaml.example` | LiveKit server API keys and runtime config |\n| `config/livekit-sip.yaml` | `config/livekit-sip.yaml.example` | LiveKit SIP bridge config |\n| `config/livekit-egress.yaml` | `config/livekit-egress.yaml.example` | Optional audio recording/egress config |\n| `config/sip-*.json` | `config/sip-*.json.example` | SIP trunk and dispatch rules |\n\n`make bootstrap` creates the missing local files from examples where it\ncan. After editing configs/secrets, use `make up`, `make register-sip`,\nand `make deploy` to apply the stack.\n\n## Quickstart\n\n```bash\ngit clone \u003crepo-url\u003e openclaw-livekit\ncd openclaw-livekit\n\n# First time on a new machine\nmake bootstrap\n\n# Then edit the files bootstrap dropped in config/ and secrets/\n# (it'll tell you exactly which ones).\n\n# Bring up infrastructure\nbrew services stop redis    # compose ships redis; one-time cleanup\nmake up                     # docker compose up -d\nmake register-sip           # register trunk + dispatch rules from config\nmake deploy                 # render plists, install, gracefully restart agents\nmake verify                 # lint + typecheck + test — green before human testing\nmake health                 # verify everything is green\n```\n\n## Common operational verbs\n\n| Verb | What it does |\n|------|--------------|\n| `make help` | List all verbs |\n| `make verify` | Lint + typecheck + test (run before a real phone call) |\n| `make up` / `make down` | Bring the docker-compose stack up/down |\n| `make deploy` | Render launchd plists + install/restart agents with LiveKit drain |\n| `make teardown` | Bootout agents, remove plists (source stays put) |\n| `make cycle` | Gracefully restart all agents in place |\n| `make register-sip` | Idempotent SIP trunk + dispatch rule refresh |\n| `make health` | Exit-nonzero if any component is unhealthy |\n| `make tail` | Follow all agent logs with color prefix |\n| `make truncate-logs` | Clean baseline for a test session |\n| `make test` | pytest across all workspace members |\n| `make lint` | ruff check + format check |\n| `make typecheck` | pyright |\n\n## Architecture \u0026 operations\n\n- **[AGENTS.md](AGENTS.md)** — generic agent runbook (Python monorepo conventions, deploy/test flow)\n- **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** — how the pieces fit\n- **[docs/BRING-YOUR-OWN-STACK.md](docs/BRING-YOUR-OWN-STACK.md)** — replacement map for external stacks\n- **[docs/OPERATIONS.md](docs/OPERATIONS.md)** — deploy / cycle / debug runbook\n- **[docs/DISPATCH-RULE-GOTCHAS.md](docs/DISPATCH-RULE-GOTCHAS.md)** — the `numbers` vs `inbound_numbers` trap\n- **[tools/README.md](tools/README.md)** — tool catalog\n\n## Status\n\nPersonal project shared publicly for reference. Real deployment requires\nyour own LiveKit, SIP, provider API, Discord/OpenClaw, Musubi, and OTLP\nconfiguration.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericmey%2Fopenclaw-livekit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fericmey%2Fopenclaw-livekit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericmey%2Fopenclaw-livekit/lists"}