Skip to main content

Getting Started

This guide walks you through setting up the Almena Network development environment.

Prerequisites

Required Tools

ToolVersionInstall
Rust2021 editionrustup.rs
Node.js>= 24nodejs.org
pnpm>= 10npm install -g pnpm
protocLatestSee below
Task>= 3taskfile.dev

Installing protoc

The Protocol Buffers compiler is required to build the daemon and any gRPC client:

# macOS
brew install protobuf

# Linux (Debian/Ubuntu)
sudo apt install protobuf-compiler

# Windows
choco install protoc

Tauri v2 Prerequisites

For desktop and wallet development, you need the Tauri v2 system dependencies:

  • macOS: Xcode Command Line Tools (xcode-select --install)
  • Linux: See Tauri prerequisites
  • Windows: Visual Studio Build Tools with C++ workload

Clone the Repository

git clone --recurse-submodules git@github.com:almena-network/almena-network.git
cd almena-network

If you already cloned without --recurse-submodules:

git submodule update --init --recursive

All submodules track the develop branch.

Install Dependencies

task install

This runs task install in each submodule (daemon, desktop, wallet, cli).

Running in Development

Each module has its own dev command:

# Start the daemon (required by desktop and CLI)
task daemon:dev

# In a separate terminal, start the desktop app
task desktop:dev

# Or start the wallet
task wallet:dev

# Or start the CLI
task cli:dev
tip

Always start the daemon first. The desktop app and CLI connect to it via gRPC on [::1]:50051.

Common Tasks

# Type-check / compile-check all modules
task check

# Build all modules (release)
task build

# Clean all build artifacts
task clean

Daemon-specific

task daemon:test       # Run tests
task daemon:clippy # Lint with Clippy
task daemon:fmt # Format code
task daemon:fmt:check # Check formatting

Proto Workflow

After editing daemon/proto/almena/daemon/v1/service.proto:

# Update desktop client
task desktop:proto:copy && task desktop:proto:client

# Update CLI client
task cli:proto:copy && task cli:proto:client

Project Structure

almena-network/
├── daemon/ # Rust gRPC server + P2P networking
├── desktop/ # Tauri v2 + React 19 admin console
├── wallet/ # Tauri v2 + React 19 identity wallet
├── cli/ # Rust TUI client
├── docs/ # Docusaurus documentation
├── Taskfile.yml # Root orchestration
├── CLAUDE.md # AI assistant instructions
└── LICENSE # Apache-2.0 OR MIT

Each submodule has its own Taskfile.yml, README.md, and independent CI/CD configuration.