Incoplax platform
Incoplax is a distributed communications platform assembled from small, single-purpose microservices called roles. They run on any number of servers and sites, keep calls up when a server fails, and expose every function through an open API.
This page explains how the platform is put together: its layers, the roles inside a site, how sites cooperate, and how availability, scale and configuration are managed.
Every deployment is described in four layers. Keeping them apart is what lets the platform grow in any direction (more servers, more tenants, more functions) without being redesigned.
Data model, web applications, server microservices and scripts for a business domain.
Microservices with one clear job each, combined freely on servers.
Tenants with closed data and their own storage, arranged in a tree.
Where the software runs, from one VM to several data centres.
A site runs a set of roles spread across its servers. Only a few of them face the network; everything else lives inside the cluster and talks over the platform's own internal communication layer.
Active-active roles such as sg, b2b, mg and ws run on several servers at once and share the load.
Active-passive roles such as sr, sdc, mgc and sts keep one active instance and hot standbys, and can be split into groups by domain.
A site is a group of servers with a fast, reliable network between them. Sites connect over slower, less reliable links between data centres, cities or countries, and each site keeps working when those links go down.
Each role is responsible for its own availability. Every role can run on several servers, using one of two redundancy patterns depending on what it does.
All instances work at once and requests are distributed between them. If a server goes down, the remaining instances carry on. Used for sg, esg, b2b, mg, ivr, ws.
One instance is active, the others are hot standbys ready to take over. For more capacity the group is split into several groups, each responsible for its own domains. Used for sr, sdc, sts, mgc, huntq.
A failed process is restarted by its supervisor. The core node supervises the roles on its server, and the container itself is supervised by an operating-system daemon.
Data roles stay active only in the connected group that holds more than half of a site's servers. An external arbiter settles an even split, so two halves never write conflicting data.
In clusters of four or more servers a conversation continues if any one server fails: the call moves to another media gate and keeps going.
Every connection to PostgreSQL, ClickHouse or S3 can list alternatives; the platform switches to the next one available. Call processing goes on even if statistics or recording storage is unreachable.
Only the edge roles face the network. They have built-in filters, allow and deny lists, and ban the addresses behind repeated failed logins at a low level, so password guessing and floods cost the cluster very little.
New servers, moved roles and changed parameters are applied to a running system. Roles take new settings on the fly or restart themselves one by one.
The platform starts on a single server with every role active and grows by moving roles to their own servers, multiplying them, and splitting data into domains and sites.
Each figure is the limit when the server does only that job:
In a typical mixed load, one server serves about 10,000 subscribers with up to 150 simultaneous calls and 50 new calls per second.
Add servers to a site, add sites to the system.
Add active-active instances; split active-passive groups by domain or hash ring.
Add domains, give a domain its own database, ClickHouse replica or S3 bucket.
One configuration file describes the whole system and is the same on every server. Each node reads it, finds itself, and starts the roles assigned to its server.
A product layer installed into a domain turns the communications platform into an information system. It is delivered as packages and versioned independently of the platform.
A typed data structure, for example Ticket or Campaign.
The API came before the user interface. Everything the platform can do (configuring the system, managing domains and entities, controlling calls, building packages, subscribing to events) goes through the same open API that Incoplax's own web applications use.
One tree of endpoints for the whole system: domains, users, telephony, data model, files, access control, journals.
Real-time calls, events and subscriptions to changes in any collection or entity.
HTTP and WebSocket subscriptions for external services, call and CTI events, streams into Kafka.
Standard endpoints for phones, browsers, carriers, recorders and speech analytics.
Because nothing is hidden behind a graphical interface, AI coding assistants and agents can work with the platform the way an engineer does: read the documentation, call the API and check the result.
Changes made by an AI agent pass through the same role-based access control as any user's, so the agent gets exactly the rights you grant it.
Tell us how many users, sites and calls you plan for, and we will show you how Incoplax would be laid out for you: which servers, which roles, and how it fails over.