Erlang engineering, from the runtime to production.
We design, develop and maintain Erlang/OTP systems. From distributed applications and network protocols to databases, embedded runtimes and voice platforms, we help teams build reliable software and keep it running in production.
Hackney Erlang HTTP client written and maintained by Benoît for over a decade.
Apache CouchDB Benoît is a former committer and PMC member; rcouch was donated to the project.
erlang-rocksdb Erlang bindings for RocksDB, maintained by Benoît since 2016.
Chappe Our Erlang voice stack, behind our PBX and enki_vox.
What we work on
Applications and architecture
- New Erlang/OTP applications
- Architecture reviews
- Supervision, processes and state
- Integration with existing systems
- Long-term maintainability
Distributed systems and production
- Fault tolerance and recovery
- Clustering and distributed state
- Crashes, memory growth, performance
- Rolling upgrades and migrations
- Testing and observability, with OpenTelemetry
Protocols
- HTTP/1.1, HTTP/2 and HTTP/3
- QUIC and WebTransport
- WebSockets and streaming
- Custom network protocols
- Protocol-level debugging
Runtimes and integration
- WebAssembly with erlang_wasm
- Python inside Erlang
- JavaScript with QuickJS
- Sandboxed extension systems
- Native and embedded runtimes
Database & storage engineering
- RocksDB through erlang-rocksdb
- CouchDB, from the inside
- Replication and distributed data
- Application-level consistency
- Embedded databases
Voice and real-time
- SIP and communications platforms
- FreeSWITCH, Kamailio and Kazoo
- Our Chappe voice stack
- Emergency communications
- Reliability and recovery
Our HTTP and network stack
Every layer from the HTTP framework down to QUIC, written in Erlang and published as open source. Protocol engineering
Server and client
LiveryHTTP server and framework HackneyHTTP clientSessions
erlang-webtransportWebTransport over HTTP/2 and HTTP/3HTTP
erlang_h1HTTP/1.1 erlang_h2HTTP/2 erlang_quicQUIC and HTTP/3Transport
Runtime
Our voice stack: Chappe
SIP signalling runs as Erlang processes in your node; media runs in the engines Chappe drives. We build PBXs, SBCs, IVRs and AI voice front ends on it.
Products
Media resources
Signalling
Media control
Media engines
Runtime
Voice software built for you is engineering work. If you would rather have an edge operated for you, Chappe is also the foundation of SIP Edge, our managed service. See SIP Edge
Kazoo development and maintenance
We maintain and extend Kazoo-based platforms for our customers, including Erlang/OTP upgrades, FreeSWITCH integration and production troubleshooting. We work on existing deployments and develop the changes they need, through a defined project or an ongoing engineering partnership.
WebAssembly and embedded runtimes
erlang_wasm is a WebAssembly runtime written in Erlang/OTP. It lets an Erlang product run third-party or customer code in a sandbox: plugins, rules, policy engines, data transforms. That need is common in billing, telecom and SaaS platforms, well beyond AI.
We build these extension systems with erlang_wasm, erlang-wasmtime, QuickJS or Python, depending on the job.
Database & storage engineering
We help develop the storage layer of your Erlang applications: integrating embedded databases, investigating performance and reliability, and building the components around persistent data. Our experience includes erlang-rocksdb and long-standing work with CouchDB and distributed systems.
Work you can commission
- Integrating an embedded database into an Erlang application
- Erlang and native integration through NIFs
- Performance and reliability investigations on the data path
- Backup, checkpoint and recovery workflows
- Developing the persistent components of your system
This is development work on your system. It does not need to use RocksDB, or any library of ours.
Evidence: a binding we maintain
erlang-rocksdb: embedded storage integration for Erlang
The Erlang binding to RocksDB, written and maintained by Benoît since 2016 and published on Hex as the rocksdb package. RocksDB runs inside the Erlang node through NIFs, so an application stores data locally without a separate database server. This is the binding, not the upstream RocksDB project.
Its documentation covers column families, snapshots, checkpoints, backups and transactions.
Professional support for erlang-rocksdb is available from Enki Multimedia: ask about support.
Earlier database work: Benoît is a former Apache CouchDB committer and PMC member, and the author of Couchbeam, the Erlang client for CouchDB.
Erlang/OTP upgrades and packages
We publish erlang-dist, prebuilt Erlang/OTP packages for Linux, macOS and Windows. It is free to use, with or without us. If you want help with your own environment, this is the work we do:
- OTP upgrades, including across major versions
- Build and deployment integration: packages, containers and CI
- Compatibility investigations after an upgrade: NIFs, OpenSSL, dependencies
- Maintenance of the OTP versions you run