System Requirements
This document outlines the minimum and recommended requirements for deploying Tamandua Sentinel components.
Overview
Tamandua Sentinel consists of three main deployment targets:
| Component | Technology | Deployment |
|---|
| Server | Elixir/Phoenix | Self-hosted or cloud |
| Agent | Rust | Per endpoint |
| ML Service | Python/PyTorch | Co-located with server |
Server Requirements
The Tamandua Server handles agent connections, telemetry ingestion, detection, and alert management.
Minimum Requirements
| Resource | Specification |
|---|
| CPU | 4 cores |
| RAM | 8 GB |
| Storage | 100 GB SSD |
| OS | Ubuntu 22.04+, Debian 12+, RHEL 9+ |
| Elixir | 1.15+ |
| Erlang/OTP | 26+ |
| PostgreSQL | 16+ with TimescaleDB |
| Redis | 7+ |
Recommended (Production)
| Resource | Specification | Notes |
|---|
| CPU | 8+ cores | Higher for concurrent agent handling |
| RAM | 32 GB | More for ML model inference |
| Storage | 500 GB NVMe SSD | TimescaleDB benefits from fast I/O |
| OS | Ubuntu 24.04 LTS | Best tested platform |
Scaling Guidelines
| Agent Count | CPU | RAM | Storage |
|---|
| 1-50 | 4 cores | 8 GB | 100 GB |
| 50-200 | 8 cores | 16 GB | 250 GB |
| 200-500 | 16 cores | 32 GB | 500 GB |
| 500+ | 32+ cores | 64+ GB | 1+ TB |
Required Software
# Elixir/Erlang
asdf plugin add erlang
asdf plugin add elixir
asdf install erlang 26.2
asdf install elixir 1.16.0-otp-26
# PostgreSQL 16 + TimescaleDB
sudo apt install postgresql-16
# Add TimescaleDB extension
sudo apt install timescaledb-2-postgresql-16
# Redis
sudo apt install redis-server
# RabbitMQ (optional, for advanced pipelines)
sudo apt install rabbitmq-server
Agent Requirements
The Tamandua Agent runs on each protected endpoint, collecting telemetry and executing response actions.
Windows
| Requirement | Specification |
|---|
| OS Version | Windows 10 version 1903+ (build 18362+) |
| Windows 11 all versions |
| Windows Server 2019+ |
| Architecture | x86_64 (AMD64) |
| RAM | 128 MB available |
| Storage | 50 MB for agent |
| Privileges | Administrator (recommended) |
Optional for kernel driver:
- Windows Driver Kit (WDK) matching Windows SDK version
- Test signing enabled (development) or EV code signing (production)
Linux
| Requirement | Specification |
|---|
| Kernel | 5.4+ (5.10+ for full eBPF support) |
| Distributions | Ubuntu 20.04+, Debian 11+, RHEL 8+, Fedora 35+ |
| Architecture | x86_64, aarch64 |
| RAM | 64 MB available |
| Storage | 30 MB for agent |
| Privileges | root (recommended) or CAPSYSPTRACE |
For full visibility:
# Required capabilities
CAP_SYS_PTRACE # Process inspection
CAP_NET_ADMIN # Network monitoring
CAP_DAC_READ_SEARCH # File access monitoring
# Or run as root
sudo ./tamandua-agent
Auditd integration (recommended):
# Install auditd
sudo apt install auditd
# Tamandua auto-deploys audit rules on startup
macOS Preview
| Requirement | Specification |
|---|
| OS Version | macOS 12 Monterey+ |
| macOS 13 Ventura+ (recommended) |
| macOS 14 Sonoma+ |
| Architecture | x86_64 (Intel), arm64 (Apple Silicon) |
| RAM | 128 MB available |
| Storage | 40 MB for agent |
| Privileges | Full Disk Access, Accessibility permissions for preview builds |
macOS endpoint support is Preview/Experimental. Use these requirements for lab evaluation; validate telemetry, permissions, system extension behavior, and rollback before any fleet use.
System Extension requirements for preview builds:
- System Integrity Protection (SIP) configuration may be required
- MDM approval for system extensions in enterprise deployments
ML Service Requirements
The ML Service provides the Malware-SMELL-inspired scoring path. Current model artifacts are smoke-scale and validation-ready only; production ML claims require the guarded ML-1..ML-6 benchmark chain.
CPU Inference
| Resource | Specification |
|---|
| CPU | 4+ cores |
| RAM | 4 GB minimum, 8 GB recommended |
| Storage | 2 GB for models |
| Python | 3.11+ |
| PyTorch | 2.0+ |
GPU Inference (Optional)
| Resource | Specification |
|---|
| GPU | NVIDIA with CUDA 11.8+ |
| VRAM | 4 GB minimum |
| Drivers | CUDA 11.8+ or 12.x |
Performance comparison:
| Hardware | Inference Time | Batch Throughput |
|---|
| CPU (8 core) | ~50ms/sample | ~20 samples/sec |
| GPU (RTX 3060) | ~5ms/sample | ~200 samples/sec |
| GPU (A100) | ~1ms/sample | ~1000 samples/sec |
Installation
# Create virtual environment
cd apps/tamandua_ml
uv sync
# Or with pip
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# For GPU support
pip install torch --index-url https://download.pytorch.org/whl/cu118
Network Requirements
Ports
| Port | Protocol | Direction | Purpose |
|---|
| 4000 | TCP | Inbound | Phoenix web dashboard |
| 4443 | TCP | Inbound | Agent WebSocket (with TLS) |
| 8443 | TCP | Inbound | Agent mTLS (production) |
| 5432 | TCP | Local | PostgreSQL |
| 6379 | TCP | Local | Redis |
| 5672 | TCP | Local | RabbitMQ (optional) |
| 8000 | TCP | Local | ML Service API |
Agent -> Server Communication
Agent ----[WebSocket/TLS]----> Server:4443
<---[Commands]--------
| Requirement | Specification |
|---|
| Protocol | WebSocket over TLS 1.3 |
| Authentication | JWT token (enrollment) |
| Production Auth | mTLS with client certificates |
| Keepalive | 30 second ping interval |
| Reconnect | Automatic with exponential backoff |
Firewall Rules
Server (inbound):
# Allow agent connections
ufw allow 4443/tcp
# Allow dashboard access (restrict to admin IPs)
ufw allow from <admin-ip> to any port 4000
Agent (outbound):
# Allow connection to server
# No inbound ports required on endpoints
mTLS Certificate Requirements
For production deployments with mTLS:
| Certificate | Purpose | Validity |
|---|
| CA Certificate | Root trust anchor | 10 years |
| Server Certificate | Server identity | 1-2 years |
| Agent Certificate | Per-agent identity | 1 year |
# Generate CA (one time)
openssl req -x509 -newkey rsa:4096 -days 3650 \
-keyout ca-key.pem -out ca-cert.pem \
-subj "/CN=Tamandua CA"
# Generate server certificate
openssl req -newkey rsa:2048 -keyout server-key.pem -out server.csr \
-subj "/CN=tamandua-server.example.com"
openssl x509 -req -in server.csr -CA ca-cert.pem -CAkey ca-key.pem \
-CAcreateserial -out server-cert.pem -days 365
# Generate agent certificate (CN must match agent_id)
openssl req -newkey rsa:2048 -keyout agent-key.pem -out agent.csr \
-subj "/CN=<agent-uuid>"
openssl x509 -req -in agent.csr -CA ca-cert.pem -CAkey ca-key.pem \
-CAcreateserial -out agent-cert.pem -days 365
Solana RPC Requirements
For on-chain attestations and bounty settlement.
Devnet (Testing)
| Requirement | Specification |
|---|
| RPC Endpoint | https://api.devnet.solana.com |
| SOL Balance | 2 SOL (free via airdrop) |
| Rate Limits | Standard devnet limits |
# Configure for devnet
solana config set --url devnet
# Get free SOL
solana airdrop 2
Mainnet (Production)
| Requirement | Specification |
|---|
| RPC Endpoint | Premium RPC provider recommended |
| SOL Balance | Based on attestation volume |
| Rate Limits | Check provider limits |
Recommended RPC providers:
- Helius
- QuickNode
- Alchemy
- GenesysGo
Cost estimation:
| Volume | Monthly Cost |
|---|
| 1,000 attestations | ~$0.01 (transaction fees only) |
| 10,000 attestations | ~$0.10 |
| 100,000 attestations | ~$1.00 |
Attestation Modes
| Mode | Description | SOL Required |
|---|
relay | Send to Treant relay (default) | None (free) |
local_only | Store locally, no on-chain | None |
self_pay | Use your own wallet | Yes |
# Configuration in config/runtime.exs
config :tamandua_server, TamanduaServer.Solana.AttestationMode,
mode: :relay, # :local_only | :relay | :self_pay
relay_url: "https://relay.tamandua.treantlab.org/api/v1/attestations"
Database Storage Estimates
PostgreSQL + TimescaleDB
| Agent Count | Daily Events | 30-Day Storage | 90-Day Storage |
|---|
| 10 | 500K | 5 GB | 15 GB |
| 50 | 2.5M | 25 GB | 75 GB |
| 100 | 5M | 50 GB | 150 GB |
| 500 | 25M | 250 GB | 750 GB |
Retention policies:
-- Auto-compress data older than 7 days
SELECT add_compression_policy('telemetry_events', INTERVAL '7 days');
-- Drop data older than 90 days
SELECT add_retention_policy('telemetry_events', INTERVAL '90 days');
High Availability Configuration
For production deployments requiring high availability:
Database HA
+----------------+
| HAProxy/PgBouncer |
+--------+-------+
|
+---------------+---------------+
| | |
+---v---+ +----v----+ +----v----+
| Primary | | Replica 1| | Replica 2|
+---------+ +----------+ +----------+
Recommended setup:
- 1 Primary + 2 Streaming Replicas
- PgBouncer for connection pooling
- Automatic failover with Patroni or pgautofailover
Server HA
+----------------+
| Load Balancer |
+--------+-------+
|
+---------------+---------------+
| | |
+---v---+ +----v----+ +----v----+
|Phoenix | | Phoenix | | Phoenix |
|Node 1 | | Node 2 | | Node 3 |
+---+----+ +----+----+ +----+----+
| | |
+---------------+---------------+
|
+-----v------+
| Redis |
| (Cluster) |
+------------+
Development Environment
For local development and testing:
# Minimum development setup
CPU: 2 cores
RAM: 8 GB
Storage: 20 GB
# Required tools
- Docker & Docker Compose
- Rust 1.74+
- Elixir 1.15+ / Erlang 26+
- Python 3.11+
- Node.js 20+ (for assets)
- Git
# Quick start
make dev-up # Start PostgreSQL, Redis, RabbitMQ
make backend-run # Start Phoenix server
make agent-run # Start agent (another terminal)
Verification Checklist
Before deployment, verify:
- [ ] PostgreSQL 16+ with TimescaleDB installed
- [ ] Redis 7+ running
- [ ] Elixir 1.15+ / Erlang 26+ installed
- [ ] Python 3.11+ with PyTorch installed
- [ ] Network ports open (4000, 4443, 8443)
- [ ] TLS certificates generated (production)
- [ ] Solana CLI installed (if using self_pay mode)
- [ ] Agent binaries available for target platforms
- [ ] Backup strategy configured for PostgreSQL
Last updated: May 2026