{"id":15149906,"url":"https://github.com/42loco42/exmls","last_synced_at":"2025-09-29T19:30:23.744Z","repository":{"id":199689022,"uuid":"703502545","full_name":"42LoCo42/exmls","owner":"42LoCo42","description":"Elixir implementation of the MLS protocol","archived":true,"fork":false,"pushed_at":"2024-01-15T15:46:07.000Z","size":187,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-09-27T14:01:21.679Z","etag":null,"topics":["e2ee","elixir","elixir-library","end-to-end-encryption","message-layer-security","mls"],"latest_commit_sha":null,"homepage":"https://www.rfc-editor.org/rfc/rfc9420","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/42LoCo42.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-10-11T11:12:27.000Z","updated_at":"2024-01-15T15:46:25.000Z","dependencies_parsed_at":"2023-12-13T09:47:16.799Z","dependency_job_id":"7fac66cd-1a02-4ba7-b634-89b37aed3987","html_url":"https://github.com/42LoCo42/exmls","commit_stats":null,"previous_names":["42loco42/exmls"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42LoCo42%2Fexmls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42LoCo42%2Fexmls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42LoCo42%2Fexmls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42LoCo42%2Fexmls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/42LoCo42","download_url":"https://codeload.github.com/42LoCo42/exmls/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234650362,"owners_count":18866193,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["e2ee","elixir","elixir-library","end-to-end-encryption","message-layer-security","mls"],"created_at":"2024-09-26T14:01:32.716Z","updated_at":"2025-09-29T19:30:22.816Z","avatar_url":"https://github.com/42LoCo42.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"* NOTE - Abandoned\nI don't like Elixir after all, at least not for this kind of project.\n\nMy new MLS implementation is [[https://github.com/42LoCo42/cmls][CMLS]] (written, like the name suggests, in C).\n\n* ExMLS - MLS in Elixir\nThis is (or rather, is going to be) an implementation of the\nMessaging Layer Security (MLS) Protocol, as defined by the [[https://www.rfc-editor.org/rfc/rfc9420][RFC 9420]].\n\n** Why Elixir?\nBecause I always wanted an excuse to learn the language.\nAlso, there is currently no MLS implementation for Elixir (2023-10-11).\n\n** Current Status\n- all types (structs, enums, opaques) of the RFC\n- functions for array-based binary trees from [[https://www.rfc-editor.org/rfc/rfc9420#appendix-C][Appendix C]]\n- a [[https://github.com/oktaysm/hpke][HPKE library]] connected via [[file:nif/nif.c][NIFs]]\n\n** How to use this project\nThis project is designed to be used with [[https://nixos.org][Nix]] and optionally [[https://github.com/direnv/direnv][direnv]]\n(Use [[https://github.com/nix-community/nix-direnv][nix-direnv]] for a faster, persistent devshell).\nEnter a development shell automatically with ~direnv allow~ or manually with ~nix develop~.\nRun ~just~ to show all tasks:\n- ~build~: hermetically builds the final self-contained binary using Nix\n- ~check_use~: an internal check, don't use this directly\n- ~clean~: remove unused dependencies\n- ~docs~: generate HTML and EPUB project documentation\n- ~help~: list all tasks\n- ~run~: run the project in the development environment\n- ~shell~: enter an interactive shell that runs the project\n- ~test~: run the full testsuite (some code sanity checks, static analysis, regular \u0026 doctests).\n  Note that the first start of the static analyser will take a long time.\nTo run a task, run ~just taskname~, e.g. ~just build~.\n\n** Ultimate goals\n- a complete implementation of MLS, conforming to the RFC\n- an example chat client \u0026 server using the implementation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F42loco42%2Fexmls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F42loco42%2Fexmls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F42loco42%2Fexmls/lists"}