Puebla Chicago New York Los Angeles Contracts in USD or MXN · NDA before details contact@thealchemistcode.org
Case study · Own product

Komodo VPN: a VPN app on a server network we run ourselves

A VPN app for Android and iOS built in Flutter on OpenVPN, with our own nodes in Europe, credentials that expire on their own, a Telegram channel and automatic monitoring of every server. It has 30,566 Google Play installs.

Role
Own product: app, servers and operations
Platforms
Android, iOS and Telegram
Servers
OpenVPN in Estonia and Cyprus
Since
2024
30,566 Installs On Google Play Play Console · Sep 2026
TLS 1.3 Encryption AES-256-GCM on every node Live test · Oct 3, 2026
Hourly Node checks A real TLS handshake against each server GitHub Actions
< 1 ¢ Infrastructure per user Per month at scale, per our cost model Cost model · Oct 2026
Komodo VPN
01 — The challenge

Connect on any network, on servers we pay for

Negative VPN reviews almost always say the same thing: "won't connect". Some networks block UDP, some carriers drop long connections, and in some countries certain cloud providers are slow.

On top of that, every free user consumes traffic on servers we pay for. Before growing, we needed to know what each user costs and when adding servers actually pays off.

02 — What we decided

Technical decisions, and why

01

A rebuilt OpenVPN engine

We use our own fork of the openvpn_flutter package with the native libraries rebuilt from ics-openvpn (OpenVPN 2.7), to meet the 16 KB memory page requirement on Google Play.

02

More than one way to connect

Each node accepts UDP 1194 and also TCP 443, the port websites use. The app now tries every server address instead of sticking to the first one.

03

Credentials that expire on their own

A Laravel backend issues credentials that expire after 24 hours on the free plan and 30 days on Premium, and the server validates them on every connection.

04

No autoscaling before it pays

We modeled the costs: an hourly server costs about 2.4 times a monthly one, so autoscaling Premium saves nothing until roughly 300 users are connected at once. Everything is ready to scale in minutes instead.

03 — In production

How it runs day to day

Every node checked hourly
A GitHub Actions job runs a real TLS handshake against each server every hour. If a node fails it opens an issue, and closes it on its own when the node recovers.
Releases with an automatic brake
Each Android release first goes to 20% of users. It moves to 100% after 48 hours only if the rating in the main markets has not dropped.
Telegram as a second channel
A Telegram bot delivers the configuration with temporary credentials and takes payments, for people who can't or won't use the app stores.
Fixing what reviews say
We analyze ratings by country and prioritize what 1-star reviews repeat: the app no longer shows "connected" with no traffic, and the free session limit is enforced.
04 — Stack

What it’s built with

  • Flutter
  • OpenVPN 2.7 (ics-openvpn)
  • Laravel · PHP
  • Linux
  • Telegram Bot API
  • GitHub Actions
  • App Store and Google Play subscriptions
Related service Infrastructure and networks

What does success look like for your product?

The first call and the proposal are free. The person who will lead your project replies in person.