Skip to content

Install on RHEL / Fedora

This guide covers installing Astromesh Node on RPM-based Linux distributions: RHEL 9+, Fedora 38+, CentOS Stream 9+, and AlmaLinux/Rocky Linux 9+.

RequirementVersionCheck
RHEL / Fedora / CentOSRHEL 9+ / Fedora 38+cat /etc/os-release
systemd250+systemctl --version
PythonNone — the package carries its own CPython 3.12 in /opt/astromesh/python (since v0.1.8)—
Architecturex86_64 onlyuname -m
NetworkOutbound to LLM provider or local Ollama—

Node packages are attached to the node-v* releases on GitHub (the repository’s “latest” release is the core, so releases/latest/download/... does not find them):

Terminal window
VERSION=0.1.10
curl -LO https://github.com/monaccode/astromesh/releases/download/node-v${VERSION}/astromesh-node-${VERSION}-1.x86_64.rpm
Terminal window
sudo dnf install ./astromesh-node-${VERSION}-1.x86_64.rpm

Verify the installation:

Terminal window
astromeshctl version

Expected output:

astromesh-cli 0.3.1
astromesh core 0.61.0

Run the interactive wizard to generate your configuration:

Terminal window
sudo astromeshctl init

For a non-interactive setup:

Terminal window
sudo astromeshctl init --role full --non-interactive

This creates /etc/astromesh/runtime.yaml, providers.yaml and, if you entered a provider API key, .env (loaded by the systemd unit). The package already installs sample agents in /etc/astromesh/agents/.

See Configuration for the full runtime.yaml schema and the roles.

The package ships no SELinux policy module. On systems with SELinux enforcing, if you encounter denials:

Terminal window
# Check for SELinux denials
sudo ausearch -c astromeshd -m avc
# Generate a local policy module if needed
sudo ausearch -c astromeshd -m avc | audit2allow -M astromesh_local
sudo semodule -i astromesh_local.pp

To allow external access to the API port:

Terminal window
sudo firewall-cmd --permanent --add-port=8000/tcp
sudo firewall-cmd --reload

The package enables the unit but does not start it:

Terminal window
sudo systemctl start astromeshd

Check service status:

Terminal window
sudo systemctl status astromeshd

Expected output:

● astromeshd.service - Astromesh Agent Runtime Daemon
Loaded: loaded (/lib/systemd/system/astromeshd.service; enabled)
Active: active (running) since Fri 2026-03-20 10:00:00 UTC; 5s ago
Main PID: 4521 (astromeshd)
Memory: 128.0M
Terminal window
astromeshctl status
Terminal window
curl http://localhost:8000/v1/health
Terminal window
# Follow live logs
sudo journalctl -u astromeshd -f
# Last 100 lines
sudo journalctl -u astromeshd -n 100
# Only errors
sudo journalctl -u astromeshd -p err
PathPurpose
/etc/astromesh/Configuration files
/var/lib/astromesh/Persistent state (memory, models)
/var/log/astromesh/Audit logs (daemon logs go to journald)
/opt/astromesh/venv/Virtualenv; astromeshd and astromeshctl are symlinked into /usr/bin/
/lib/systemd/system/astromeshd.servicesystemd unit file
Terminal window
VERSION=0.1.10
curl -LO https://github.com/monaccode/astromesh/releases/download/node-v${VERSION}/astromesh-node-${VERSION}-1.x86_64.rpm
sudo dnf upgrade ./astromesh-node-${VERSION}-1.x86_64.rpm

The old package’s pre-remove script runs after the new one is installed, so the upgrade leaves the service stopped and disabled. Re-enable and start it, then verify:

Terminal window
sudo systemctl enable --now astromeshd
astromeshctl version
astromeshctl status
Terminal window
sudo dnf remove astromesh-node

Removing stops and disables the service.

To remove all configuration and data:

Terminal window
sudo rm -rf /etc/astromesh /var/lib/astromesh /var/log/astromesh /opt/astromesh
sudo userdel astromesh