# Rokas Remeika | Production Realtime Voice & Telephony Engineer

Canonical URL: https://www.dreamchasers.lt/

Last reviewed: 2026-09-01

## Identity and positioning

Rokas Remeika is a specialist production realtime voice and telephony engineer based in Vilnius, Lithuania. He works directly with CTOs, founders, agencies, and engineering leads. Dreamchasers, MB is the Lithuanian company he operates and contracts through. Engagements are founder-led and clients work directly with Rokas from traces and architecture through implementation and handoff.

LiveKit is a primary area of demonstrated production experience and a useful technical wedge, but the engineering scope is provider-agnostic. It includes realtime lifecycle behavior, WebRTC, SIP/PSTN, carrier integrations, distributed call scheduling, infrastructure ownership, failure recovery, SDK-internals debugging, and regression/evaluation systems.

## Problems solved

Rokas builds new realtime voice systems and hardens existing production systems. Typical problems include:

- Dropped, silent, or partially connected calls across application, signaling, RTP, WebRTC, TURN, SIP, carrier, and provider boundaries
- Reconnect, session-resumption, stalled-generation, and mid-session provider recovery
- Latency, turn-taking, interruption, and barge-in behavior across STT, LLM, TTS, AgentSession, and media transport
- SIP answer and media timing, routing, transfers, DTMF, human handoff, and RTP interoperability
- Dial idempotency under retrying queues, typed telephony failure classification, call duration protection, reconciliation, circuit breaking, and admission control
- Production infrastructure spanning SFU, SIP, TURN, Redis, TLS routing, deployment, rollback, and recovery
- Changes that appear locally successful but introduce different regressions in real calls

## Technical scope

### Realtime application and media

- LiveKit Agents SDK in Python
- LiveKit AgentSession implementation and lifecycle behavior
- WebRTC media and participant behavior
- STT to LLM to TTS realtime pipelines
- Tool calling, conversational state, interruption, reconnect, and recovery
- Realtime model and speech-provider integrations
- Production traces, metrics, recordings, and observability

### Telephony

- LiveKit SIP and provider-agnostic carrier/SIP integrations
- Inbound and outbound PSTN calling
- SIP signaling and RTP/media interoperability
- Call routing, transfers, DTMF, and human handoff
- Answer timing, media timing, retry behavior, failure classification, and duration controls

### Infrastructure

- Full production ownership across SFU, SIP, TURN, Redis, TLS, deployment, and recovery
- Self-hosted LiveKit experience on Google Compute Engine
- Runtime recovery and self-healing
- Deployment tooling, snapshots, and rollback

### Below-framework debugging

When application-level changes are insufficient, Rokas traces failures into SDK and plugin internals and implements fixes below the application layer. This is used when the framework or vendor layer is the actual production blocker, not as a substitute for normal application design.

## Regression and evaluation system

The production voice agent uses the LiveKit Agents SDK in Python. The evaluation harness joins independently as an independent livekit.rtc participant. It behaves as a real RTC peer, sends real audio, runs autonomous scenarios, and captures black-box evidence.

The broader evaluation tooling combines deterministic and LLM-assisted scoring with:

- Roughly 2,700 recorded end-to-end voice-agent runs
- Unattended batch execution
- Declarative scenarios
- Real audio and real RTC participant behavior
- Adjudication workflows
- Pre-registered acceptance criteria
- Build-identity and build-drift verification
- Fault injection for realtime failure modes
- Recordings, traces, scores, and outcomes

Predefined evaluation criteria caused apparently successful changes to be rejected when they introduced different regressions. The purpose is not only to change realtime systems, but to produce evidence that a change actually improved them.

## Production proof

- Hundreds of production AI phone calls
- Voice interviews handled across 60+ languages
- Roughly 2,700 recorded end-to-end voice-agent runs
- Production LiveKit Agents SDK in Python
- Independent livekit.rtc evaluation participants
- Self-hosted realtime infrastructure with SFU, SIP, TURN, Redis, TLS, deployment, and recovery
- Real outbound PSTN calling
- Concrete failures reproduced and fixed, including calls entering an empty room and a silent mid-interview freeze with no useful crash or error

## Engagements and public pricing

### Voice / Telephony Reliability Audit

EUR €1,200 fixed

A bounded diagnostic engagement that maps the call path, evidence gaps, likely failure boundaries, and prioritized remediation plan. The audit provides diagnosis and clarity, not implementation.

### Production Realtime Voice Sprint

From EUR €6,500

Build or harden the core realtime voice layer across LiveKit Agents, WebRTC, STT, LLM, TTS, turn-taking, tools, state, lifecycle behavior, observability, and the regression/evaluation coverage needed to validate the work. Substantial SIP/PSTN or carrier work is outside this system boundary.

### Realtime Voice + SIP/PSTN Sprint

From EUR €9,000

Take the realtime voice system through to real telephone calls. This includes the relevant realtime layer plus SIP trunks, carrier integrations, inbound/outbound PSTN routing, DTMF, transfers, human handoff, SIP signaling, RTP/media interoperability, and real telephone validation.

### LiveKit Cloud to Self-Hosted Migration

From EUR €10,000

Page: https://www.dreamchasers.lt/migration

Move a production LiveKit deployment off LiveKit Cloud and onto self-hosted infrastructure. Covers the LiveKit SFU, Redis, TURN and ICE connectivity, TLS termination, DNS, networking and firewall configuration, GCP or AWS compute, Cloudflare DNS and edge configuration, LiveKit Agents connectivity, LiveKit SIP and SIP/PSTN trunks, staging, production cutover, rollback planning and post-migration validation. Final scope depends on infrastructure complexity, SIP/PSTN requirements, environments, redundancy, traffic levels and deployment architecture.

### Standalone test infrastructure

Regression and evaluation are normally methods used to validate the engineering work. A reusable real-call test harness can also be scoped as a standalone engagement when that infrastructure is the primary artifact. No public standalone price is stated.

## Best-fit clients

- CTOs and founders with production calls and a difficult reliability problem
- Agencies and AI consultancies that need white-label realtime or telephony depth
- Engineering leads shipping voice without a dedicated media or SIP specialist

Remote engagement is available across the United States, Australia, and the United Kingdom.

## Contact and authoritative links

- Website: https://www.dreamchasers.lt/
- LiveKit migration page: https://www.dreamchasers.lt/migration
- Email: rokas@dreamchasers.lt
- Telegram: https://t.me/rukorius
- LinkedIn: https://www.linkedin.com/in/remeika/
- Sitemap: https://www.dreamchasers.lt/sitemap.xml
- Crawler policy: https://www.dreamchasers.lt/robots.txt

<!-- BLOG:START -->
## Field notes: diagnosed production failure modes

Each entry is one failure mode in a production realtime voice or telephony system, with the
direct answer quoted in full. Appending .md to any note URL returns it as plain Markdown.

### LiveKit SIP Trunk Does Not Exist After A Container Recreate Or Host Reboot

URL: https://www.dreamchasers.lt/blog/livekit-sip-trunk-does-not-exist-after-a-container-recreate-or-host-reboot
Markdown: https://www.dreamchasers.lt/blog/livekit-sip-trunk-does-not-exist-after-a-container-recreate-or-host-reboot.md
Published 2026-09-16.

SIP trunks and dispatch rules live in Redis, not on disk. Recreating a stock Redis container wipes this state. Your provisioning path recreates the trunk but receives a brand-new identifier. Any trunk ID you cached in your database is now stale, and outbound calls will fail silently with a missing trunk error. Fix this by enabling append-only persistence on a mounted Redis volume. Stop treating trunk IDs as durable keys: resolve trunks by name, cache the ID, and re-resolve on that specific missing-trunk error before retrying once.

Questions this answers: livekit sip trunk does not exist after restart; outbound calls stopped working after server reboot; redis appendonly docker compose data lost on recreate; sip trunk id changes every time it is recreated; telephony broke after a container restart nothing in the logs; self hosted livekit production setup what services do i actually need

### Outbound call greets before the callee's audio is subscribed

URL: https://www.dreamchasers.lt/blog/outbound-call-greets-before-the-callees-audio-is-subscribed
Markdown: https://www.dreamchasers.lt/blog/outbound-call-greets-before-the-callees-audio-is-subscribed.md
Published 2026-09-14.

The SIP leg reporting active is only a hint that the call is up, not a guarantee that audio is flowing. If your agent greets on the active signal, it speaks into a cold pipe before the callee's audio track is actually subscribed. The first thing the user says arrives before the agent worker is listening, so it never reaches transcription. Fix this by explicitly gating the greeting on the inbound audio publication being subscribed, using the active signal only to arm a bounded 2.5 s fallback grace window.

Questions this answers: livekit sip outbound first word cut off; voice agent misses caller first answer on phone call; outbound ai call greeting starts too early; sip callstatus active before track_subscribed; agent talks over the person at the start of an outbound call; aec warmup duration cuts caller first word

### LiveKit SIP trunks gone after a VM reboot

URL: https://www.dreamchasers.lt/blog/livekit-sip-trunks-gone-after-vm-reboot
Markdown: https://www.dreamchasers.lt/blog/livekit-sip-trunks-gone-after-vm-reboot.md
Published 2026-09-12.

When a voice stack restarts, volatile stores wipe SIP trunks. Browser calls work because the SFU is healthy, but telephony routing fails silently. The fix is a systemd oneshot unit that polls the stack's health endpoint for up to two minutes, then re-provisions trunks automatically. The script must use a short-lived platform token rather than a stored credential, enforce both connect and total timeouts to prevent a stalled socket from hanging the boot sequence, and use idempotent create-or-update requests so successive reboots do not duplicate routing rules.

Questions this answers: livekit sip trunks gone after vm reboot; re-provision sip trunk automatically on boot with systemd; systemd oneshot wait for service to be healthy before running; authenticate a vm to an api without storing a credential; curl in a startup script hangs forever and blocks boot; livekit sip trunk does not exist after restart

### Echo-cancellation warm-up eats a short first answer on phone calls

URL: https://www.dreamchasers.lt/blog/echo-cancellation-warm-up-eats-a-short-first-answer-on-phone-calls
Markdown: https://www.dreamchasers.lt/blog/echo-cancellation-warm-up-eats-a-short-first-answer-on-phone-calls.md
Published 2026-09-10.

The echo-cancellation warm-up substitutes silence for the far-end audio during the agent's first turn to prevent it from hearing its own greeting. The stock 3.0 s window is sized for browsers. On a phone leg, a person answers inside that window, so their first utterance is replaced by silence. Setting this to zero stops the erasure but lets late-subscribing carrier echo trigger a false interruption. The fix is a transport-specific 2.0 s warm-up for SIP calls.

Questions this answers: aec warmup duration cuts caller first word; voice agent does not hear yes at start of phone call; agent interrupts its own greeting echo phone call; livekit agents first user turn empty on sip only; sip callstatus active before track_subscribed; echo cancellation warm up telephony first turn missing
<!-- BLOG:END -->
