Enki Multimedia

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

Database & storage engineering

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

Livery builds on all four protocol libraries. Hackney uses erlang_h2, erlang_quic and erlang-webtransport, with its own HTTP/1.1 code.

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

chappe_pbxPBX: users, ring groups, conferences, voicemail
enki_voxLive transcription, translation and recording for calls

Media resources

chappe_mrfIVR, bridging and conferences

Signalling

chappe_sipSIP stack: UAS, UAC, B2BUA, proxy and registrar, with TLS and WebSocket

Media control

chappe_rtpengineMedia anchoring and recording
chappe_mixConference mixer in Erlang
chappe_eslFreeSWITCH Event Socket

Media engines

rtpengine
in the Erlang node
FreeSWITCH

Runtime

Erlang/OTP
chappe_pbx and enki_vox are built on Chappe; enki_vox also uses Livery, Hackney and erlang_ws from our HTTP stack.

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

Building or running an Erlang system? Let's discuss it.