🕶 Awesome Erlang 🕶

A curated list of amazingly awesome Erlang libraries, resources and
shiny thing inspired by
awesome-elixir and forked
from awesome-erlang.
Actors
Libraries and tools for working with actors and such.
-
poolboy: A hunky
Erlang worker pool factory.
-
pooler: An OTP Process Pool Application
-
worker_pool: Erlang worker pool
-
episcina: A simple non intrusive resource pool for connections
-
erlang-stdinout-pool: stuff goes in, stuff goes out. there's never any miscommunication.
-
hottub: Simple, Fast, Permanent Erlang Worker Pool
-
swarm: Fast and simple acceptor pool for Erlang
-
pooly: Erlang OTP Process Pool
-
ecpool: Erlang Connection/Client Pool Library.
-
erlpool: Erlang round-robin load balancer for Erlang processes based on ETS.
-
cuesport: simple Erlang pool of workers.
-
gen_buffer: A generic message buffer behaviour with pooling and back-pressure for Erlang/Elixir.
-
JoelPM: A pooling mechanism for gen_servers.
-
erlangbureau: Small and flexible pool manager written in Erlang.
-
kuenishi: Active worker pool in OTP manner.
-
hnc-agency: hnc - Erlang worker pool.
-
gootik: Constant pool cache for Erlang for massive data.
-
doubleyou: Generic pool behavior.
-
okeuday: Erlang Process Pool as a Supervisor.
-
botsunit: Erlang worker pool.
-
lb: Load-Balancer for spreading Erlang messages to other processes/ports.
-
director: Fast, powerful and useful process supervisor library with different approaches.
Algorithms, Datastructures and Design Patterns
Libraries and implementations of algorithms and datastructures.
-
datum: A pure functional and generic programming for Erlang.
-
erlando: A set
of syntax extensions like currying and monads for
Erlang.
-
statebox: Erlang
state monad with merge/conflict-resolution capabilities.
-
erlang_ds: A universal, extensible, data structure-agonstic library for augmenting, converting, and interfacing with Erlang Key-Value data structures.
-
riak_dt: Erlang
library of state based CRDTs.
-
nif_helpers: An
Erlang.mk plugin and C library for writing NIFs.
-
hooks: Generic
plugin and hook system for Erlang applications.
Authentication
Libraries for implementing authentications schemes.
-
oauth2: Erlang
OAuth2 Implementation.
-
auth:
Production-worthy, generic authentication system. Currently
implements both password-based and RSA-key-based authentication
calls. Coming Soon: Two Factor Authentication.
-
oidcc:
OpenId Connect client library in Erlang & Elixir
Blockchain
Blockchain applications and/or libraries using Erlang
-
aeternity: A
new blockchain for æpps. Optimized for scalability via smart
contracts inside state-channels. Has a built-in oracle for
integration with real-world data. Comes with a naming system, for
developerability.
-
amoveo: Amoveo is a blockchain meant for enforcement of investment and insurance contracts.
-
ecoinpool: A pool
mining software written in Erlang for cryptographic
currencies.
Project build and automation tools.
-
rebar: Erlang build
tool that makes it easy to compile and test Erlang applications,
port drivers and releases.
-
rebar3: A build
tool for Erlang which can manage Erlang packages from
hex.pm.
-
erlang.mk: A
build tool for Erlang that just works, based on
GNUMakefile
-
zx/zomp: ZX/Zomp makes
starting Erlang projects and running Erlang programs lightweight
and familiar.
-
agner: Agner is a
rebar-friendly Erlang package index inspired by Clojars and
Homebrew.
-
sync: On-the-fly
recompiling for Erlang.
-
sinan:
Erlang/OTP oriented build system.
Caching
Libraries for caching data.
-
cache: In-memory
Segmented Cache.
-
nitro_cache: A simple in-memory caching server (used in Nitrogen)
Code Analysis
Libraries and tools for analysing, parsing and manipulation codebases.
-
Concuerror:
Concuerror is a systematic testing tool for concurrent Erlang
programs.
-
eflame: A Flame
Graph profiler for Erlang.
-
geas: Geas is
a tool that will detect the runnable official Erlang release
window for your project, including its dependencies and provides
many useful informations.
Codebase Maintenance
Libraries and tools to maintain a clean codebase.
-
elvis: Erlang Style
Reviewer.
-
rekt: A parse transform to define new Erlang records from existing records, similar to inheritance in objected oriented languages.
-
pipeline: A parse transform to add a pipe mechanism to Erlang function composition (think Elixir's `|>` operator)
CMS
Erlang powered Content Management System (CMS)
A content management system (CMS) is computer software used to
manage the creation and modification of digital content (content
management). A CMS is typically used for enterprise content
management (ECM) and web content management (WCM).
– Wikipedia
-
LiquidCMS: KISS
CMS based on Nitrogen Web Framework and Bootstrap.
-
khale: Khale
is a somewhat-open CMS suitable for creating sites for open
communities.
-
Chat: Instant
Messenger respects ISO 20922 IETF 3394 3565 5280 5480 5652 5755
8551 ITU ASN.1 X.509 CMS PKCS-10 PCKS-7 OCSP LDAP DNS X9-42 X9-62
X25519 X488 SECP384r1.
Command Line Interfaces (CLI)
-
getopt: Erlang
module to parse command line arguments using the GNU getopt
syntax.
-
nebula: Small
library for colored (ANSI) output in Erlang/Elixir/LFE. It's can
be useful when you need to create user-friendly command-line
application.
-
erlctl: Command
Line Interface Framework for Erlang.
-
ectl: Escript
command line utilities.
-
Erlang-command-line-interface:
Telnet command line interface written in Erlang.
-
erlfmt: Formatting
of Erlang terms from the command line.
-
ecli: Telecom style
command line interface with tab completion.
Cryptography
-
erlang-dkg:
Distributed key generation for Erlang (using pairing based
cryptography).
-
erlang-crypto_rsassa_pss:
RSASSA-PSS Public Key Cryptographic Signature Algorithm for Erlang
and Elixir.
-
cinched:
Cinched is a microservice to provide cryptographic and key
management operations.
-
cryptographic:
Erlang cryptographic library primarily written in Erlang to make
distribution on multiple platforms easy.
-
erlang-ucrypto:
µCrypto is a thin wrapper for the OpenSSL API's that are missing
in OTP's crypto application.
Configuration Management
Libraries and tools related to configuration management.
-
stillir: Cache
environment variables as Erlang app variables.
Databases
-
actordb: ActorDB
is a distributed SQL database with the scalability of a KV store,
while keeping the query capabilities of a relational
database.
-
antidote:
AntidoteDB is a highly available geo-replicated key-value
database.
-
barreldb:
Barrel is a modern document-oriented database in Erlang focusing
on data locality (put/match the data next to you) and
P2P.
-
cakedb: A stream
oriented database.
-
cbt: Multi-layer
MVCC log append-only database library based on the Apache CouchDB
btree.
-
couchbeam:
Apache CouchDB client in Erlang.
-
couchdb: An
Erlang/Elixir CouchDB client.
-
cowdb: Pure
Key/Value database library for Erlang Applications.
-
dbi: Erlang and
Elixir DataBase Interface.
-
epgsql: PostgreSQL
Driver for Erlang.
-
erlmongo: Erlang driver for MongoDB with gridfs that works with maps and proplists.
-
emysql: Emysql implements a stable driver toward the MySQL database. It currently support fairly recent versions (somewhere around 5.3+) and it is considered fairly stable in production.
-
ergl: A fault-tolerant marriage of causal and strong consistency.
-
imem: Clustered in-memory database based on MNESIA with simple SQL layer.
-
jamdb_oracle: Oracle Database driver for Erlang.
-
kvc: Key Value Coding for Erlang data structures
-
khepri: Khepri is a tree-like replicated on-disk database library for Erlang and Elixir.
-
memdb: Erlang memory backend K/V store.
-
migresia: A simple Erlang tool to automatically migrate Mnesia databases between versions.
-
minidb: A minimal in-memory distributed master-less document database
-
mnesia 🟊 : A heavy-duty
real-time distributed database

-
mria: Mria is an extension for Mnesia database that adds eventual consistency to the cluster.
-
mysql-otp: MySQL/OTP – MySQL driver for Erlang/OTP.
-
nkbase: NkBASE distributed database
-
odi: OrientDB Database Interface for Erlang.
-
opencouch: A embeddable document oriented database compatible with Apache CouchDB.
-
plum_db: A globally replicated database using eventual consistency. It uses Epidemic Broadcast Trees and lasp-lang’s Partisan.
-
pgsql_migration: PostgreSQL migrations for Erlang.
-
rc: Chain Replication Database for KVS
-
ringo: Ringo is an experimental, distributed, replicating key-value store based on consistent hashing and immutable data. Unlike many general-purpose databases, Ringo is designed for a specific use case: For archiving small or medium-size data items.
-
rocker: Erlang/Elixir wrapper for RocksDB.
-
sql_bridge: An abstraction layer and database utility providing a unified interface for working with SQL databases (MySQL and PostgreSQL currently). (Not an ORM)
-
sumbo_db: sumo_db aims to ease db access for erlang applications. It offers a very simple persistance layer capable of interacting with different db's, while offering a consistent api to your code.
-
stockdb: stockdb is a storage for Stock Exchange quotes.
-
vaxine: Rich-CRDT database based on AntidoteDB.
-
yamndb: In-memory circular array database.
Date and Time
Libraries for working with dates and times.
-
chronos: Timer module for Erlang that makes it easy to abstact time out of the tests.
-
erlang_localtime: Erlang library for conversion from one local time to another.
-
ezic: A set of erlang utilities for the Olson timezone database files.
-
iso8601: An ISO 8601 date formating and parsing library for Erlang.
-
qdate: Erlang date, time, and timezone management: formatting, conversion, and date arithmetic.
Debugging
Libraries and tools for debugging code and applications.
-
🟊 cover - A Coverage
Analysis Tool for Erlang
-
🟊 debugger -
A debugger for debugging and testing of Erlang programs
-
🟊 dialyzer -
The DIALYZER, a DIscrepancy AnaLYZer for ERlang programs.
-
eministat: Port of Poul-Henning Kamp's ministat to the Erlang world.
-
et - Event Tracer
(ET), uses the built-in trace mechanism in Erlang and provides
tools for collection and graphical viewing of trace data.
-
flatlog: A custom formatter for the Erlang logger application that turns maps into single line text logs.
-
recon: Collection of functions and scripts to debug Erlang in production.
-
tx: An HTML Erlang term viewer, starts own webserver and displays any term you give it from your Erlang node.
-
🟊 xref - A Cross
Reference Tool for analyzing dependencies between functions,
modules, applications and releases.
Deployment
Libraries and tools related to deployment of Erlang/OTP
applications.
-
enit: An Erlang application release in a Docker container from scratch.
-
docker-erlang: Basic Docker Container Images for Erlang/OTP.
-
pkgx: Build .deb packages from Erlang releases.
Distributed Systems
Tools for stress/load testing, latency issues, etc. across
microservices.
-
erleans: A framework for building distributed applications in Erlang and Elixir based on Microsoft Orleans.
-
nkcluster: A framework to manage jobs at huge Erlang clusters.
-
partisan: Partisan is a scalable and flexible, TCP-based membership system and distribution layer for the BEAM.
-
typhoon: Stress and load testing tool for distributed systems that simulates traffic from a test cluster toward a system-under-test (SUT) and visualizes related latencies.
-
enot: Package manager, build and deploy tool.
Documentation
Documenting Erlang code.
Embedded
-
E4VM: A small portable virtual machine that would run Erlang on embedded systems.
-
gen_batch: A batch job running library for embedded Erlang/OTP.
-
i2c: Erlang api to i2c linux interface.
-
eel: Embedded Erlang (EEl).
-
mini-monkey: MiniMonkey is a tiny message routing system aimed for embedded systems. Especially the broker is programmatically provisioned.
Geolocation
Libraries for geocoding addresses and working with latitudes and
longitudes.
-
erl-rstar: An Erlang implementation of the R*-tree spacial data structure.
-
geodata2: Erlang application for working with MaxMind geoip2 (.mmdb) databases.
-
geocouch: A spatial extension for Couchbase and Apache CouchDB.
-
teles: An Erlang network service for manipulating geographic data.
Graphical Interfaces
Libraries for creating and dealing with Graphical Interfaces (GUI)
-
slider: A WxErlang application to generate slidesets.
HTTP
Libraries for working with HTTP and scraping websites.
-
cowboy: A simple HTTP server.
-
elli: A webserver you can run inside your Erlang application to expose an HTTP API.
-
bullet: Simple, reliable, efficient streaming for Cowboy.
-
gun: Erlang HTTP client with support for HTTP/1.1, SPDY and Websocket.
-
hackney: Simple HTTP client in Erlang.
-
ibrowse: Erlang HTTP client.
-
lhttpc: A lightweight HTTP/1.1 client implemented in Erlang.
-
shotgun: For the times you need more than just a gun.
-
yaws: A webserver for dynamic content written in Erlang.
-
🟊 inets:httpd - An
implementation of an HTTP 1.1 compliant web server, as defined in
RFC 2616.
-
🟊 inets:httpc - An
HTTP/1.1 client
-
webmachine: Webmachine is an application layer that adds HTTP semantic awareness on top of the excellent bit-pushing and HTTP syntax-management provided by mochiweb, and provides a simple and clean way to connect that to your application's behavior.
-
erlang-spdy: Library implementing the SPDY protocol.
-
mimerl: Library to handle mimetypes.
Image Processing
-
emagick: Wrapper for Graphics/ImageMagick command line tool.
Internet of Things
Libraries and tools for interacting with the physical world.
-
grisp: Run the Erlang VM on an IoT board with many hardware interfaces and low-level drivers using a small realtime unikernel called RTEMS.
-
achlys: Erlang framework for building applications with Lasp on GRiSP
-
grisp_emulation: Hardware emulation layer for the GRiSP runtime.
-
dgiot: Open source platform for iot , 6 min Quick Deployment,10M devices connection,Carrier level Stability.
-
erlem: Erlang IoT platform
-
lynkia: A library to make large-scale computations on IoT devices.
-
lemma_erlang: A lemma for IDEO's Noam internet-of-things prototyping platform.
Logging
Libraries for generating and working with log files.
-
bloberl: Simple log shipping to cloud object storage (S3, GCS and Azure Blob).
-
lager: A logging framework for Erlang/OTP.
Typically Log Shippers like Filebeat, Fluentd, Logstash, etc. expect logs to be in JSON format. This is a custom logger formatter for Erlang that prints JSON.
-
lager: A logging framework for Erlang/OTP.
-
lager_amqp_backend: AMQP RabbitMQ Lager backend.
-
lager_hipchat: HipChat backend for lager.
-
lager_loggly: Loggly backend for lager.
-
lager_smtp: SMTP backend for lager.
-
lager_slack: Simple Slack backend for lager.
-
logplex: Heroku log router.
Miscellaneous
Useful libraries or tools that don’t fit in the categories above.
-
erlang-history: Hacks to add shell history to Erlang's shell.
-
erlias: A utility to create alias modules to other modules (not a parse transform).
-
erld: erld is a small program designed to solve the problem of running Erlang programs as a UNIX daemon.
-
erlmacs: erld is a simple script to update your .emacs file for Erlang development.
Monitoring
Libraries for gathering metrics and monitoring.
Networking
Libraries and tools for using network related stuff.
-
barrel_tcp: a generic TCP acceptor pool with low latency in Erlang.
-
gen_rpc: A scalable RPC library for Erlang-VM based languages.
-
gen_tcp_server: A library that takes the concept of gen_server and introduces the same mechanics for operating a TCP server.
-
gossiperl: Language agnostic gossip middleware and message bus written in Erlang.
-
nat_upnp: Erlang library to map your internal port to an external using UNP IGD.
-
ranch: Socket acceptor pool for TCP protocols.
-
natter: Erlang XMPP Client.
-
condor: Condor is a minimal library for building scalable TCP servers in Erlang.
-
inet_cidr: CIDR erlang library.
-
erlang-nat: Implements NAT handling facilities for Erlang applications.
-
sieve: sieve is a simple TCP routing proxy (layer 7) in Erlang.
-
socat: Command line utility to cat files via network socket.
-
sockerl: Library for implementing servers, clients and client pool in TCP protocols.
-
lorawan-server: Compact server for private LoRaWAN networks.
ORM and Datamapping
Libraries that implement object-relational mapping or datamapping
techniques.
-
boss_db: A sharded, caching, pooling, evented ORM for Erlang.
-
couchdb: Document oriented database.
-
datalog: Datalog is a query language based on the logic programming paradigm. The library is designed to formalize relation of n-ary streams.
-
erlog: Erlog is an Erlang implemented Datalog.
-
erlquery: Erlang like, database agnostic DSL for composing queries.
-
esync: Simple tool to sync files.
-
merle: An Erlang Memcached Client.
Package Management
Libraries and tools for package and dependency management.
- hex.pm - A package manager for the Erlang
ecosystem.
Profiling
-
🟊 cprof - The cprof
module is used to profile a program to find out how many times
different functions are called.
-
🟊 eprof - A Time
Profiling Tool for Erlang
-
🟊 fprof - A Time
Profiling Tool using trace to file for minimal runtime performance
impact.
Queue
Libraries for working with event and task queues.
-
dq: Distributed Fault Tolerant Queue library.
-
ebqueue: Tiny simple blocking queue in Erlang.
-
pqueue: Erlang Priority Queues.
-
tinymq: A diminutive, in-memory message queue for Erlang.
-
couch_zmq: zeromq endpoint for couchdb.
Queueing Systems
Implementation of queueing and bus systems.
-
bondy: A WAMP (Web Application Messaging Protocol) Implementation in Erlang.
-
rabbitmq-server: An implementation of AMQP in Erlang.
-
vernemq: An MQTT Broker in Erlang
Rebar3 Plugins
REST and API
Libraries and web tools for developing REST-ful APIs.
-
echohttp: simple service echoing any requests.
-
leptus: Leptus is an Erlang REST framework that runs on top of cowboy.
-
rooster: Rooster is a lightweight REST framework that runs on top of mochiweb.
Release Management
Libraries and tools for release management.
-
relx: A release assembler for Erlang.
Templating
Templating system
-
aihtml: A simple html render libary more than Mustache Template Compiler.
-
bbmustache: Binary pattern match Based Mustache template engine for Erlang/OTP.
-
beard: Mustache inspired, performant templating solution for Erlang.
-
brim: HTML templating library.
-
dactyl: String templating library for Erlang
-
ehtml5: Simple Erlang Template Engine.
-
elk.erl: Erlang implementation of Mustache, logic-less template engine.
-
erlang-mustache: Implementation of mustache templating in Erlang.
-
erlydtl: ErlyDTL compiles Django Template Language to Erlang bytecode.
-
etcher: An Erlang implementation of the Django Template Language.
-
jaderl: An implementation of the Jade templating language in Erlang.
-
mustache.erl: An Erlang port of Mustache for Ruby.
-
roni: Erlang string templating with macaroni-filled syntax.
-
sgte: an Erlang template Engine for generating structured output (code, html web pages, xml, emails, csv files, etc...).
-
stache: Mustache Template Language for Erlang.
-
swirl: swirl is the Erlang port of whiskers.js template library.
-
template_compiler: Dynamic template compiler for Erlang (complete rewrite of the erlydtl fork used in Zotonic).
-
templaterl: Simple and fast templating with customizable expressions in Erlang.
-
walrus: A mustache-like templating.
Security
Security related projects in Erlang.
-
erlang-jose: JSON Object Signing and Encryption (JOSE) for Erlang and Elixir.
-
erlpass: A library to handle password hashing and changing in a safe manner, independent from any kind of storage whatsoever.
Testing
Libraries for testing codebases and generating test data.
Text and Numbers
Libraries for parsing and manipulating text and numbers.
-
base62: Base 62 Encode and Decode for Erlang.
-
eql: Erlang with SQL or not.
-
fakerl: Erlang application for generating fake data.
-
qsp: Enhanced query string parser for Erlang.
-
🟊 leex - A regular
expression based lexical analyzer generator for Erlang, similar to
lex or flex.
-
NumEr: Numeric Erlang - vector and matrix operations with CUDA. Heavily inspired by Pteracuda.
-
piqi-erlang: Protocol Buffers, JSON, XML data serialization system for Erlang.
-
qrcode: QR Code encoder in Erlang.
-
sgte: sgte is an Erlang template Engine for generating structured output (code, html web pages, xml, emails, csv files, etc...).
-
uuid: an implement of UUID.
-
🟊 yecc - An LALR-1
parser generator for Erlang, similar to yacc. Takes a BNF grammar
definition as input, and produces Erlang code for a parser.
Asciidoc
BERT
-
aberth: Generic BERT-RPC server in Erlang.
-
bert: BERT and BERT-RPC
-
bert.erl: Erlang BERT encoder/decoder.
BSON
-
bson: A strict, stand-alone BSON implementation for Erlang.
-
bson-erlang: BSON documents in Erlang.
-
ebson: BSON Support for Erlang.
-
erlbison: Erlbison is an Erlang library to work with BSON files. Its discerning feature is its attempt to do as much work as possible at the binary level, without translating the data to native Erlang data structure unless when absolutely necessary, in order to maximize performance.
-
nbson: Erlang BSON encoder/decoder.
CBOR
-
cbor-erlang: cbor encoder/decoder in Erlang.
-
erlang_cbor: Erlang implementation of Concise Binary Object Representation (CBOR), RFC 7049.
CVS
-
ecsv: ecsv is a simple Erlang CSV parser able to read a file or string and sending back to an erlang process events when a line is parsed.
HTML
-
hterl: An Erlang extension which adds HTML tags to the expression syntax.
-
htmerl: HTML Parser in Erlang.
-
mochiweb_xpath: XPath support for mochiweb's html parser.
-
trane: SAX style broken HTML parser in Erlang.
INI
JSON
-
erl-json: An implementation of the JSON data format in Erlang.
-
ejsv: Erlang JSON schema validator.
-
erlang-rfc4627: Erlang RFC4627 (JSON) codec and JSON-RPC server implementation.
-
euneus: An incredibly flexible and performant JSON parser and generator.
-
jiffy: JSON NIFs for Erlang.
-
jsx: An erlang application for consuming, producing and manipulating json.
-
miffy: Jiffy wrapper which returns pretty maps.
-
rec2json: Generate JSON encoder/decoder from record specs.
-
thoas: A blazing fast JSON parser and generator in pure Erlang.
-
simdjson_erlang: simdjson bindings for erlang
-
simdjsone: Erlang Fast JSON parser
Markdown
Protobuf
-
erlang_protobuffs: An implementation of Google's Protocol Buffers for Erlang.
-
gpb: A Google Protobuf implementation for Erlang.
-
proterlang: A protobuf library and compiler for Erlang.
-
ProtobufTool: protobuf tools in Erlang.
TOML
-
etoml: A pure Erlang parser for TOML.
-
toml: Erlang TOML parser.
-
tomerl: Erlang TOML Parser.
-
tomle: TOML in Erlang.
XML
-
erlsom - Erlsom is an Erlang
library to parse (and generate) XML documents.
-
exml - XML parsing library in
Erlang
-
exmlrpc - An HTTP 1.1 compliant
XML-RPC library for Erlang
-
erlxml - erlxml - Erlang
XML parsing library based on pugixml
-
fast_xml - Fast Expat
based Erlang XML parsing and manipulation library, with a strong
focus on XML stream parsing from network.
-
parsexml - Simple DOM
XML parser with convenient and very simple API
-
🟊 xmerl - xmerl XML parser
is able to parse XML documents according to the XML 1.0
standard. As default it performs well-formed parsing, (syntax
checks and checks of well-formed constraints).
-
xmlrpc - Erlang XML-RPC library
by Joakim Grebenö
-
xqerl - Erlang XQuery 3.1
Processor
YAML
-
fast_yaml: Fast YAML native library for Erlang / Elixir.
-
yamerl: YAML 1.2 and JSON parser in pure Erlang.
-
yval: YAML validator.
-
yconf: YAML configuration processor.
-
yeml: Erlang YAML library.
Third Party APIs
Libraries for accessing third party APIs.
Translations and Internationalizations
Libraries providing translations or internationalizations.
-
erli18n: GNU gettext-compatible internationalization (i18n) library for Erlang/OTP, in pure Erlang.
Web Frameworks
Web development frameworks.
-
axiom: A micro-framework, inspired by Ruby's Sinatra.
-
ChicagoBoss: A server framework inspired by Rails and written in Erlang.
-
chloe: A realtime web server that doesn't suck... or at least won't suck when it's finished.
README 内容过长,已截取前 64 KB。完整内容请前往 GitHub 仓库查看。
评论