| additional_search_terms |
|
||||||||
|---|---|---|---|---|---|---|---|---|---|
| layout | installtoolsall | ||||||||
| minutes_to_complete | 20 | ||||||||
| multi_install | true | ||||||||
| multitool_install_part | false | ||||||||
| official_docs | https://memgraph.com/docs/getting-started/install-memgraph | ||||||||
| test_images |
|
||||||||
| test_maintenance | true | ||||||||
| title | Memgraph on Arm | ||||||||
| tool_install | true | ||||||||
| weight | 1 |
Memgraph is an open-source, in-memory graph database built for real-time streaming and analytical workloads. It is compatible with the Cypher query language and the Bolt protocol used by Neo4j drivers, so existing Cypher/Bolt applications can connect without changes.
Memgraph publishes native aarch64 Linux packages and multi-architecture Docker images, so it runs unmodified on Arm-based hardware.
Graph algorithms parallelize well and scale with core count, and Arm servers often have a meaningful cost-per-query advantage over equivalent x86 instances that make them an increasingly popular fit for graph workloads.
This guide covers two installation paths:
- Docker: the quickest way to try Memgraph, and the portable option for macOS, Windows, and any Linux distribution.
- Native Linux packages: a good choice when Docker is unavailable or not preferred, or when you want to benchmark Memgraph directly on the host.
At the end of each path, you will run a few Cypher queries with mgconsole, then optionally add MAGE, Memgraph’s graph-algorithm and query-module extension library.
Confirm you are using an Arm computer with 64-bit Linux by running:
uname -mThe output should be:
aarch64
If you see a different result, you are not using an Arm computer running 64-bit Linux.
Docker is the simplest way to run Memgraph on any operating system. The official images on Docker Hub are multi-arch manifests, so docker pull automatically selects the arm64 variant on Arm hosts.
If Docker is not already installed, follow the Docker install guide.
The core image is memgraph/memgraph, which includes the Memgraph database plus the bundled mgconsole CLI. Start it with:
docker run -p 7687:7687 -p 7444:7444 --name memgraph memgraph/memgraph:3.10.1The container exposes two ports:
7687: the Bolt port used bymgconsole, Memgraph Lab, and every Bolt-compatible driver.7444: streams Memgraph logs to Memgraph Lab for real-time monitoring.
To confirm that the Arm image was pulled, inspect it:
docker inspect memgraph/memgraph:3.10.1 --format '{{.Architecture}}'The expected output is:
arm64
| Image | Includes |
|---|---|
memgraph/memgraph |
Memgraph database + mgconsole CLI. Start here! |
memgraph/memgraph-mage |
Memgraph database + mgconsole + MAGE, a library of advanced graph algorithms and query modules. |
memgraph/mgconsole |
Standalone CLI client. |
memgraph/lab |
Memgraph Lab web UI. |
Start with memgraph/memgraph to get the database itself. If you later want PageRank, community detection, node embeddings, NetworkX integration, or other advanced query modules, see the MAGE section below.
The memgraph/memgraph:3.10.1 image ships with mgconsole already inside the container:
docker exec -it memgraph mgconsoleYou should see a prompt similar to:
mgconsole X.X
Connected to 'memgraph://127.0.0.1:7687'
Type :help for shell usage
Quit the shell by typing Ctrl-D(eof) or :quit
memgraph>
Skip to the example queries section to try it out.
Memgraph provides native aarch64 packages for the following distributions:
- Ubuntu 24.04
- Debian 12 and Debian 13
- Fedora 42
Choose the package that matches your distribution from the Memgraph Download Hub. For convenience, direct download URLs for every supported platform are listed in the direct download links page.
Download the arm64 .deb package. For Ubuntu 24.04 on Arm:
wget https://download.memgraph.com/memgraph/v3.10.1/ubuntu-24.04-aarch64/memgraph_3.10.1-1_arm64.debInstall the package:
sudo dpkg -i memgraph_3.10.1-1_arm64.debIf dpkg reports missing dependencies, resolve them with:
sudo apt-get install -fDownload the Fedora aarch64 .rpm:
wget https://download.memgraph.com/memgraph/v3.10.1/fedora-42-aarch64/memgraph-3.10.1_1-1.aarch64.rpmInstall it:
sudo dnf install ./memgraph-3.10.1_1-1.aarch64.rpmThe package installs a systemd service. Check its status:
sudo systemctl status memgraphIf it is not already running, start it and enable it on boot:
sudo systemctl start memgraph
sudo systemctl enable memgraphInspect the startup log to confirm the version:
sudo journalctl --unit memgraph --no-pager | headYou should see a line similar to:
You are running Memgraph v3.10.1
The configuration file lives at /etc/memgraph/memgraph.conf. After editing it, restart the service with sudo systemctl restart memgraph. The full configuration reference is in the Memgraph configuration docs.
Memgraph allocates many small memory mappings, and on larger graphs the default Linux limit (vm.max_map_count = 65530) can be hit. This typically surfaces as a hung transaction, munmap errors, or bad_alloc crashes. Memgraph recommends roughly one memory map area per 128 KB of system RAM. The full table and background are in the system configuration docs.
For an 8–32 GB host, 262144 is the recommended starting value. Set it for the current session:
sudo sysctl -w vm.max_map_count=262144To persist the change across reboots, add it to /etc/sysctl.conf or a drop-in under /etc/sysctl.d/, then reload:
echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf
sudo sysctl -pVerify the new value:
sysctl vm.max_map_countThis setting is applied on the Linux host, so it is relevant for both the native and Docker installs. Docker containers inherit the host's vm.max_map_count.
mgconsole is Memgraph’s command-line client for executing Cypher queries. It is already included in the Memgraph Linux packages and in the memgraph/memgraph:3.10.1 and memgraph/memgraph-mage:3.10.1 Docker images, so you only need a separate install if you want to run it from a different machine.
To install it standalone, download the binary for your platform from the Memgraph Download Hub, or pull the Docker image:
docker run -it memgraph/mgconsole:latest --host <memgraph-host> --port 7687Full mgconsole documentation, including all command-line flags, is available in the CLI docs.
With Memgraph running either in Docker or as a native service, you can send queries non-interactively through mgconsole.
Create two nodes and a relationship:
echo "CREATE (a:Person {name: 'Alice'})-[:KNOWS]->(b:Person {name: 'Bob'});" \
| mgconsole --host localhost --port 7687Read them back:
echo "MATCH (n) RETURN n;" | mgconsole --host localhost --port 7687The expected output is a two-row tabular result listing the Alice and Bob nodes.
Count the nodes:
echo "MATCH (n) RETURN count(n) AS node_count;" \
| mgconsole --host localhost --port 7687Expected output:
+------------+
| node_count |
+------------+
| 2 |
+------------+
Clear the graph:
echo "MATCH (n) DETACH DELETE n;" | mgconsole --host localhost --port 7687Re-running the count confirms the graph is empty:
echo "MATCH (n) RETURN count(n) AS node_count;" | mgconsole --host localhost --port 7687Expected output:
+------------+
| node_count |
+------------+
| 0 |
+------------+
If you prefer an interactive session, run mgconsole without piping input:
mgconsole --host localhost --port 7687If you are using the Docker install, substitute docker exec -it memgraph mgconsole for mgconsole in any of the commands above.
Memgraph’s strength is pattern matching. Try a slightly richer graph:
mgconsole --host localhost --port 7687 <<'EOF'
CREATE (alice:Person {name: 'Alice'})-[:KNOWS]->(bob:Person {name: 'Bob'}),
(bob)-[:KNOWS]->(carol:Person {name: 'Carol'}),
(alice)-[:KNOWS]->(dave:Person {name: 'Dave'});
MATCH (a:Person {name: 'Alice'})-[:KNOWS*1..2]->(friend)
RETURN DISTINCT friend.name AS friend_of_alice;
EOFThis returns everyone reachable from Alice via one or two KNOWS hops.
MAGE is an open-source library that extends Memgraph with advanced graph algorithms and query modules, such as PageRank, community detection, shortest paths, node embeddings, NetworkX integration, and more, all callable from Cypher. MAGE is a separate add-on. If you want these capabilities, install the MAGE variant described below.
Switch from the base image to memgraph/memgraph-mage:3.10.1, which bundles MAGE on top of the same database:
docker stop memgraph && docker rm memgraph
docker run -p 7687:7687 -p 7444:7444 --name memgraph memgraph/memgraph-mage:3.10.1Confirm that the MAGE algorithms are loaded:
echo "CALL mg.procedures() YIELD name WITH name WHERE name STARTS WITH 'pagerank' RETURN name;" \
| docker exec -i memgraph mgconsoleYou should see entries such as pagerank.get.
Memgraph provides a prebuilt MAGE arm64 .deb package for Ubuntu 24.04. It is installed on top of an existing Memgraph package install:
wget https://download.memgraph.com/memgraph-mage/v3.10.1/ubuntu-24.04/memgraph-mage_3.10.1-1_arm64.deb
sudo dpkg -i memgraph-mage_3.10.1-1_arm64.deb
sudo systemctl restart memgraphFor other distributions, or to build MAGE from source with custom algorithms, follow the MAGE install guide.
With MAGE loaded, you can call any of its algorithms from Cypher. For example, compute PageRank on the small graph created earlier:
echo "CALL pagerank.get() YIELD node, rank RETURN node, rank ORDER BY rank DESC;" \
| mgconsole --host localhost --port 7687The complete algorithm catalog is documented at Available algorithms.
- Explore the Cypher query language and the Memgraph data model.
- Install the visual Memgraph Lab for browsing and visualizing graphs.
- Pick a client library for Python, Go, Rust, Java, JavaScript, or C#.
- Join the Memgraph community on Discord.
You are now ready to build and query graphs with Memgraph on Arm.