
Key takeaways
• Above ~10k minutes/month, custom beats managed by 60–80 %. Below that, managed (LiveKit Cloud, Daily, Mux) wins on total cost because engineering effort dominates. The cross-over is empirically reliable.
• Twilio Programmable Video sunset in December 2024. Nobody starts new builds on Twilio Video in 2026. Migration target is LiveKit (cloud or self-hosted), Daily, Vonage Video API, or self-hosted mediasoup.
• Hybrid is the smart default. Self-hosted SFU for known load + managed fallback for spikes. Caps worst-case cost without over-provisioning. We have shipped this pattern for two clients in 2025.
• The 5-axis framework: volume, customisation depth, compliance, team capability, time-to-market. Pick wrong on any one axis and the math flips.
• Migration is a 12-week project, not a re-platform. Three phases: shadow, parallel run, cutover with rollback. We have done it in production for Mangomolo, Sprii and three NDA clients.
Why Fora Soft wrote this playbook
Fora Soft has shipped 60+ video products since 2005. We have integrated every major SDK at one point or another — Twilio Programmable Video (RIP), Daily, Vonage (formerly TokBox), Agora, LiveKit (cloud and OSS), 100ms, Amazon Chime SDK — and we have built more than 20 production stacks on self-hosted mediasoup, LiveKit OSS, Janus, Pion and custom WebRTC.
Reference deployments: StreamLayer, Mangomolo, Ruume.ai, EyeBuild, Sprii, Tradecaster, Tunnel, Alve.chat. Each one made a different build-vs-buy choice; the lessons here come from those decisions and the 4 migrations we ran in 2024–2025 between managed and custom paths.
If you are at the moment of “we hit traction, are SDK fees going to kill us?” or you are scoping a new platform and weighing managed-vs-custom, this guide gives you the cross-over math, the 5-axis framework, the vendor matrix and the migration playbook.
Burning money on Agora or Twilio?
Send us your current SDK bill, projected volume and engineering team size. We will return a build-vs-buy ROI in 48 hours, free.
TL;DR — the cross-over math
A managed SDK at $0.004/minute (LiveKit Cloud HD video, similar to Daily and Mux) costs $4 per 1 000 minutes. At 100 000 minutes/month: $400. At 1 000 000 minutes/month: $4 000. At 10 000 000 minutes/month: $40 000.
Self-hosted mediasoup or LiveKit OSS on Hetzner AX or AWS at typical concurrency: $1–$8/month per 1 000 concurrent users + a senior engineer at 30 % allocation ($3–5k/month). Initial build cost $80–$200k.
Crossover happens around 10 000–15 000 minutes/month on a typical concurrency profile. Below that, the engineering cost dominates and managed is cheaper. Above that, the per-minute scaling of managed crosses over what self-hosting depreciates to.
At 1 000 000 minutes/month, custom beats managed by 60–80 %. Self-hosted infra ~ $700–$1 500/month + engineering ~ $4 000/month = $5 000–$5 500/month. Managed at the same volume: $4 000–$8 000/month plus markup features, plus your custom integration effort to use the SDK.
The 5-axis decision framework
1. Volume curve. Where will you be in 12 months — minutes/month or DAU? Below 10k mins/mo → managed. 10k–1M → depends on other axes. Above 1M → custom or hybrid.
2. Customisation depth. How non-standard is your UX? Standard 1:1 video calls or grid view: managed wins. Custom rendering (StreamLayer overlays, Ruume virtual environments, EyeBuild surveillance UI): custom wins.
3. Compliance. HIPAA, FedRAMP, EU-only data residency, customer-managed keys → self-hosted simpler. SOC 2 Type 2 alone → either path works (LiveKit Cloud and Daily both support enterprise BAA + SOC 2).
4. Team capability. Do you have an SRE who can run TURN clusters, monitor SFU CPU, manage GeoIP routing? Yes → custom is feasible. No → managed is the right call until you grow that muscle.
5. Time-to-market pressure. Need first call working in 2 weeks → managed. Have 8–12 weeks to build right → custom is a real option.
True cost of managed SDK at scale
| Vendor | Audio /min | Video /min | Notes |
|---|---|---|---|
| Twilio Programmable Video | N/A | SUNSET | Discontinued Dec 2024 — do not start here |
| LiveKit Cloud | $0.0008 | $0.004 (HD) | Strong AI-agent integration |
| Daily.co | ~$0.002 | $0.004–$0.008 | BAA on Scale tier; clean API |
| Vonage Video API | $0.00395 | $0.00395 (HD inclusive) | Established BAA; ex-TokBox lineage |
| Agora | $0.99/1k mins | $3.99/1k mins (HD) | Strong APAC, weak BAA |
| 100ms | $0.0008 | $0.004 | Indian challenger, clean API |
| Mux Real-Time | ~$0.001 | $0.004–$0.006 | Best-in-class API surface |
| Amazon Chime SDK | $0.0017 | $0.0017 | Cheapest tier, AWS-native |
| Cloudflare Calls | $0.0005 | $0.0005 | Aggressive pricing, beta features |
Worked example: 100k mins/month, mixed audio + HD video. Daily.co: ~$400–$700/month. LiveKit: ~$400/month. Vonage: ~$395/month. Cloudflare Calls: ~$50/month (lowest, but feature-thin). Below 100k mins/month, the engineering effort to use any of these is small enough that they all win on TCO.
True cost of custom (with first-party data)
Initial build (8 weeks, senior team). Architecture, mediasoup or LiveKit OSS deployment, TURN cluster, monitoring, client SDKs in 2–3 platforms, basic recording. $80–$200k depending on complexity. With Agent Engineering pattern reuse from our 60+ shipped video products, we typically deliver toward the lower end.
Hosting (Hetzner AX-line + AWS hybrid). Three regional SFUs on Hetzner AX102 ($230/mo each), two TURN relays ($90/mo each), one transcoder for ABR fallback ($230/mo), one control-plane node ($90/mo) = ~$1 240/mo. Hetzner egress 20 TB/month per node included. Above 20 TB, AWS egress at ~$0.05–0.09/GB.
Maintenance. 1 senior engineer at 30 % allocation: ~$4–5k/month at typical full-loaded cost. Covers monitoring, incident response, SDK upgrades, security patches.
Cost shape. Mostly fixed costs — the SFU runs at 30 % utilization vs 70 % utilization at the same monthly bill. Once you have the SFU mesh, marginal cost of additional minutes is near zero until you hit the next tier of capacity.
Total at scale. 1 000 000 mins/mo: ~$5k–$6k/mo all-in (infra + ops). Same volume on Daily/LiveKit/Mux: $4k–$8k/mo for the SDK + you still need infrastructure for your application + integration engineering. Custom wins above ~10k mins/mo and accelerates with scale.
The hybrid pattern — best of both
A pure managed-or-custom binary misses the smartest pattern: hybrid. Run self-hosted SFUs for the predictable load — daily news feed, recurring classroom — and fall over to a managed WHIP/WHEP service like Cloudflare Stream or LiveKit Cloud for spikes (a flash sale, viral moment, sports playoff).
Why hybrid. Self-hosted SFUs are cheap at steady state but require provisioning for peak. If your peak is 5× baseline, you over-provision. If you over-provision, the savings vs managed evaporate. Hybrid caps the worst case.
How it works. Your application uses the same SDK shape (LiveKit Server SDK is an obvious pick because OSS “exactly matches” LiveKit Cloud). When you exceed your self-hosted capacity, the room creation API points to LiveKit Cloud instead. Users see no difference; your bill flexes.
Same-SDK pattern. LiveKit Server SDK works against both your self-hosted instance and LiveKit Cloud. Same JS/iOS/Android client. This BYO-SFU architecture makes hybrid almost free; it is the architectural reason we default to LiveKit OSS over mediasoup for new builds where future flexibility matters.
Reach for managed when: below 10k mins/mo, no SRE in the team, time-to-market under 8 weeks, standard UX, no compliance burden beyond SOC 2.
Reach for custom when: above 10k mins/mo, you have SRE muscle, custom UX is a moat (StreamLayer, Ruume, EyeBuild), or compliance demands self-hosted (HIPAA without enterprise BAA fees).
Reach for hybrid when: peak is 3×+ baseline, you want self-hosted economics with managed safety net, or you are migrating gradually.
Reach for white-label vendor (Vonage, Daily) when: compliance is the driver and you need the vendor to sign a multi-year BAA and indemnify you. The premium is worth it.
When NOT to build
You don’t have a senior video engineer. WebRTC, SFU operations, codec tuning, NAT traversal — building this in-house without a senior with battle scars is asking for trouble. Hire one or stick with managed.
You need PSTN dial-in. Twilio still wins on telephony. Even if you self-host video, route phone calls through Twilio or Telnyx and bridge into your SFU.
Time-to-market under 8 weeks. Building right takes time. If you have to launch in 6 weeks, ship on managed and migrate later.
Video is incidental to your core product. If video is one feature among many, the engineering attention to keep it healthy will cannibalise focus on the core. Stay managed.
When to BUILD
You're vertical-specific (HIPAA, defense, legal). Compliance demands data control that managed SDKs do not give you cheaply. Self-hosted in your VPC is the simplest path.
Your UX is custom. StreamLayer’s interactive overlays, Ruume’s virtual environments, EyeBuild’s PTZ control — none of these can be done well on top of a managed SDK’s opinionated UI. Custom rendering is the moat.
You hit volume crossover. 10k+ mins/month and growing. The trajectory is clear; build now while engineering effort fits, before the bill explodes.
You compete with the SDK vendor. If you sell video conferencing or live streaming as your product, paying Agora or LiveKit per minute is paying your competitor. Self-host.
Vendor matrix — LiveKit, Daily, Vonage, Agora, Mux
LiveKit (cloud + OSS). The 2026 default for new builds. Open-source SFU, same SDK works against cloud and self-hosted. Strong AI-agent integration (LiveKit Agents). BAA on enterprise. Best for any path forward.
Daily.co. Clean developer experience, strong telehealth focus, BAA on Scale tier. UI customisation is opinionated; great if their defaults match your needs.
Vonage Video API. Established BAA, ex-TokBox lineage gives them mature support. Pricing slightly above LiveKit but predictable inclusive bundle (HD video included in audio rate).
Agora. Strong APAC presence, broad SDK reach. Weak on BAA (enterprise contact required). Best when geographic reach in China and Southeast Asia matters.
Mux Real-Time. Best-in-class API surface for developers. Pricing competitive with LiveKit. Mux’s strength is bringing real-time + traditional VOD streaming under one roof.
Amazon Chime SDK. Cheapest tier on the matrix; AWS-native pricing model. Best when your stack is already AWS-deep and minimal SDK is acceptable.
Cloudflare Calls. Aggressive pricing, beta features. Watch this space — if you can tolerate beta status, the cost story is unmatched.
Self-hosted mediasoup. Battle-tested, used by Discord and Mozilla Hubs. Smaller operational footprint than LiveKit OSS but lacks the Agents integration. Best when video is the entire product and you do not need AI agents in the same stack.
Need a second opinion on your SDK choice?
We have integrated all the major SDKs and migrated 4 production stacks in 2024-2025. Send us your scenario; we will return a recommendation in 48 hours.
Migration playbook — from managed to custom
A 12-week migration is the canonical pattern. Three phases.
Phase 1 (weeks 1–2): traffic shadow. Deploy self-hosted SFU in parallel. Send 1–5 % of traffic in shadow mode (mirrored, not live). Compare quality (VMAF / video quality scores), latency, error rates against the managed baseline. Tune until shadow matches.
Phase 2 (weeks 3–6): parallel run. Live traffic at 5 % → 25 % → 50 %. Feature flags route users between managed and self-hosted. Monitor everything: connection success rate, freeze rate, p95 latency, customer support ticket rate. Tune SFU mesh, TURN distribution, and codec selection.
Phase 3 (weeks 7–12): cutover with rollback. Ramp to 100 %. Keep the managed contract running for 30 days as rollback insurance. Decommission once two clean weeks of full-traffic self-hosted. Negotiate exit terms with the managed vendor (often 30-day notice; some require commitment minimums).
Mini case — cutting $12k/month off Mangomolo’s bill
A broadcast client (architecture similar to Mangomolo) running 1.4M minutes/month on a managed SDK was paying ~$15 000/month in SDK fees by mid-2024. They had ramped from 200k mins/mo at the start of the year. Custom looked attractive; engineering was nervous.
The 12-week plan. Weeks 1–2: instrumented current managed deployment with VMAF + freeze-rate logging. Weeks 3–5: deployed self-hosted LiveKit OSS on Hetzner AX102 (3 regions: US East, EU Central, APAC), TURN cluster on AWS for symmetric NAT fallback. Weeks 6–9: traffic shadow, then 5 % → 25 % → 60 %. Weeks 10–12: rollover to 100 %, kept managed contract as 30-day insurance.
Outcome. Self-hosted infra cost: ~$1 500/month (Hetzner + AWS egress + TURN). Engineering allocation: ~$2 500/month (0.3 senior). Total: ~$4 000/month vs $15 000/month managed = $11k/month direct savings (with $1k/month operational buffer = $12k/month net). Quality unchanged or slightly better; p95 freeze rate dropped 40 % post-migration because of regional SFU placement closer to user. Book a 30-min call for a similar audit.
A decision framework — pick path in five questions
Q1. Volume in 12 months? < 10k mins/mo → managed. 10k–100k → managed unless other axes scream custom. 100k–1M → hybrid is the smart default. > 1M → self-hosted with managed fallback.
Q2. UX customisation depth? Standard grid view → managed. Custom overlays / virtual environments / surveillance UI → custom.
Q3. Compliance posture? Pure SOC 2 → either path. HIPAA → self-hosted simpler unless enterprise BAA fits budget. FedRAMP / EU-only data residency / customer-managed keys → self-hosted required.
Q4. Engineering team capability? SRE on team or planned hire → custom is feasible. No SRE muscle, no plan to hire → managed.
Q5. Time-to-market pressure? < 8 weeks to first call → managed. 8–16 weeks → custom feasible. 16+ weeks → you have the time, build right.
Pitfalls to avoid
1. Building because it sounds cheaper, not because the math says so. Custom only wins above ~10k mins/mo, and only if engineering effort is realistic. Build the spreadsheet first; do not be seduced by Hetzner pricing.
2. Under-provisioning TURN. Symmetric NAT on mobile carriers means a non-trivial percentage of viewers cannot establish peer-to-peer ICE. Run TURN in at least three regions and budget bandwidth at 30–40 % of your delivery total.
3. Forgetting recording costs. Self-hosted SFU is cheap; recording (compositing, transcoding, storing) adds infrastructure. Budget 30–50 % of SFU cost for recording if you need it.
4. Ignoring engineering rotation. Custom needs ongoing care — codec upgrades, security patches, monitoring tuning. If your senior video engineer leaves, you have a problem managed customers do not face.
5. Migrating without a rollback plan. Always keep the old contract for 30 days post-cutover. Issues that did not show up at 50 % traffic surface at 100 %. Rollback in 5 minutes via feature flag is non-negotiable.
KPIs to measure
Quality KPIs. Connection success rate (target: 99 %+). Freeze rate p95 (target: under 1.5 %). Mean opinion score from user surveys (target: 4.2+/5 on call quality).
Business KPIs. Cost per minute delivered (target: drop 50 %+ vs managed at the volume). Engineering time per month spent on the SDK layer (target: under 50 hours/month). Rate of customer-reported quality issues (target: drop 30 %+ post-migration).
Reliability KPIs. SFU peak-hour CPU (target: under 70 %). TURN relay utilisation (target: under 60 % peak). Mean time to recovery on SFU node failure (target: under 60 seconds via auto-failover).
FAQ
Is LiveKit cheaper than Twilio?
Twilio Programmable Video sunset Dec 2024, so the comparison is moot. LiveKit Cloud at $0.0008/min audio + $0.004/min video is competitive with Daily, Mux, and Vonage. Self-hosted LiveKit OSS is dramatically cheaper above 10k mins/mo.
Should I use Agora or build custom?
Agora is strong in APAC and broad SDK reach. Below 100k mins/mo on global traffic, Agora is fine. Above that, or with HIPAA/SOC 2 needs, custom or LiveKit OSS wins. Agora’s BAA story is weaker than Daily or Vonage.
How long does a custom build take?
8–12 weeks for a focused build with senior team. Discovery + architecture (week 1–2), SFU + TURN deployment (3–5), client SDK (6–7), monitoring + recording (8), production hardening + load test (9–12). With our 60+ shipped video product patterns, we typically deliver toward the lower end.
Mediasoup vs LiveKit OSS for self-hosting?
LiveKit OSS for new builds where future flexibility (cloud fallback, AI agents) matters. Mediasoup for projects where minimal operational footprint is paramount and the product is video-only. Both are battle-tested.
What about Cloudflare Calls?
Cloudflare Calls offers aggressive $0.0005/min pricing — the cheapest in the market. As of 2026 it is in beta with feature gaps (recording, mixed audio quality on cold paths). Worth watching; do not bet a 2026 launch on it but keep it in your hybrid fallback.
How do I handle phone-in (PSTN)?
Self-hosting video does not mean self-hosting telephony. Twilio or Telnyx terminate PSTN calls into your SFU room as a SIP participant. Standard pattern; we have shipped this for two telehealth clients in 2025.
What about migrating mid-product?
Possible and common. Use feature flags to route users between managed and self-hosted. Same SDK shape (LiveKit Server SDK against both) makes the application code largely identical. Plan 12 weeks; keep the managed contract for 30 days as rollback insurance.
What does Agent Engineering change?
We use AI-assisted engineering internally for scaffolding, test generation, infra-as-code, observability dashboards. It compresses the “reusable plumbing” of a video build by 20–30 % but does not change the senior architecture work. Net: we deliver toward the lower end of the cost ranges quoted above.
What to Read Next
Comparison
LiveKit vs Agora Cost Analysis
Head-to-head on the two most popular SDKs.
Migration
Twilio Video Migration Guide
Specific to leaving Twilio Programmable Video before sunset.
Streaming
WHIP/WHEP Modern Stacks
Codec-agnostic transport for the live tier.
Architecture
P2P vs MCU vs SFU
Topology decisions underneath the build-vs-buy choice.
Compliance
HIPAA + SOC 2 Telehealth
When compliance pushes you toward self-hosted.
Ready to make the right call?
Below 10k minutes/month, managed (LiveKit Cloud, Daily, Mux, Vonage) wins on TCO because engineering effort dominates. Above that, custom beats managed by 60–80 % with the right team. Hybrid is often the smartest pattern: self-hosted SFU at steady state, managed fallback for spikes, both running the same SDK shape.
The 5-axis framework (volume, customisation, compliance, team, time-to-market) decides the path. Migration is a 12-week project, not a re-platform — we have done it 4 times in 2024-2025 with documented case studies. The cheapest moment to make the decision is before you cross 100k minutes/month; after that, you are usually in “migrate now or burn $X/year” territory.
Want a build-vs-buy ROI for your traffic profile?
Send us your current SDK bill, projected volume and constraints. We will return a one-page ROI in 48 hours, free.



.avif)

Comments