Skip to content

Guide · Open source

How to use Anoma: build, run and follow the reference node

Updated · written with AI from the project's own documentation and checked against our catalogue data

Anoma is an open-source reference implementation of the Anoma protocol, written in Elixir and released under the MIT licence. It is software for running an Anoma node, and this guide shows you how to start one from a pre-built release or compile it from source. It is aimed at developers and engineers, and it does not cover an end-user app, which the project has not yet documented.

Anomaanoma/anoma · ★ 33.6k · MIT

Quick start

  1. 1Check prerequisites. Install Elixir, Erlang/OTP, Rust and the Protobuf compiler, following the links in the README.
  2. 2Install the protobuf plugin. Run mix escript.install hex protobuf 0.11.0 and confirm protoc-gen-elixir --version prints 0.11.0.
  3. 3Clone the repository. Get the anoma source from GitHub and change into the repository root.
  4. 4Fetch dependencies. Run mix deps.get to download the project's dependencies.
  5. 5Compile. Run mix compile. If enacl or cairo fail, use the known-issue fixes in the README.
  6. 6Start an instance. Run iex -S mix for an interactive shell, or mix run --no-halt for a non-interactive run.

What Anoma is and what it is not

Anoma is an implementation of the Anoma protocol. The protocol's specifications are published separately at specs.anoma.net, and the README points there for a description of what the protocol does. The README itself does not explain the protocol in plain terms for end users, so read the specification before deciding whether it fits your work.

The README says user documentation is still 'Coming Soon'. Expect to read code, contributor docs and the specification rather than a finished end-user guide.

  • Reference implementation of the Anoma protocol
  • Software for running an Anoma node
  • Licence: MIT; language: Elixir

Choose between a pre-built release and building from source

The README offers two routes. The quickest is to download a release for your platform from the project's releases page, extract it and run the binary. Release dependencies differ by platform: on macOS you need the Command Line Developer Tools, MacPorts or an equivalent package manager, ncurses, and OpenSSL; on Linux and macOS OpenSSL comes from your package manager; on Windows the README says OpenSSL is not required.

Building from source is the route for contributors. It requires Elixir, Rust, the Protobuf compiler and the Elixir protobuf plugin.

  • Pre-built: download the release for your platform, extract it, run bin/anoma
  • From source: install build dependencies, then compile with Mix

Install the build dependencies for source builds

Install Elixir and Rust using the instructions linked from the README (elixir-lang.org/install.html and rust-lang.org/tools/install). Install Protobuf using the gRPC protoc installation guide. The README then asks for the Elixir protobuf plugin, protoc-gen-elixir, at version 0.11.0. The README says that version matters.

After installing the plugin, make sure it is on your path. If you use asdf, run asdf reshim. Otherwise add the Mix escripts directory to your shell profile. Verify the plugin with the command below; it should print 0.11.0.

  • macOS: install Command Line Developer Tools, then brew install elixir cmake protobuf git
  • Ubuntu/Debian: apt install cmake libwxgtk3.2-dev
  • Windows: install Build Tools for Visual Studio 2022 (Visual C++ build tools) and PowerShell
mix escript.install hex protobuf 0.11.0 protoc-gen-elixir --version

Fetch dependencies, compile and start a node

From the repository root, fetch the dependencies and compile the project. Then start an instance. The README offers two options: an interactive shell, which is what the contributor guide recommends for getting the most out of the tool, or a non-interactive run.

If you prefer Docker, the README describes building an image from the repository root and running it with host networking. Docker is needed for both building and running the image.

  • Interactive shell: iex -S mix
  • Non-interactive: mix run --no-halt
  • Docker: docker build -t <IMAGE> . then docker run -it --network host <IMAGE> <SUBCOMMAND>
mix deps.get mix compile iex -S mix

Fix common build errors

The README lists two known issues. If you see 'Could not compile dependency :enacl' on some macOS or Linux versions, the README suggests checking out the branch mariari/no-libsodium, then running mix clean, mix deps.get and mix compile again.

If you see 'could not compile dependency :cairo', the Rust toolchain is the likely cause. The README suggests adding Rust 1.76.0 with rustup, noting that macOS users may try the aarch64-apple-darwin variant.

  • enacl error: switch to the no-libsodium branch, then clean and recompile
  • cairo error: install Rust 1.76.0 and retry the compile
git checkout mariari/no-libsodium mix clean mix deps.get mix compile rustup toolchain add 1.76.0

Contribute and follow development

The README says work is merged into base on a bi-weekly schedule. New code should be based on base, and pull requests are merged into next or main before appearing in the next scheduled release. Read the contributor's guide in the documentation folder for details about the codebase, and the git section for the workflow.

To follow progress, the README points to the project overview board, the What's Cooking board, the research forums (including the architecture posts, around two per week), and the issues and pull requests pages.

  • Project overview board for assigned work
  • What's Cooking board for topic progress in a cycle
  • Research forums for direction and architecture posts
  • Issues and pull requests for new incoming work

What people use it for

  • Reading the reference implementation to see how the Anoma protocol is coded in Elixir
  • Building a local node to test changes you plan to contribute
  • Studying peer-to-peer node software and its build tooling
  • Following the protocol's architecture through the research forum posts

Frequently asked questions

Is Anoma free to use?

Anoma is released under the MIT licence, as stated in the project's listing. The licence allows you to read, build and modify the code under its terms.

What do I need to install Anoma?

To build from source you need Elixir, Erlang/OTP, Rust, the Protobuf compiler and the protoc-gen-elixir plugin at version 0.11.0. The README also lists platform-specific tools such as cmake and libwxgtk3.2-dev on Ubuntu/Debian.

Is there an Anoma app for end users?

Not yet. The README says both developer and user documentation are 'Coming Soon', so Anoma is currently suited to developers rather than finished end-user apps.

Why does mix compile fail with enacl?

The README says the enacl package can fail to compile on some macOS and Linux versions. Its suggested workaround is to check out the mariari/no-libsodium branch, then run mix clean, mix deps.get and mix compile.

Why does the cairo dependency fail to compile?

The README says the Rust compiler can be picky about the cairo dependency, usually because of an incompatible Rust toolchain. It suggests installing Rust 1.76.0 with rustup and retrying.

Is Anoma stable enough for production?

The README does not promise production stability. It notes bi-weekly releases and lists known build issues, so teams needing a stable production system should look elsewhere for now.

New agent skills, repos and AI tools — every week

The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.

Our verdict

Anoma suits developers who want to read, build or contribute to a reference implementation of the Anoma protocol, especially those interested in Elixir node software. It is not a finished end-user app, and teams that need a stable production system should wait or choose a different tool, given the bi-weekly release cadence and the known build issues.

Install options & downloads