BEAM Toolbox

A list of tools and libraries that are useful for BEAM languages like efene, erlang, LFE and Elixir projects.

Access Control

  • snarl: A Erlang based RBAC server.
  • nkrole: a framework for managing complex relations among arbitrary objects in a riak_core cluster

Auth

  • OAuth2
  • social: Cowboy handler for social login via OAuth2 providers

Cache

  • Fling: Cache library that promotes keys and values into mochiglobal objects
  • e2qc: Erlang 2Q NIF cache
  • cherly: Cherly (sher-lee) is an in-VM caching library for Erlang
  • leo_mcerl: leo_mcerl is a memory cache lib for Erlang

Clients

  • kafkerl: Apache Kafka producer/consumer for erlang
  • ekaf: A minimal, high-performance Kafka client in Erlang
  • cqerl: Native Erlang CQL client for Cassandra
  • etorrent: Erlang Bittorrent Client
  • amqp_client: Rebar-friendly fork of rabbitmq-erlang-client
  • zeta: An Erlang client for Riemann
  • chumak: Pure Erlang implementation of ZeroMQ Message Transport Protocol

Command Line

Compression

Configuration

Cryptography

  • crypto: Crypto functions
  • pbkdf2: A PBKDF2 implementation for Erlang extracted from Apache CouchDB
  • enacl: Erlang bindings for NaCl / libsodium
  • erlsha2: SHA-224, SHA-256, SHA-384, SHA-512 implemented in Erlang NIFs

Database Clients

Databases

Data Formats

Data Structures

Date and Time

  • dh_date: Date formatting / parsing library for erlang
  • qdate: Erlang date, time, and timezone management: formatting, conversion, and date arithmetic
  • strftimerl: Erlang implementation of strftime
  • erlang_iso8601: Erlang ISO 8601 date formatter/parser

Distributed Programming

  • Riak Core: distributed system framework, the core of riak_kv
  • chash: consistent hashing library extracted from riak_core
  • plumtree: epidemic broadcast protocol
  • disco: Map/Reduce framework for distributed computing http://discoproject.org
  • nkdist: Erlang distributed processes
  • nkcluster: A framework to manage jobs at huge Erlang clusters
  • dht: DHT implementation in Erlang
  • syn: global process registry for Erlang

Fault Tolerance

  • fuse: A Circuit Breaker for Erlang
  • safetyvalve: A safety valve for your erlang node
  • breaky: supervise and manage modules and processes depending on external resources.
  • circuit_breaker: Generic circuit breaker that can be used to break any service that isn’t fully functional
  • elarm:: an Alarm Manager for Erlang

File System

  • fuserl: Erlang bindings for FUSE

Generative Testing

Internet of Things

  • gen_coap: Generic Erlang CoAP Client/Server
  • vernemq: The most scalable MQTT Message Broker. Powering IoT, M2M, Mobile, and Web Applications.
  • emqtt: The Massively Scalable MQTT Broker written in Erlang/OTP
  • emqttc: Asynchronous Erlang MQTT Client
  • rabbitmq-mqtt: RabbitMQ MQTT gateway

Logging

  • Lager
  • erlang-syslog: Erlang port driver for interacting with syslog via syslog(3)
  • chronica: Logger framework for Erlang applications

Metrics

  • Exometer: Basic measurement objects and probe behavior
    • exometer_json: exometer reporter to push JSON to a sink over HTTP
  • Folsom: Expose Erlang Events and Metrics
  • MzMetrics: High performance Erlang metrics library

Package Manager

Patterns

  • Erlang Patterns: An experimental project to apply Christopher Alexander’s pattern language method, as outlined in The Timeless Way of Building, to Erlang programming.

Parsing

  • Leex: lexer
  • Yeec: LLR(1) parser generator
  • Spell1: LL(1) parser generator
  • Neotoma: packrat parser-generator for parsing expression grammars
  • Aleppo: Alternative Erlang Pre-Processor

Parse Transforms & Erlang AST manipulation

  • ast_walk: Walk the Erlang AST with the ability to mutate it and keep state during transversal
  • erl_id_trans: Erlang identity AST transoform

Performance and Debugging

  • Eper
  • Recon
  • eflame
  • eep: Erlang Easy Profiling (eep) application provides a way to analyze application performance and call hierarchy

Plugins

  • hooks: generic plugin & hook system for Erlang applications

Protocols

  • erlirc: Erlang IRC client/server framework
  • mdns: More generic (yet another) mDNS, Zeroconf, Avahi client/server for Erlang
  • esmtp: Erlang SMTP library

Probabilistic Data Structures

  • hyper: Erlang implementation of HyperLogLog

Products

  • CouchDB: Database that uses JSON for documents, JavaScrip tfoi MapReduce indexes, anod regular HTTP for its API
  • RabbitMQ: Robust messaging for applications
  • Riak: Distributed NoSQL database with a key/value design and advanced local and multi-cluster replication
  • LeoFS: Unstructured Object Storage for the Web and a highly available, distributed, eventually consistent storage system.
  • OpenFlow: Software Defined Networking (SDN)
  • Zotonic: The Erlang Web Framework & CMS
  • logplex: Heroku log router
  • Chef: Automation for Web-Scale IT

XMPP Servers

  • Ejabberd: World’s Most Popular XMPP Server
  • MongooseIM: Base platform for building high performance messaging systems leveraging XMPP

XMPP Clients

  • escalus: XMPP client library for conveniently testing XMPP servers

Pub/Sub

Routing

Sockets

  • Ranch
  • gen_tcp
  • Shackle: High Performance Erlang Network Client Framework
  • Tecipe: Lightweight and Flexible TCP Socket Acceptor Pool for Erlang

SOAP

  • soap: Make it easy to use SOAP from Erlang

Statistics

Security

Time Series

  • Tnesia: Time-series Data Storage
  • DalmatinerDB: A fast, distributed metric store
  • RiakTS: NOTE: as of this writing, Riak TS is a branch inside Riak KV, the link may be outdated

Tools

  • observer_cli: A sharp shell tool see erlang node.
  • erlyberly: debugger for erlang and elixir using erlang tracing. It is probably the easiest and quickest way to start debugging your erlang nodes.
  • visualixir: toy process visualizer for remote BEAM nodes, written in Phoenix/Elixir/d3.
  • edump: Erlang Crashdump Analysis Suite
  • kerl: Easy building and installing of Erlang/OTP instances

Web Server Utilities

  • Cowboy Swagger: Swagger integration for Cowboy (built on trails)
  • sumo_rest: Generic cowboy handlers to work with Sumo
  • vegur: HTTP Proxy Library

Web Frameworks

Worker/Resource Pools