DOCS getting started
Support
# Getting Started with Bauxite Mesh

This guide will walk you through installing the Bauxite Agent and joining your first device to the mesh.

## Prerequisites

- A Linux-based edge device or VM.
- `sudo` access to manage network interfaces (TUN/TAP).
- A valid join token from your Bauxite Control Plane.

## 1. Installation

Currently, the Bauxite Agent is distributed as a binary or can be built from source using Cargo.

### Build from Source

```bash
cargo build --release
sudo cp target/release/bauxite /usr/local/bin/
```

## 2. Host System Setup

Before joining the mesh, you must prepare the host system by mounting the eBPF filesystem interfaces and configuring virtual devices. The `setup` command guides you through this:

### Interactive Workstation Setup
To configure the host system interactively, run:
```bash
sudo bauxite setup
```
The wizard will check your kernel capabilities, mount the BPF filesystem, and configure the virtual `bauxite0` network interface.

### Declarative Server Setup (Dry-Run)
For production automated deployments, generate declarative `cloud-init` templates containing systemd unit descriptors without mutating the local workstation:
```bash
bauxite setup --dry-run > cloud-init.yaml
```

## 3. Joining the Mesh

To join the mesh, you need a join token and the URL of your Bauxite Control Plane (Hub).

```bash
bauxite join \
  --token <YOUR_JOIN_TOKEN> \
  --hub-url https://hub.yourdomain.com:50052 \
  --node-id my-robot-1 \
  --hub-public-key <HUB_PUBLIC_KEY>
```

This command will:
1. Generate a sovereign identity on your device.
2. Register the device with the Control Plane.
3. Download the necessary certificates.
4. Create a `config.toml` file in your data directory (default: `/root/.bauxite`).

## 4. Running the Agent

Once joined, you can start the mesh agent:

```bash
sudo bauxite run --config /root/.bauxite/config.toml
```

Your device is now part of the Bauxite Fabric!