The best-benchmarked open-source AI memory system. And it's free.
CLI for running a decentralized AI agent node
GaiaNet node is a shell-based install and runtime setup for a decentralized AI agent service. It pulls down the node stack, model files, and vector database, then starts the node and its API server from the `gaianet` command. You can also change the model, prompt, port, and Qdrant snapshot through `gaianet config` before reinitializing.
Builders who want to host and configure their own AI agent node.
You can run a self-hosted agent service with your own model, context, and knowledge base instead of relying on a fixed hosted setup.
What it does
One-line installer
Downloads and installs the default node stack on Mac, Linux, or Windows WSL from `install.sh`.
Node initialization
`gaianet init` downloads the chat model, embedding model, and Qdrant snapshot defined in `config.json`.
Start and stop commands
`gaianet start` launches Qdrant and the LlamaEdge API server, and `gaianet stop` shuts them down.
Config updates
`gaianet config` changes the chat model, embedding model, prompt template, ports, domain, and RAG settings before reinitializing.
Docker support
`docker/Dockerfile`, CUDA variants, and `docker/run.sh` provide containerized node setup.
Test requests
`tests/chat.hurl`, `tests/embeddings.hurl`, and `tests/rag.hurl` exercise the node API endpoints.
How to get it
- 1Install the default node software stack with a single line of command on Mac, Linux, or…
curl -sSfL 'https://github.com/GaiaNet-AI/gaianet-node/releases/latest/download/install.sh' | bash
- 2Initialize the node. It will download the model files and vector database files…
gaianet init
- 3Start the node.
gaianet start
- 4The script prints the official node address on the console as follows. You can open a…
... ... https://0xf63939431ee11267f4855a166e11cc44d24960c0.us.gaianet.network
- 5To stop the node, you can run the following script.
gaianet stop
- 6Run
curl -sSfL 'https://raw.githubusercontent.com/GaiaNet-AI/gaianet-node/main/install.sh' | bash
README
Run your own GaiaNet node
Japanese(日本語) | Chinese(中文) | Korean(한국어) | Turkish (Türkçe) | Farsi(فارسی) | Arabic (العربية) | Indonesia | Russian (русскийة) | Portuguese (português) | We need your help to translate this README into your native language.
Like our work? ⭐ Star us!
Checkout our official docs and a Manning ebook on how to customize open source models.
Quick start
Install the default node software stack with a single line of command on Mac, Linux, or Windows WSL.
curl -sSfL 'https://github.com/GaiaNet-AI/gaianet-node/releases/latest/download/install.sh' | bash
Then, follow the prompt on your screen to set up the environment path. The command line will begin with
source.
Initialize the node. It will download the model files and vector database files specified in the $HOME/gaianet/config.json file, and it could take a few minutes since the files are large.
gaianet init
Start the node.
gaianet start
The script prints the official node address on the console as follows. You can open a browser to that URL to see the node information and then chat with the AI agent on the node.
... ... https://0xf63939431ee11267f4855a166e11cc44d24960c0.us.gaianet.network
To stop the node, you can run the following script.
gaianet stop
Install guide
curl -sSfL 'https://raw.githubusercontent.com/GaiaNet-AI/gaianet-node/main/install.sh' | bash
The output should look like below:
[+] Downloading default config file ...
[+] Downloading nodeid.json ...
[+] Installing WasmEdge with wasi-nn_ggml plugin ...
Info: Detected Linux-x86_64
Info: WasmEdge Installation at /home/azureuser/.wasmedge
Info: Fetching WasmEdge-0.13.5
/tmp/wasmedge.2884467 ~/gaianet
######################################################################## 100.0%
~/gaianet
Info: Fetching WasmEdge-GGML-Plugin
Info: Detected CUDA version:
/tmp/wasmedge.2884467 ~/gaianet
######################################################################## 100.0%
~/gaianet
Installation of wasmedge-0.13.5 successful
WasmEdge binaries accessible
The WasmEdge Runtime wasmedge version 0.13.5 is installed in /home/azureuser/.wasmedge/bin/wasmedge.
[+] Installing Qdrant binary...
* Download Qdrant binary
################################################################################################## 100.0%
* Initialize Qdrant directory
[+] Downloading the rag-api-server.wasm ...
################################################################################################## 100.0%
[+] Downloading dashboard ...
################################################################################################## 100.0%
By default, it installs into the $HOME/gaianet directory. You can also choose to install into an alternative directory.
curl -sSfL 'https://raw.githubusercontent.com/GaiaNet-AI/gaianet-node/main/install.sh' | bash -s -- --base $HOME/gaianet.alt
Initialize the node
gaianet init
The output should look like below:
[+] Downloading Llama-2-7b-chat-hf-Q5_K_M.gguf ...
############################################################################################################################## 100.0%############################################################################################################################## 100.0%
[+] Downloading all-MiniLM-L6-v2-ggml-model-f16.gguf ...
############################################################################################################################## 100.0%############################################################################################################################## 100.0%
[+] Creating 'default' collection in the Qdrant instance ...
* Start a Qdrant instance ...
* Remove the existed 'default' Qdrant collection ...
* Download Qdrant collection snapshot ...
############################################################################################################################## 100.0%############################################################################################################################## 100.0%
* Import the Qdrant collection snapshot ...
* Recovery is done successfully
The init command initializes the node according to the $HOME/gaianet/config.json file. You can use some of our pre-set configurations. For example, the command below initializes a node with the llama-3 8B model with a London guidebook as knowledge base.
gaianet init --config https://raw.githubusercontent.com/GaiaNet-AI/node-configs/main/llama-3-8b-instruct_london/config.json
To see a list of pre-set configurations, you can do gaianet init --help.
Besides a pre-set configurations like gaianet_docs, you can also pass a URL to your own config.json for the node to be initialized to the state you'd like.
If you need to init a node installed in an alternative directory, do this.
gaianet init --base $HOME/gaianet.alt
Start the node
gaianet start
The output should look like below:
[+] Starting Qdrant instance ...
Qdrant instance started with pid: 39762
[+] Starting LlamaEdge API Server ...
Run the following command to start the LlamaEdge API Server:
wasmedge --dir .:./dashboard --nn-preload default:GGML:AUTO:Llama-2-7b-chat-hf-Q5_K_M.gguf --nn-preload embedding:GGML:AUTO:all-MiniLM-L6-v2-ggml-model-f16.gguf rag-api-server.wasm --model-name Llama-2-7b-chat-hf-Q5_K_M,all-MiniLM-L6-v2-ggml-model-f16 --ctx-size 4096,384 --prompt-template llama-2-chat --qdrant-collection-name default --web-ui ./ --socket-addr 0.0.0.0:8080 --log-prompts --log-stat --rag-prompt "Use the following pieces of context to answer the user's question.\nIf you don't know the answer, just say that you don't know, don't try to make up an answer.\n----------------\n"
LlamaEdge API Server started with pid: 39796
You can start the node for local use. It will be only accessible via localhost and not available on any of the GaiaNet domain's public URLs.
gaianet start --local-only
You can also start a node installed in an alternative base directory.
gaianet start --base $HOME/gaianet.alt
Stop the node
gaianet stop
The output should look like below:
[+] Stopping WasmEdge, Qdrant and frpc ...
Stop a node installed in an alternative base directory.
gaianet stop --base $HOME/gaianet.alt
Update configuration
Using gaianet config subcommand can update the key fields defined in the config.json file. You MUST run gaianet init again after you update the configuartion.
To update the chat field, for example, use the following command:
gaianet config --chat-url "https://huggingface.co/second-state/Llama-2-13B-Chat-GGUF/resolve/main/Llama-2-13b-chat-hf-Q5_K_M.gguf"
To update the chat_ctx_size field, for example, use the following command:
gaianet config --chat-ctx-size 5120
Below are all options of the config subcommand.
$ gaianet config --help
Usage: gaianet config [OPTIONS]
Options:
--chat-url <url> Update the url of chat model.
--chat-ctx-size <val> Update the context size of chat model.
--embedding-url <url> Update the url of embedding model.
--embedding-ctx-size <val> Update the context size of embedding model.
--prompt-template <val> Update the prompt template of chat model.
--port <val> Update the port of LlamaEdge API Server.
--system-prompt <val> Update the system prompt.
--rag-prompt <val> Update the rag prompt.
--rag-policy <val> Update the rag policy [Possible values: system-message, last-user-message].
--reverse-prompt <val> Update the reverse prompt.
--domain <val> Update the domain of GaiaNet node.
--snapshot <url> Update the Qdrant snapshot.
--qdrant-limit <val> Update the max number of result to return.
--qdrant-score-threshold <val> Update the minimal score threshold for the result.
--base <path> The base directory of GaiaNet node.
--help Show this help message
Have fun!
Resources & Contributing Back
Looking for the docs? Check the documentation or the Contributing Guide out. We also recommend reading Awesome-Gaia for a curated list of tools, projects, and resources from the Gaia community
Want to talk to the community? Hop in our Telegram and share your ideas and what you've build with Gaianet.
Find a bug? Head over to our issue tracker and we'll do our best to help. We love pull requests, too!
We expect all Gaianet contributors to abide by the terms of our Code of Conduct.
→ Start contributing on GitHub
Contributors
Files in the repo
- .github
- docker
- tests
- utils
- .gitignore
- CHANGES.md
- CODE_OF_CONDUCT.md
- config.json
- CONTRIBUTING.md
- frpc.toml
- gaianet
- install.sh
- LICENSE
- nodeid.json
- README-ar.md
- README-cn.md
- README-fa.md
- README-id.md
- README-ja.md
- README-kr.md
- README-pt.md
- README-ru.md
- README-tr.md
- README.md
- SECURITY.md
- uninstall.sh
- vector.toml
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More tools
Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors
Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Turn any technical book PDF into a Claude Code skill — ready to study, reference, and use while you work.
Use ChatGPT Web (including Pro) as a native model in Codex — with context, tools, streaming and images, without using Codex quota.

Unofficial Python API and agentic skill for Google Gemini Notebook. Full programmatic access to NotebookLM's features—including capabilities the web UI doesn't expose—via Python, CLI, and AI agents like Claude Code, Codex, and OpenClaw.