BEAM Toolbox ============ A list of tools and libraries that are useful for BEAM languages like efene, erlang, LFE and Elixir projects. .. contents:: :local: :depth: 1 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 Build Tools ........... * `Rebar3 `_ * `Erlang.mk `_ 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 ..... * `erlcloud `_ Command Line ............ * `getopt `_ * `clique `_ * `escript `_ * `cf `_: Colored output for io and io_lib * `etermcap `_: Pure erlang termcap library 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 ......... * `eleveldb `_ * `ETS `_ * `DETS `_ * `Mnesia `_ * `Bitcask `_ * `sumo_db `_ * `erocksdb `_: Erlang bindings to RocksDB datastore 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 ........................... * `Hubble `_ * `Dotto `_ 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 ............ * `Shotgun `_ * `Gun `_ * `Hackney `_ Interop ....... * `jinterface `_ * `NIFs `_ * `Ports `_ 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 .......... * `erlang_js `_ JSON .... * `jsx `_ * `jiffy `_ JSON Schema ........... * `jesse `_ JSON Web Token .............. * `ejwt `_ * `jwt-erl `_ JSON Patch .......... * `json-patch `_ Load Generators ............... * `Ponos `_ * `Tsung `_ * `Typhoon `_ 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 ....... * `Meck `_ Networking ........... * `Damocles `_ 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 ............. * `Pobox `_ * `Backoff `_ Release Management .................. * `Relx `_ Routing ....... * `Router `_ * `Cowboy Trails `_: A couple of improvements over Cowboy Routes Scheduling .......... * `ErlCron `_ Server Sent Events Clients .......................... * `Shotgun `_ * `Gun `_ 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 ............... * `Xref `_ * `Dialyzer `_ * `Elvis `_ Statistics .......... * `basho_stats `_ * `bear `_: a set of statistics functions for erlang Security ........ * `erlang-certifi `_: SSL Certificates for Erlang Templates ......... * `Mustache `_ * `ErlyDtl `_ Testing ....... * `Commom Test `_ * `EUnit `_ 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 ..... * `Katana `_ * `uuid `_ * `erlware_commons `_ * `hope `_ Web Servers ........... * `Cowboy `_ * `Mochiweb `_ * `WebMachine `_ * `Elli `_ * `Yaws `_ 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 ................... * `Bullet `_ * `N2O `_ Web Sockets Clients ................... * `Gun `_ Worker/Resource Pools ..................... * `Sidejob `_ * `Poolboy `_ * `worker_pool `_ * `episcina `_ * `gascheduler `_ * `dispcount `_: Erlang task dispatcher based on ETS counters * `leo_pod _`: A Fast Erlang worker pool manager XML ... * `Xmerl `_ * `exml `_