Elixir

repo: h4cc/awesome-elixir
category: Programming Languages related: Erlang · Phoenix · Elixir Books · Haskell · Clojure


Awesome Elixir CI Badge Awesome

A curated list of amazingly awesome Elixir libraries, resources, and shiny things inspired by awesome-php.

If you think a package should be added, please add a :+1: (:+1:) at the according issue or create a new one.

There are other sites with curated lists of elixir packages which you can have a look at.

Actors

Libraries and tools for working with actors and such.

  • alf - Flow-based Application Layer Framework.
  • bpe - Business Process Engine in Erlang. (Doc).
  • pooler - An OTP Process Pool Application.
  • poolex - Pure elixir pool manager.
  • spawn - Elixir poliglot actors service mesh.

Algorithms and Data structures

Libraries and implementations of algorithms and data structures.

  • aja - High performance persistent vectors and ordered maps.
  • array - An Elixir wrapper library for Erlang's array.
  • aruspex - Aruspex is a configurable constraint solver, written purely in Elixir.
  • bimap - Pure Elixir implementation of bidirectional maps and multimaps.
  • bitmap - Pure Elixir implementation of bitmaps.
  • blocking_queue - BlockingQueue is a simple queue implemented as a GenServer. It has a fixed maximum length established when it is created.
  • bloomex - A pure Elixir implementation of Scalable Bloom Filters.
  • clope - Elixir implementation of CLOPE: A Fast and Effective Clustering Algorithm for Transactional Data.
  • Closure Table - Closure Table for Elixir - a simple solution for storing and manipulating complex hierarchies. It provides in-memory and Ecto adapters.
  • combination - Elixir library to generate combinations and permutations from Enumerable collection.
  • conrex - An Elixir implementation of the CONREC algorithm for topographic or isochrone maps.
  • count_buffer - Buffer a large set of counters and flush periodically.
  • cuckoo - A pure Elixir implementation of Cuckoo Filters.
  • cuid - Collision-resistant ids optimized for horizontal scaling and sequential lookup performance, written in Elixir.
  • data_morph - Create Elixir structs from data.
  • dataframe - Package providing functionality similar to Python's Pandas or R's data.frame().
  • datastructures - A collection of protocols, implementations and wrappers to work with data structures.
  • def_memo - A memoization macro (defmemo) for elixir using a genserver backing store.
  • dlist - Deque implementations in Elixir.
  • eastar - A* graph pathfinding in pure Elixir.
  • ecto_materialized_path - Tree structure, hierarchy and ancestry for the ecto models.
  • ecto_state_machine - Finite state machine pattern implemented on Elixir and adopted for Ecto.
  • elistrix - A latency / fault tolerance library to help isolate your applications from an uncertain world of slow or failed services.
  • emel - A simple and functional machine learning library written in elixir.
  • erlang-algorithms - Implementations of popular data structures and algorithms.
  • exconstructor - An Elixir library for generating struct constructors that handle external data with ease.
  • exfsm - Simple elixir library to define a static FSM.
  • exmatrix - ExMatrix is a small library for working with matrices, originally developed for testing matrix multiplication in parallel.
  • exor_filter - Nif for xor_filters. 'Faster and Smaller Than Bloom and Cuckoo Filters'.
  • ezcryptex - Thin layer on top of Cryptex.
  • flow - Computational parallel flows on top of GenStage.
  • fnv - Pure Elixir implementation of Fowler–Noll–Vo hash functions.
  • fsm - Finite state machine as a functional data structure.
  • fuse - This application implements a so-called circuit-breaker for Erlang.
  • gen_fsm - A generic finite state-machine - Elixir wrapper around OTP's gen_fsm.
  • graphex - A library for composing and executing task graphs in elixir.
  • graphmath - An Elixir library for performing 2D and 3D mathematics.
  • hash_ring_ex - A consistent hash-ring implementation for Elixir.
  • hypex - Fast Elixir implementation of HyperLogLog.
  • indifferent - Indifferent access for Elixir maps/list/tuples with custom key conversion.
  • isaac - Isaac is an elixir module for ISAAC: a fast cryptographic random number generator.
  • jumper - Jump consistent hash implementation in Elixir (without NIFs).
  • key2value - Erlang 2-way Set Associative Map.
  • lfsr - Elixir implementation of a binary Galois Linear Feedback Shift Register.
  • loom - A CRDT library with δ-CRDT support.
  • luhn - Luhn algorithm in Elixir.
  • lz4 - LZ4 bindings for Erlang for fast data compressing.
  • machinery - A state machine library for structs in general, it integrates with Phoenix out of the box.
  • mason - Coerce maps into structs. This is helpful e.g. when you interface a REST API and want to create a struct from the response.
  • matrex - A blazing fast matrix library for Elixir/Erlang with C implementation using CBLAS.
  • merkle_tree - A Merkle hash tree implementation in Elixir.
  • minmaxlist - Elixir library extending Enum.min_by/2, Enum.max_by/2 and Enum.min_max_by/2 to return a list of results instead of just one.
  • mmath - A library for performing math on number 'arrays' in binaries.
  • monadex - Upgrade your Elixir pipelines with monads.
  • murmur - A pure Elixir implementation of the non-cryptographic hash Murmur3.
  • nary_tree - An Elixir implementation of generic n-ary tree data structure.
  • natural_sort - Elixir natural sort implementation for lists of strings.
  • navigation_tree - A navigation tree representation with helpers to generate HTML out of it.
  • parallel_stream - A parallel stream implementation for Elixir.
  • paratize - Elixir library providing some handy parallel processing (execution) facilities that support configuring number of workers and timeout.
  • parex - Parallel Execute (Parex) is an Elixir module for executing multiple (slow) processes in parallel.
  • qcomplex - Elixir library implementing complex numbers and math operations for them.
  • qex - Wraps :queue, with improved API and Inspect, Collectable and Enumerable protocol implementations.
  • qrational - Elixir library implementing rational numbers and math operations for them.
  • ratio - Adds Rational Numbers and allows them to be used in common arithmetic operations. Also supports conversion between Floats and Rational Numbers.
  • red_black_tree - Red-Black tree implementation in Elixir.
  • remodel - An Elixir presenter package used to transform map structures.
  • rendezvous - Implementation of the Rendezvous or Highest Random Weight (HRW) hashing algorithm in Elixir.
  • rock - Elixir implementation of ROCK: A Robust Clustering Algorithm for Categorical Attributes.
  • sfmt - SIMD-oriented Fast Mersenne Twister (SFMT) for Erlang.
  • simhash - Simhash implementation using Siphash and N-grams.
  • sleeplocks - BEAM friendly spinlocks for Elixir/Erlang.
  • sorted_set - Sorted Sets for Elixir.
  • spacesaving - stream count distinct element estimation using the "space saving" algorithm.
  • structurez - A playground for data structures in Elixir.
  • supermemo - An Elixir implementation of the Supermemo 2 algorithm.
  • tfidf - An Elixir implementation of term frequency–inverse document frequency.
  • the_fuzz - Fuzzy string-matching algorithm implementations.
  • tinymt - Tiny Mersenne Twister (TinyMT) for Erlang.
  • trie - Erlang Trie Implementation.
  • witchcraft - Common algebraic structures and functions for Elixir.
  • zipper_tree - Variadic arity tree with a zipper for Elixir.

Applications

Standalone applications.

  • Caddishouse - A web-based document reader that connects to your cloud storage accounts using Phoenix/LiveView.
  • CaptainFact - A collaborative, real-time video fact-checking platform. (Docs).
  • chat - A tiny text chat sample based on N2O.
  • Consolex - Consolex is a tool that allows you to attach a web based console to any mix project.
  • dragonfly_server - Elixir app to serve Dragonfly images.
  • exchat - A Slack-like app by Elixir, Phoenix & React (redux).
  • Exon - A “mess manager” developed in Elixir and provides a simple API to manage & document your stuff. (Docs).
  • ExShop - Digital goods shop & blog created using Phoenix framework.
  • Harpoon - A webhook receiver/inspector app, made using Phoenix and LiveView, it's basically a simplified version of webhook.site.
  • Igthorn - Cryptocurrecy trading platform / trading bot with admin panel.
  • Lynx - A Fast, Secure and Reliable Terraform Backend, Set up in Minutes.
  • majremind - A self-maintained database of your updated server which tells you which one needs to be updated.
  • medex - Medical Examination - application for register health check callbacks and represent their state via HTTP.
  • medusa_server - A simple cowboy web server written in Elixir to stack images. (Docs).
  • Nvjorn - A multi-protocol network services monitor written in Elixir using Poolboy.
  • Phoenix Battleship - The Good Old game built with Elixir, Phoenix Framework, React and Redux.
  • Phoenix Toggl - Toggl tribute done in Elixir, Phoenix Framework, React and Redux.
  • Phoenix Trello - Trello tribute done in Elixir, Phoenix Framework, React and Redux.
  • Plural - Deploys your favorite open source applications like airflow and airbyte in your own cloud account with just two commands. Written in Elixir and Phoenix Framework for server side, and React for frontend.
  • poxa - Open Pusher implementation, compatible with Pusher libraries.
  • Queerlink - A simple yet efficient URL shortening service written in Elixir.
  • RemoteRetro - A real-time application for conducting Agile retrospectives at remoteretro.org written in Elixir/Phoenix/React.
  • Sprint Poker - Online estimation tool for Agile teams, written using Elixir Lang, Phoenix Framework and React.
  • Startup Job - An umbrella project to search startup jobs scraped from websites written in Elixir/Phoenix and React/Redux.
  • Tai - A composable, real time, cryptocurrency market data and trade execution toolkit.
  • tty2048 - Terminal-based 2048 game written in Elixir.
  • uai_shot - A multiplayer ship game built with Elixir, Phoenix Framework and Phaser.
  • utils - Website with handy day-to-day utils: to do list, URL shortener, code bin and pie chart. Written in Elixir using Phoenix Framework.
  • workbench - From Idea to Execution - Manage your trading operation across a globally distributed cluster.

Artificial Intelligence

When your code becomes smarter than you.

  • AshAI - AI and LLM toolkit for Ash applications. MCP server, MCP dev tools, vector embeddings, chat interfaces, and more.
  • Axon - Nx-powered Neural Networks.
  • Beaver - Beaver is a LLVM/MLIR Toolkit in Elixir and Zig.
  • ExLLama - LlamaCpp Nif Extensions for Elixir/Erlang. (Docs).
  • Exnn - Evolutive Neural Networks framework à la G.Sher written in Elixir. (Docs).
  • GenAI - An extensible Generative AI Completion API Wrapper with basic chat completion with tool use support provided for Gemini, Anthropic, OpenAI, and Mistral models. (Docs).
  • Jido - Autonomous agent framework for Elixir. Built for distributed, autonomous behavior and dynamic workflows.
  • m2cgen - A CLI tool to transpile trained classic ML models into a native Elixir code with zero dependencies.
  • Neat-Ex - An Elixir implementation of the NEAT algorithm. (Docs).
  • Noizu-OpenAi - An Elixir Api for the OpenAI Library. (Docs).
  • Nx - Multi-dimensional arrays (tensors) and numerical definitions for Elixir.
  • ReqLLM - LLM Client supporting over 100+ LLM Providers and Models
  • Runhyve - Runhyve is complete virtual machines manager for bhyve on FreeBSD. It's written in Elixir and uses Phoenix framework.
  • simple_bayes - A Simple Bayes / Naive Bayes implementation in Elixir.
  • Synapses - A lightweight library for neural networks.
  • Weaviate - Weaviate client and macros for declaring records. (Docs).

Audio and Sounds

Libraries working with sounds and tones.

Authentication

Libraries for implementing authentication schemes.

Authorization

Libraries for implementing Authorization handling.

  • authorize - Rule based authorization, for advanced authorization rules.
  • bodyguard - A flexible authorization library for Phoenix applications.
  • canada - A simple authorization library that provides a friendly interface using declarative permission rules.
  • canary - An authorization library for Elixir applications that restricts what resources the current user is allowed to access. (Docs).
  • speakeasy - Middleware based authentication and authorization for Absinthe GraphQL powered by Bodyguard.
  • terminator - Database based authorization (ACL), with custom DSL rules for requiring needed permissions. (Docs).

Behaviours and Interfaces

Definitions how something should behave, like Interfaces from OOP-World

  • connection - Connection behaviour for connection processes. The API is superset of the GenServer API.
  • gen_state_machine - Elixir wrapper for gen_statem.
  • stockastic - Simple Elixir wrapper for the Stockfighter API.

Benchmarking

Running code to see how long it takes, which is faster and/or if improvements have been made.

  • beamchmark - A Tool for measuring EVM performance.
  • benchee - Easy and extensible benchmarking in Elixir.
  • benchfella - Benchmarking tool for Elixir.
  • bmark - A benchmarking tool for Elixir.

Bittorrent

Sharing is caring with Elixir

  • bento - An incredibly fast, correct, pure-Elixir Bencoding library.
  • tracker_request - Dealing with bittorrent tracker requests and responses.
  • wire - Encode and decode bittorrent peer wire protocol messages with Elixir.

BSON

Libraries and implementations working with BSON.

  • BSONMap - Elixir package that applies a function to each document in a BSON file and has a low memory consumption.
  • cyanide - An Elixir BSON encoding/decoding library.

Build Tools

Project build and automation tools.

Caching

Libraries for caching data.

  • cachex - A powerful caching library for Elixir with a wide featureset.
  • con_cache - ConCache is an ETS based key/value storage.
  • elixir_locker - Locker is an Elixir wrapper for the locker Erlang library that provides some useful libraries that should make using locker a bit easier.
  • jc - In-memory, distributable cache with pub/sub, JSON-query and consistency support.
  • lru_cache - Simple LRU Cache, implemented with ets.
  • memoize - A memoization macro that easily cache function.
  • nebulex - A fast, flexible and extensible distributed and local caching library for Elixir.
  • request_cache_plug - Easy to use caching for requests in either Phoenix Controllers or GraphQL resolvers. Bypasses JSON encoding/decoding for a large speedup.
  • stash - A straightforward, fast, and user-friendly key/value store.

Chatting

Chatting via IRC, Slack, HipChat and other systems using Elixir.

  • alice - A Slack bot framework for Elixir.
  • chatty - A basic IRC client that is most useful for writing a bot.
  • cog - Cog is an open chatops platform that gives you a secure, collaborative command line right in your chat window.
  • ExGram - a library to build Telegram Bots, you can use the low-level methods and models or use the really opinionated framework included. (Docs).
  • ExIrc - IRC client adapter for Elixir projects.
  • ExMustang - A simple, clueless slackbot and collection of responders.
  • Guri - Automate tasks using chat messages.
  • hedwig - XMPP Client/Bot Framework for Elixir.(Docs).
  • kaguya - A small, powerful, and modular IRC bot.
  • slacker - A bot library for the Slack chat service.
  • yocingo - Create your own Telegram Bot.

Cloud Infrastructure and Management

Applications, tools and libraries for your own cloud service.

  • aws - AWS clients for Elixir.
  • Batteries Included - A self hostable platform for automation/UI driven Kubernetes; built in Elixir and Golang the entire UI is built with Phoenix Live View.
  • Bonny - Kubernetes Operator Development Framework.
  • Cloudi - CloudI is for back-end server processing tasks that require soft-realtime transaction.
  • discovery - An OTP application for auto-discovering services with Consul.
  • erlcloud - Cloud Computing library for Erlang (Amazon EC2, S3, SQS, SimpleDB, Mechanical Turk, ELB). (Docs).
  • ex_aws - AWS client, supporting Dynamo, Kinesis, Lambda, SQS, and S3.
  • ex_riak_cs - Riak CS API client.
  • fleet_api - A simple wrapper for the Fleet (CoreOS) API. Can be used with etcd tokens or via direct node URLs.
  • Gandi - Gandi Wrapper for Leaseweb infrastructure.
  • IElixir - Jupyter's kernel for Elixir programming language.
  • k8s - Kubernetes Elixir client with CRD support, multi-cluster support, pluggable auth, and configurable middleware.
  • Kazan - Kubernetes client for Elixir, generated from the k8s open API specifications.
  • Kubereq - Kubernetes Client for Elixir based on Req.
  • Kubex - Kubernetes client and integration for Elixir, written in pure Elixir.
  • Leaseweb - Elixir Wrapper for Leaseweb infrastructure.
  • libcluster - Automatic cluster formation/healing for Elixir applications.(Docs).
  • nodefinder - Strategies for automatic node discovery in Erlang.
  • nomad - Create cloud portable Elixir and Phoenix apps. Write once, use everywhere.
  • sidejob - Parallel worker and capacity limiting library for Erlang.
  • sidetask - SideTask is an alternative to Task.Supervisor using Basho's sidejob library with parallelism and capacity limiting.
  • skycluster - Automatic Erlang cluster formation, messaging and management for Elixir/Erlang applications. Integrated with Kubernetes.
  • vercel - An Elixir wrapper for Vercel's API.

Code Analysis

Libraries and tools for code base analysis, parsing, and manipulation.

  • belvedere - An example of CircleCI integration with Elixir.
  • coverex - Coverage Reports for Elixir.
  • credo - A static code analysis tool with a focus on code consistency and teaching Elixir. (Docs).
  • DepViz - A visual tool to help developers understand Elixir recompilation in their projects. (Code).
  • dialyxir - Mix tasks to simplify use of Dialyzer in Elixir projects.(Docs).
  • ex_check - One task to efficiently run all code analysis & testing tools in an Elixir project.
  • excellent_migrations - Detecting potentially dangerous operations in database migrations.
  • excoveralls - Coverage report tool for Elixir with coveralls.io integration.
  • exprof - A simple code profiler for Elixir, using eprof.
  • int_set - A time- and memory-efficient unordered data structure for positive integers.

Command Line Applications

Anything helpful for building CLI applications.

  • elementtui - Library to help create terminal user interfaces (TUI).
  • ex_cli - User friendly CLI apps for Elixir.
  • ex_prompt - Helper package to add interactivity to your command line applications as easy as possible.
  • firex - Firex is a library for automatically generating command line interfaces (CLIs) from an elixir module.
  • getopt - Command-line options parser for Erlang.
  • loki - Library for creating interactive command-line application.
  • optimus - Command-line option parser for Elixir inspired by clap.rs.
  • owl - Owl is a toolkit for writing command-line user interfaces in Elixir.
  • phoenix-cli - Command-line interface for Phoenix Framework like Rails commands.
  • progress_bar - Command-line progress bars and spinners.
  • prompt - Toolkit for building command line applications in Elixir.
  • ratatouille - A TUI (terminal UI) kit for Elixir.
  • scribe - Pretty-print tables of Elixir structs and maps. Inspired by hirb.
  • table_rex - Generate configurable ASCII style tables for display.
  • tabula - Pretty print list of Ecto query results / maps in ascii tables (GitHub Markdown/OrgMode).

Configuration

Libraries and tools working with configurations

  • confex - Helper module that provides a nice way to read environment configuration at runtime.
  • configparser_ex - A simple Elixir parser for the same kind of files that Python's configparser library handles.
  • conform - Easy release configuration for Elixir apps.
  • dotenv - A port of dotenv to Elixir.
  • enux - utility package for loading, validating and documenting your app's configuration variables from env, json and jsonc files at runtime and injecting them into your environment.
  • figaro - Simple Elixir project configuration.
  • figaro_elixir - Environmental variables manager for Elixir.
  • hush - Read and inject configuration at runtime, and in release mode with support for multiple providers.
  • hush_aws_secrets_manager - AWS Secrets Manager provider for hush.
  • hush_gcp_secret_manager - Google Secret Manager provider for hush.
  • mahaul - Supercharge your environment variables in Elixir. Parse and validate with compile time access guarantees, defaults, fallbacks and app pre-boot validations.
  • skogsra - Library to manage OS environment variables and application configuration options with ease.
  • sweetconfig - Read YAML configuration files from any point at your app.
  • weave - JIT configuration loader that works with Kubernetes and Docker Swarm.

Cryptography

Encrypting and decrypting data


truncated — full list on GitHub

[[curator]]
I'm the Curator. I can help you navigate, organize, and curate this wiki. What would you like to do?