Abodi is the high-performance hardware diagnostics, health monitoring, predictive maintenance.
677
Abodi is the physical foundation and high-performance node agent of the Aarkam Sovereign Data Fabric. Operating directly on bare-metal and containerized storage nodes, Abodi delivers low-level hardware inspection, sub-millisecond direct NVMe block I/O, medical-grade diagnostic correlation, and zero-loss telemetry streaming across distributed sovereign cloud environments.
Abodi serves as the fundamental storage engine and hardware watchdog for both operational tiers of the Aarkam ecosystem:
O_DIRECT), 66,048-byte physical page alignment, Cauchy Reed-Solomon erasure coding shard placement, and real-time health-weighted routing.Engineered strictly for zero-egress, air-gapped sovereign datacenters, Abodi operates with complete autonomy—requiring zero external database dependencies, zero third-party internet callbacks, and zero external runtime frameworks.
O_DIRECT with sector alignment on Linux, FILE_FLAG_NO_BUFFERING on Windows).ReleasePage and block compaction RPCs to dynamically eliminate storage fragmentation under sustained write saturation.AllowWrite = false and signals the cluster coordinator to perform non-disruptive, proactive Cauchy shard evacuation.ET1.<hex>).spiffe://rokka.cluster/node/{node-code}).0700/0600 access boundaries and automated memory zeroization.Console, rolling hourly File archives (with 100 MB caps and retention controls), Seq event ingestors, and Elasticsearch time-series data streams (logs-abodi-agent-{env}).CorrelationId, TraceId, SpanId, WorkingSetBytes, ManagedMemoryBytes, ThreadCount, NodeUptimeSeconds, and host OS environment identifiers.| Tag | Target Architecture | Base OS | Description |
|---|---|---|---|
v1.0.2, 1.0.2, latest | linux/amd64 (x86_64, AVX2) | Ubuntu 24.04 LTS Noble (dotnet/aspnet:10.0) | Official Production Release with embedded hardware diagnostic utilities (smartmontools, nvme-cli, lm-sensors, iproute2, ethtool). |
To enable physical NVMe inspection, SMART diagnostic polling, and direct sector block I/O, execute the container with the SYS_RAWIO capability and mount the target physical block device:
docker run -d \
--name aarkam-abodi \
--restart unless-stopped \
--cap-add=SYS_RAWIO \
--device=/dev/nvme0n1:/dev/nvme0n1:rwm \
-v /var/lib/rokka/storage:/var/lib/rokka/storage \
-v /var/lib/rokka/security:/var/lib/aarkam/security \
-v /var/lib/rokka/outbox:/var/lib/aarkam/outbox \
-v /var/log/rokka/abodi:/app/logs \
-p 57775:57775 \
-p 57776:57776 \
-p 7776:7776 \
-e ASPNETCORE_ENVIRONMENT=Production \
-e Node__NodeCode="STORAGE-NODE-01" \
-e Node__ClusterCode="ROKKA-PROD-CLUSTER" \
-e Rokka__CoordinatorUrl="https://coordinator.rokka.internal:57774" \
-e Security__EnrollmentToken="ET1.0123456789ABCDEF0123456789ABCDEF" \
aarkam/aarkam.abodi:v1.0.2
Create a production docker-compose.yml:
version: '3.8'
services:
abodi:
image: aarkam/aarkam.abodi:v1.0.2
container_name: abodi-storage-daemon
restart: unless-stopped
cap_add:
- SYS_RAWIO
devices:
- /dev/nvme0n1:/dev/nvme0n1:rwm
- /dev/nvme1n1:/dev/nvme1n1:rwm
volumes:
- /var/lib/rokka/storage:/var/lib/rokka/storage
- /var/lib/rokka/security:/var/lib/aarkam/security
- /var/lib/rokka/outbox:/var/lib/aarkam/outbox
- /var/log/rokka/abodi:/app/logs
ports:
- "57775:57775" # gRPC mTLS: Kdouja Direct PageStore Data Plane
- "57776:57776" # HTTPS mTLS: Node Telemetry & Anomaly Plane
- "7776:7776" # HTTP Cleartext: Local Host Health & Liveness Probe
environment:
- ASPNETCORE_ENVIRONMENT=Production
- Node__NodeCode=STORAGE-NODE-01
- Node__RackId=RACK-04
- Node__DataCenter=DC-RIYADH-01
- Rokka__CoordinatorUrl=https://coordinator.rokka.internal:57774
- Storage__PageStorePath=/var/lib/rokka/storage
- Storage__DirectIOEnabled=true
- Storage__SectorAlignmentBytes=66048
- Serilog__MinimumLevel=Information
- Serilog__WriteToConsole=true
- Serilog__WriteToFile=true
- Serilog__WriteToSeq=false
- Serilog__WriteToElasticsearch=false
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:7776/api/v1/health/ping"]
interval: 15s
timeout: 5s
retries: 3
start_period: 10s
Run the service:
docker compose up -d
Abodi is configured via environment variables or JSON configuration overrides:
| Variable | Default | Description |
|---|---|---|
Node__NodeCode | Required | Unique alphanumeric sovereign identifier for this storage node host. |
Node__ClusterCode | ROKKA-DEFAULT | Identifier of the parent Rokka sovereign cluster. |
Node__DataCenter | DC-DEFAULT | Geographic or datacenter zone identifier. |
Node__RackId | RACK-01 | Physical rack cabinet location for fault domain topology. |
Rokka__CoordinatorUrl | Required | Fully qualified URL of the central Rokka Coordinator service. |
Security__EnrollmentToken | Optional | One-time bootstrap token (ET1.<hex>) used during initial node onboarding. |
| Variable | Default | Description |
|---|---|---|
Storage__PageStorePath | /var/lib/rokka/storage | Directory where raw page store files are allocated. |
Storage__DirectIOEnabled | true | Enforces unbuffered direct disk I/O (O_DIRECT). |
Storage__SectorAlignmentBytes | 66048 | Physical sector geometry (512-byte header + 64KB aligned payload). |
Storage__SyncWrites | true | Enforces synchronous write-through commits to persistent media. |
| Variable | Default | Description |
|---|---|---|
Serilog__MinimumLevel | Information | Minimum logging threshold (Verbose, Debug, Information, Warning, Error). |
Serilog__WriteToConsole | true | Enables structured JSON console streaming. |
Serilog__WriteToFile | true | Enables hourly rolling file log rotation in /app/logs. |
Serilog__WriteToSeq | false | Enables real-time log ingestion into an external Seq server. |
Serilog__SeqUrl | "" | Endpoint URL of the target Seq server (e.g. http://seq.internal:5341). |
Serilog__WriteToElasticsearch | false | Enables high-throughput indexing into Elasticsearch data streams. |
Serilog__ElasticsearchUrl | "" | Target Elasticsearch endpoint (e.g. https://es.internal:9200). |
| Port | Protocol | Binding | Security | Purpose |
|---|---|---|---|---|
57775 | gRPC / HTTP/2 | 0.0.0.0 | mTLS (SPIFFE) | Direct Kdouja chunk transport, page allocation, and Cauchy shard reads/writes. |
57776 | HTTPS / REST | 0.0.0.0 | mTLS (SPIFFE) | Node telemetry snapshots, hardware manifests, predictive alerts, and placement scoring. |
7775 | gRPC / HTTP/2 | 127.0.0.1 | Cleartext | Local intra-node high-speed RPC IPC communication. |
7776 | HTTP / REST | 127.0.0.1 | Cleartext | Local host readiness probe (/api/v1/health/ping) and daemon liveness telemetry. |
| Container Path | Host Path Recommendation | Purpose |
|---|---|---|
/var/lib/rokka/storage | Dedicated NVMe partition / mount | Kdouja physical block page stores and direct I/O chunk files. |
/var/lib/aarkam/security | Encrypted tmpfs or local partition (chmod 0700) | SPIFFE mTLS certificates, node identity keys, and enrollment secrets. |
/var/lib/aarkam/outbox | Local persistent fast storage | SQLite WAL write-ahead offline buffer during coordinator partitions. |
/app/logs | /var/log/rokka/abodi | Structured Serilog rolling audit archives. |
Abodi exposes a high-frequency, non-blocking health probe endpoint for container orchestrators (Docker, Kubernetes, Nomad, systemd):
# Check daemon health status
curl -s http://localhost:7776/api/v1/health/ping
Sample JSON Response:
{
"status": "Healthy",
"nodeCode": "STORAGE-NODE-01",
"version": "1.0.2",
"uptimeSeconds": 86420,
"healthScore": 0.985,
"drives": [
{
"device": "/dev/nvme0n1",
"status": "Optimal",
"wearPercent": 2.1,
"temperatureCelsius": 38.0,
"allowWrite": true
}
],
"footprint": {
"workingSetMB": 128.4,
"managedMemoryMB": 42.1,
"threadCount": 18
}
}
Abodi is an official core component of the Aarkam Sovereign Data Fabric.
Content type
Image
Digest
sha256:636e9a935…
Size
160 MB
Last updated
7 days ago
docker pull aarkam/aarkam.abodi