BEAM Toolbox
View SourceA 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
Build Tools
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
Cloud
Command Line
Compression
- erlang-lz4: LZ4 bindings for Erlang
Configuration
- Cuttlefish
- econfig: simple Erlang config handler using INI files
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
- odbc
- epgsql
- pgpool: A PosgreSQL client that automatically uses connection pools and handles reconnections in case of errors.
- emysql
- couchbeam
- mongodb
- redo: pipelined erlang redis client
Databases
Data Formats
- edn-erlang
- erldn
- transit-erlang: Transit format for erlang
- msgpack-erlang: MessagePack (de)serializer implementation for Erlang
- protobuffs
- thrift
- eavro
- benc: Erlang BEncode parser/unparser
- leo_csv: CSV Parser for Erlang
Data Structures
- StateBox
- riak_dt
- pqueue: Erlang Priority Queues
- erlang-lru: Erlang LRU: a fixed size LRU cache
Data Structure Manipulation
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
- Triq
- QuickCheck
- PropEr
- eqc_lib: Erlang QuickCheck common library functions
HTTP Clients
Interop
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
Javascript
JSON
JSON Schema
JSON Web Token
JSON Patch
Load Generators
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
Mocking
Networking
Package Manager
- Hex
- Rebar3 Hex Plugin: plugin to use hex from rebar3
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
- ErlBus
- gen_event
- West
- TinyMQ
- Syn: A global Process Registry and Process Group manager for Erlang
- leo_mq: leo_mq is a local message-queueing library
Rate Limiting
Release Management
Routing
- Router
- Cowboy Trails: A couple of improvements over Cowboy Routes
Scheduling
Server Sent Events Clients
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
Static Checkers
Statistics
- basho_stats
- bear: a set of statistics functions for erlang
Security
- erlang-certifi: SSL Certificates for Erlang
Templates
Testing
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
Utils
Web Servers
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
- Axiom
- ChicagoBoss
- Tuah: A Simple Cowboy Frontend, inspired by BeepBeep
Web Sockets Servers
Web Sockets Clients
Worker/Resource Pools
- Sidejob
- Poolboy
- worker_pool
- episcina
- gascheduler
- dispcount: Erlang task dispatcher based on ETS counters
- `leopod \https://github.com/leo-project/leo_pod\\`: A Fast Erlang worker pool manager