All configuration lives in ~/.logos-node/ (override with the LOGOS_NODE_DIR env var):
~/.logos-node/
├── settings.env # User overrides (versions, image name)
├── user_config.yaml # Node config with wallet keys (generated by install)
├── data/ # Node runtime data (RocksDB, logs)
│ └── db/ # RocksDB blockchain state
├── monitoring/
│ ├── certs/ # Self-signed SSL cert for Grafana (auto-generated)
│ ├── grafana-data/ # Grafana persistent data
│ └── prometheus-data/ # Prometheus time-series data
└── cli/ # Cloned CLI repository
Network-specific settings (bootstrap peers, ports, URLs) live in network.yml in the repo root. To switch networks, swap this file:
network: testnet
bootstrap_peers:
- /ip4/65.109.51.37/udp/3000/quic-v1/p2p/12D3KooW...
- /ip4/65.109.51.37/udp/3001/quic-v1/p2p/12D3KooW...
api_port: 8080
udp_port: 3000
faucet_url: https://testnet.blockchain.logos.co/web/faucet/
dashboard_url: https://testnet.blockchain.logos.co/web/User-specific overrides go in ~/.logos-node/settings.env. These take precedence over network.yml:
LOGOS_NODE_VERSION=latest # Pin a specific version if needed
LOGOS_DOCKER_IMAGE=logos-node
LOGOS_CONTAINER_NAME=logos-nodeAny value from network.yml can be overridden here (e.g., LOGOS_API_PORT=9090).
logosup/
├── install.sh # One-line installer (curl|bash)
├── logosup # CLI entry point
├── network.yml # Network config (peers, ports, URLs)
├── docker/
│ └── Dockerfile # Multi-arch node container (debian:trixie-slim)
├── monitoring/
│ ├── exporter/ # Python Prometheus exporter (polls node API + Docker stats)
│ ├── otel/ # OpenTelemetry collector config
│ ├── prometheus/ # Prometheus scrape config
│ └── grafana/ # Grafana provisioning + pre-built dashboards
└── lib/
├── common.sh # Colors, logging, spinners, platform detection
├── config.sh # Settings management (~/.logos-node/ + network.yml)
├── releases.sh # GitHub release auto-detection
├── docker.sh # Docker lifecycle helpers
├── monitoring.sh # Monitoring stack helpers
└── cmd_*.sh # Individual command implementations
Commands are modular bash scripts in lib/. To add a new command:
- Create
lib/cmd_mycommand.sh - Define a
cmd_mycommand()function - Add a
# DESCRIPTION:comment at the top
The command is immediately available as logosup mycommand.