Elixir libraries
Web
- Mint - Functional HTTP client for Elixir with support for HTTP/1 and HTTP/2.
- Mint.WebSocket - HTTP/1 and HTTP/2 WebSocket support for Mint.
- Req - HTTP client with a focus on ease of use and composability, built on top of Finch.
- Finch - HTTP client with a focus on performance, built on top of Mint and NimblePool.
- Ash - Resource based framework for building Elixir applications.
- SiteEncrypt - Integrated certification via Let's encrypt for Elixir-powered sites.
- ExVCR - Record and replay HTTP interactions library for Elixir.
- WebSockex - Elixir Websocket Client.
- Tesla - Flexible HTTP client library for Elixir, with support for middleware and multiple adapters.
- Mojito - Easy-to-use Elixir HTTP client, built on the low-level Mint library.
- elixir-auth-google - Minimalist Google OAuth Authentication for Elixir Apps.
- Ace - HTTP web server and client, supports http1 and http2.
- Raxx - Interface for HTTP webservers, frameworks and clients.
- Corsica - Elixir library for dealing with CORS requests.
- Plug - Specification and conveniences for composable modules between web applications.
- Open API Spex - Open API Specifications for Elixir Plug applications.
- Quenya - Framework to build high-quality REST API applications based on extended OpenAPI spec.
- Bandit - HTTP server for Plug apps. (Article) (Talk)
- ElixirST - Session Types in Elixir.
- PardallMarkdown - Reactive publishing framework, filesystem-based with support for Markdown, nested hierarchies, and instant content rebuilding. Written in Elixir.
- OAuth2 - Elixir OAuth 2.0 Client Library.
- Joken - Elixir JWT library.
- Ueberauth - Elixir Authentication System for Plug-based Web Applications.
- Temple - HTML DSL for Elixir and Phoenix.
- NimbleTOTP - Tiny Elixir library for time-based one time passwords (TOTP).
- Canary - Elixir authorization and resource-loading library for Plug applications.
- Riverside - Plain WebSocket Server Framework for Elixir.
- ElixirRetry - Simple Elixir macros for linear retry, exponential backoff and wait with composable delays.
- Webhoox - Deal with inbound webhooks.
- Hologram - Full stack isomorphic Elixir web framework that can be used on top of Phoenix.
- EasyHTML - Makes it easy to work with HTML in Elixir.
- Riptide - Elixir framework for creating real time applications.
- LetMe - Authorization library for Elixir.
- RemoteIp - Plug to rewrite the Plug.Conn's remote_ip based on forwarding headers.
DB
- Ecto - Toolkit for data mapping and language integrated query for Elixir. (Brief Guide to Ecto) (Tweet)
- TypedEctoSchema - Library to define Ecto schemas with typespecs without all the boilerplate code.
- Rummage.Ecto - Search, Sort and Pagination for ecto queries.
- Paper Trail - Track and record all the changes in your database with Ecto. Revert back to anytime in history.
- EctoMorph - Morphs your Ecto capabilities.
- DBConnection - Database connection behavior.
- Hierarch - Tree structure & hierarchy for ecto models with ltree (Postgres).
- Excellent Migrations - Detect potentially dangerous or destructive operations in your database migrations.
- Params - Easily define parameter structure and validate/cast with Ecto.Schema.
- Postgrex - PostgreSQL driver for Elixir.
- CubDB - Embedded key-value database written in the Elixir language.
- Elixir driver for EdgeDB
- Khepri - Tree-like replicated on-disk database library for Erlang and Elixir. (HN)
- Ecto SQLite3 adapter
- Honeydew - Job Queue for Elixir. Clustered or Local. Straight BEAM. Optional Ecto.
- EctoJob - Transactional job queue built with Ecto and GenStage.
- TaskBunny - Background processing application written in Elixir and uses RabbitMQ as a messaging backend.
- litestream - Wraps Litestream so that SQLite databases can be easily backed up.
- Paper Trail - Track and record all the changes in your database with Ecto. Revert back to anytime in history.
- ExAudit - Ecto auditing library that transparently tracks changes and can revert them.
- DataSchema - Declarative schemas for data transformations.
- Fields - Collection of commonly used fields implemented as custom Ecto types with validation, sanitizing and encryption/hashing.
- Spear - Sharp EventStoreDB 20+ client backed by Mint.
- Yesql - Elixir library for using SQL.
- Etso - Ecto 3 adapter allowing use of Ecto schemas held in ETS tables.
- Triplex - Simple and effective way to build multitenant applications on top of Ecto.
- Xandra - Fast, simple, and robust Cassandra driver for Elixir.
- Pointers - One foreign key to rule them all and in the darkness, bind them.
- Fly Postgres - Library for working with local read-replica postgres databases and performing writes through RPC calls to other nodes in the primary Fly.io region.
- MyXQL - MySQL 5.5+ driver for Elixir.
- Apq - Support for Automatic Persisted Queries in Absinthe.
- Timescale - TimescaleDB made easy with Ecto.
- AshPostgres - PostgreSQL data layer for the Ash Framework.
- DataLoader - Easy way efficiently load data in batches.
- Ecto.DevLogger - Alternative logger for Ecto queries.
- Ecto.ERD - Mix task for generating Entity Relationship Diagram from Ecto schemas available in your project.
- Flop - Filtering, ordering and pagination for Ecto.
- EctoDbg - Utility to format and output Ecto queries.
- Clickhousex - ClickHouse database driver to connect with Elixir application by HTTP interface.
- EctoShorts - Library focused around making Ecto easier to use in an application and helping to write shorter code.
- Z! - Schema description and data validation library.
- Cachex - Powerful caching library for Elixir with support for transactions, fallbacks and expirations.
- TigerBeetlex - Elixir client for TigerBeetle.
Test
- Mox - Library for defining concurrent mocks in Elixir.
- Hammox - Automated contract testing for Elixir functions and mocks.
- PropCheck - Property based testing for Elixir.
- Mock - Mocking library for Elixir language.
- ExMachina - Create test data for Elixir applications.
- Patch - Ergonomic Mocking for Elixir.
- StreamData - Elixir library for data generation and property-based testing.
- Machete - Literate test matchers for ExUnit.
- Mneme - Semi-automated snapshot testing for elixir.
- Mimic - Mocking library for Elixir.
ML
- Axon - Nx-powered Neural Networks. (HN)
- Scholar - Machine learning tools built on top of Nx.
- Tensor - Adds support for Vectors, Matrixes and higher-dimension Tensors to Elixir.
- Evision - OpenCV-Erlang/Elixir binding.
CLI
- Owl - Toolkit for writing command-line user interfaces. (Docs) (HN)
- Vexil - Elixir flag parser that does just enough.
- Artificery - Toolkit for creating terminal user interfaces in Elixir.
- ExTermbox - Low-level termbox bindings for Elixir.
- ExCLI - User friendly CLI apps for Elixir.
- CliSpinners - Spinnig Animations for Command Line Applications.
Math
- Statistics - Statistical functions and distributions for Elixir.
Livebook
- Kino - Client-driven interactive widgets for Livebook.
Crypto
- Cloak - Elixir encryption library designed for Ecto.
GraphQL
- BridgeEx - Library to build bridges to GraphQL services.
- AbsintheCache - Caching Absinthe GraphQL queries.
- CommonGraphqlClient - Elixir GraphQL Client with HTTP and WebSocket Support.
- GQL - Simple GraphQL client for Elixir.
- Absinthe ErrorPayload - Bridges the gap between Ecto and Absinthe for mutation payload.
- AbsintheClient - GraphQL client designed for Elixir Absinthe.
- AshGraphql - Absinthe backed graphql API extension for the Ash Framework.
- AshThrift - Thrift extension for the Ash framework.
WASM
- Wasmtube - Bridging library that allows us to communicate between Elixir and WASM using JSON.
Other
- GraphQL toolkit for Elixir
- Sage - Dependency-free tool to run distributed transactions in Elixir, inspired by Sagas pattern.
- Timex - Complete date/time library for Elixir projects.
- Core Scenic Library - Client application library written directly on the Elixir/Erlang/OTP stack. With it you can build applications that operate identically across all supported operating systems.
- Benchee - Easy and extensible benchmarking in Elixir providing you with lots of statistics.
- Opus - Framework for pluggable business logic components.
- Pow - Robust, modular, and extendable user authentication system.
- Rihanna - High performance postgres-backed job queue for Elixir.
- Broadway - Concurrent and multi-stage data ingestion and data processing with Elixir. (Web)
- Goth - Elixir package for Oauth authentication via Google Cloud APIs.
- Timber - Great Elixir logging made easy.
- Parent - Support for custom parenting of processes.
- Nebulex - In-Process and Distributed Cache Toolkit for Elixir.
- FunWithFlags - Elixir feature flag library.
- Scientist - Library for carefully refactoring critical paths in your elixir application.
- libgraph - Graph data structure library for Elixir projects.
- GenStage - Producer and consumer actors with back-pressure for Elixir.
- Elixir RakNet - Elixir implementation of the RakNet/RakLib networking communication protocol.
- CI - CI/CD toolkit as an Elixir library.
- Waffle - Flexible file upload and attachment library for Elixir.
- Oban - Robust job processing in Elixir, backed by modern PostgreSQL. (Web)
- Nx - Multi-dimensional tensors Elixir lib with multi-staged compilation (CPU/GPU). (Article) (HN) (Lobsters) (Introducing Nx Talk) (HN)
- Boundary - Manage and restrain cross-module dependencies in Elixir projects.
- Poison - Incredibly fast, pure Elixir JSON library.
- Exq - Job processing library for Elixir - compatible with Resque / Sidekiq.
- Twirp - Elixir implementation of the twirp RPC framework.
- libcluster - Automatic cluster formation/healing for Elixir applications.
- Horde - Distributed Supervisor and Registry backed by DeltaCrdt.
- libring - Fast consistent hash ring for Elixir.
- Aja - Extension of the Elixir standard library focused on data structures, data manipulation and performance.
- Schoolbus - Manage one or more PubSub instances using the Elixir registry.
- Msgpax - Fast and comprehensive library for serializing and deserializing Elixir terms using the MessagePack format.
- Manifold - Fast batch message passing between nodes for Erlang/Elixir.
- FastGlobal - Fast no copy globals for Elixir & Erlang.
- Wasmex - Execute WebAssembly / WASM from Elixir.
- Recase - Convert strings to any case.
- Regulator - Adaptive concurrency limits around external resources.
- Delta - Simple yet expressive format to describe contents and changes.
- Instruments - Simple and Fast metrics for Elixir.
- Para - Declarative way to parse and validate parameters.
- Norm - Data specification and generation.
- Algae - Bootstrapped algebraic data types for Elixir.
- VegaLite - Elixir bindings for Vega-Lite.
- Elixir Thrift
- Uncharted - Simple Elixir charting library that generates easy to customize charts.
- Rustic Result - Result monad for Elixir inspired by Rust Result type. (HN)
- Explorer - Dataframes for Elixir. (Intro)
- Burrito - Cross-Platform Elixir Deployments.
- ex_cldr - Elixir implementation of CLDR/ICU.
- TypedStruct - Library for defining structs with a type without writing boilerplate code.
- CSV - CSV Decoding and Encoding for Elixir.
- Daat - Parameterized modules for Elixir.
- Expat - Reusable, composable patterns across Elixir libraries.
- Vex - Data Validation for Elixir.
- NimbleParsec - Simple and fast library for text-based parser combinators.
- Elasticlunr - Full-text search library for Elixir. (HN)
- Witchcraft - Monads and other dark magic for Elixir. (Article) (HN) (Lobsters)
- Domo - Library to validate values of nested structs with their type spec t() and associated precondition functions.
- Ink - Logger backend that logs JSON.
- MuonTrap - Keep programs, deamons, and applications launched from Erlang and Elixir contained and well-behaved.
- StreamSplit - Split a stream into a head and tail, without iterating the tail.
- Unicode Set - Unicode set parsing, expansion, macros and guards for Elixir.
- CAStore - Up-to-date certificate store for Elixir.
- NimblePool - Tiny resource-pool implementation for Elixir.
- SSHKit - Elixir toolkit for performing tasks on one or more servers, built on top of Erlang’s SSH application.
- Quark - Common combinators for Elixir.
- Protox - Fast, easy to use and 100% conformant Elixir library for Google Protocol Buffers.
- Flow - Computational parallel flows on top of GenStage. (Intro to Elixir Flow)
- Jsonrs - Rust powered JSON library for Elixir.
- Semaphore - Fast semaphore using ETS.
- MJML - Elixir NIF bindings for the MJML Rust implementation.
- gRPC Elixir - Elixir implementation of gRPC.
- Focus - Lightweight, pure Elixir functional optics.
- Envy - Elixir library to load environment variables from .env and environment specific env files.
- ExWaiter - Helper for waiting on asynchronous conditions to be met.
- Rollbax - Exception tracking and logging from Elixir to Rollbar.
- Xray - Academic exploration of strings and encodings in Elixir.
- PromEx - Elixir Prometheus metrics collection library built on top of Telemetry with accompanying Grafana dashboards.
- Grizzly - Elixir library for Z-Wave.
- Brex.Result - Provides tools to handle three common return values in Elixir.
- Combination - Simple combinatorics library providing combination and permutation.
- Mogrify - Image processing in Elixir.
- Jetstream - Elixir client for NATS Jetstream.
- ExImageInfo - Elixir library to parse images (binaries) and get the dimensions (size), detected mime-type.
- NifIo - Rustler example. Implements file IO in a NIF.
- Hush - Runtime configuration loader for Elixir applications.
- Stripe for Elixir
- Solid - Liquid template engine in Elixir.
- MerkleTree - Merkle Tree implementation in pure Elixir.
- Entity Component System
- Blex - Fast Bloom filter with concurrent accessibility, powered by :atomics module.
- Talos - Elixir parameter validation library. Simple and extensible.
- Faker - Pure Elixir library for generating fake data.
- Tarearbol - Lightweight task manager, allowing retries, callbacks, assurance that the task succeeded, and more.
- Telemetria - Helper application that simplifies and standardizes telemetry usage.
- Swarm - Easy clustering, registration, and distribution of worker processes for Erlang/Elixir.
- Decimal - Arbitrary precision decimal arithmetic.
- Ravenx - Notification dispatch library for Elixir applications.
- Notifiex - Simple Elixir library for sending notifications to various messaging services.
- Qrusty - Elixir QR Code library that leverages precompiled Rust.
- Lens - Utility for working with nested data structures.
- MixInstallExamples - Collection of simple Elixir scripts that are using Mix.install/2.
- JsonDiffEx - Diff and patch for JSON in Elixir, works really well and is really fast.
- Pexelmatch - Pure Elixir port of Pixelmatch.
- Honey Potion - Writing eBPF with Elixir.
- Sippet - Elixir library designed to be used as SIP protocol middleware.
- Vapor - Runtime configuration system for Elixir.
- NimbleOptions - Tiny library for validating and documenting high-level options.
- Scribe - Pretty print tables of Elixir structs and maps.
- Queuetopia - Persistent blocking job queue built with Ecto.
- GenRegistry - Simple and efficient local Process Registry.
- Rambo - Run your command. Send input. Get output.
- Rexbug - Thin Elixir wrapper for the redbug Erlang tracing debugger.
- Mux Elixir - Official Mux API wrapper for Elixir projects, supporting both Mux Data and Mux Video.
- StreamGzip - Gzip or gunzip an Elixir stream.
- Uniform - Write less boilerplate and reuse more code in your portfolio of Elixir apps.
- Athena - Event Logistics Management.
- Quantum - Cron-like job scheduler for Elixir.
- Crontab - Elixir library for parsing, writing, and calculating Cron format strings.
- ExZstd - Elixir binding of the Zstandard library.
- Spark - Tooling for building DSLs in Elixir.
- FunLand - Algebraic Data Types for Elixir: Both functional and fun.
- TypeCheck - Fast and flexible runtime type-checking for your Elixir projects.
- MapDiff - Calculates the difference between two (nested) maps.
- Arrays - Library to work with well-structured Arrays with fast random-element-access for Elixir.
- CapturePipe - Pipe-macro for Elixir that allows bare function captures.
- protobuf-elixir - Pure Elixir implementation of Google Protobuf.
- Goal - Parameter validation library based on Ecto.
- OpenTelemetry Erlang - OpenTelemetry instrumentation for Erlang & Elixir.
- Striped - Library to interface with the Stripe API.
- TelemetryDecorator - Function decorator for telemetry.
- Image - Image processing for Elixir.
- Tokenizers - Elixir bindings for Hugging Face Tokenizers.
- Vix - Elixir extension for libvips image processing library.
- ExCmd - Elixir library to run external programs and to communicate with back pressure.
- Exile - Alternative to ports for running external programs. It provides back-pressure, non-blocking io, and tries to fix ports issues.
- Exq Scheduler - Cron like job scheduler for Exq, it's also compatible with Sidekiq and Resque.
- Make - Make compiler for Mix.
- Benchee - Easy and extensible benchmarking in Elixir providing you with lots of statistics.
- Zigler - Inline NIF support for Zig.
- KinoEcto - Ecto utilities for Livebook.
- ContEx - Charting and graphing library for Elixir.
- Definject - Unobtrusive Dependency Injector for Elixir.
- Jaxon - Streaming JSON parser for Elixir.
- Matcha - First-class match specifications for Elixir.
- mix_deploy - Mix tasks to deploy an Elixir release to servers (cloud instance or bare metal, automated deploy).
- Wallaby - Concurrent browser tests for your Elixir web apps.
- Toolshed - Toolshed of IEx helpers.
- Briefly - Simple, robust temporary file support for Elixir.
- Tria - Optimizing compiler for Elixir.
- Pathex - Library for performing fast actions with nested data structures in Elixir.
- Assent - Multi-provider authentication framework.
- ErrorMessage - Simplify error systems.
- Mix Unused - Find unused functions in your project.
- LoggerBackends - Logger backends functionality for Elixir.
- Mahaul - Parse and validate your environment variables easily in Elixir.
- Packmatic - Generates Zip streams by aggregating File or URL Sources.
- Beaver - LLVM/MLIR Toolkit in Elixir and Zig.
- LoggerJSON - JSON console backend for Elixir Logger.
- Recode - Linter with autocorrection and a refactoring tool.
- Haystack - Simple, extendable full-text search engine written in Elixir.
- Hammer - Elixir rate-limiter with pluggable backends.
- Exonerate - JSONSchema -> Elixir compiler.
- Openai.ex - OpenAI API Wrapper written in Elixir.
- Membrane Multimedia Framework
- schematic - Library for data specification, validation, and transformation.
- Enumancer - Elixir macros to effortlessly define highly optimized Enum pipelines.
- Iter - Fast compile-time optimized alternative to the Enum and Stream modules.
- Styler - Elixir code-style enforcer that will just FIFY instead of complaining.
- Spandex - Platform agnostic tracing library.
- Cocktail - Elixir date recurrence library based on iCalendar events.
- Validate - Elixir input and request validation.
- Durable Named Actors (DNA) - Powerful framework for building stateful distributed applications.
- NimbleCSV - Simple and fast CSV parsing and dumping library for Elixir.
Links
- Hex packages - Package manager for the Erlang ecosystem.
- ExDoc - Tool to generate documentation for your Elixir projects. (Tweet)
- Log all the things - features of Elixir 1.11 Logger application (2022) (Lobsters)
- Introduction to Telemetry in Elixir (2022) (Lobsters)
- A Guide to Secure Elixir Package Updates (2022)
- How EEx Turns Your Template Into HTML (2022)
- Elixir runtime configuration trap (2022)
- Lettuce - Code watcher for elixir projects.
- The Curious Case of String.slice/3 (2022)
- Safe Ecto Migrations - Non-exhaustive guide on common migration recipes and how to avoid trouble.
- GitHooks - Add git hooks to Elixir projects.
- Introduction to Mix
- Deploying Oban Pro/Web with Docker and Fly.io (2022)
- Rustler Precompiled - Use precompiled NIFs from trusted sources in your Elixir code.
- Building a Cache in Elixir (2022)
- Elixir Without Ecto - Dynamic Queries (2022)
- Doctor - Ensure that your Elixir project documentation is healthy.
- Elixir and Rust is a good mix (2023) (HN)
- The Comprehensive Guide to Elixir's List Comprehension (2022) (HN)
- A Breakdown of HTTP Clients in Elixir (2023) (HN)
- Unpacking Elixir: Concurrency (2023) (HN)