S3 object storage with RS erasure coding, per-division tenants, and offline licensing

S3 behavior follows the AWS documentation; when in doubt, we test against AWS.

Request a 7-day trial

Tenants page in the console: four company divisions, each with its own capacity quota.Tenants page in the console: four company divisions, each with its own capacity quota.

Modules

S3 API
Buckets and objects, versioning, multipart, presigned (SigV4 and V2), Object Lock, tagging, ACLs, bucket policy, CORS, lifecycle, notifications, replication, STS AssumeRole/WebIdentity.
Erasure coding
Reed–Solomon per set (n ≤ 16), automatic parity, write quorum, per-object heal, scrubber, per-set heal.
Metadata
Multi-group Raft on Pebble: a system group plus per-bucket groups with automatic range splits, snapshots, and replica moves between nodes.
Multi-tenancy
Tenants with byte, bucket, user, and requests-per-second quotas; suspension; bucket prefixes; per-tenant console.
Encryption
SSE-S3, SSE-KMS (internal KEK or external backend), SSE-C, bulk re-encryption, mTLS between nodes; secrets are never logged.
Metering
5-minute samples per bucket, daily and monthly aggregates, reconciliation; REST for reporting and internal chargeback.
Replication
Bucket replication to S3 targets, backlog and lag status, per-target bandwidth limits, bulk retry, dead-letter events.
Alerting
Disk offline, quorum, license, capacity, tenant quota → webhook, Slack, Teams, Telegram, email; silences and acknowledgements.
Licensing
Offline Ed25519 files with capacity and node limits, 30-day grace then read-only; optional license server.
Operations
Helm chart and Kubernetes operator, pool decommission, rolling upgrades, metadata backup/restore, encrypted support bundles, Prometheus metrics, hash-chained audit.

Erasure coding RS(16,12): data survives a full node failure

Every object is split into 12 data shards and 4 parity shards across 4 nodes × 4 disks. When a node goes down, any 12 shards still rebuild the whole object.

  1. One object arrives

    Your client sends a PUT exactly as it would to AWS S3. No special SDK.

  2. Split into 12 data shards

    The object is cut per 1 MiB block into equally sized data shards.

  3. Plus 4 parity shards

    Reed–Solomon computes parity. This setup is RS(16,12): 12 data, 4 parity.

  4. Spread over 4 nodes × 4 disks

    Every shard lands on a different disk; no two shards share a disk.

  5. A node dies

    Four shards vanish at once. Any twelve shards are enough to read the whole object.

  6. Automatic heal

    When a replacement node or disk comes online, missing shards are recomputed and written back.

The data plane keeps serving when the control plane is down

Storage nodes do not depend on the console. If the control plane goes down, your applications keep reading and writing.

Your apps → Load balancer → 4 × Node (4 disks, Raft metadata); Operators & team → Console → Admin gRPC → Node; Console → PostgresYour appsAny S3 SDKLoad balancerS3 · HTTPSNode 1inodixd4 disks · Raft metadataNode 2inodixd4 disks · Raft metadataNode 3inodixd4 disks · Raft metadataNode 4inodixd4 disks · Raft metadataOperators & teamConsoleRBAC · MFAAdmin gRPCPostgres
Scroll sideways to see all four nodes.

Data plane inodixd

A Go binary with no runtime dependencies: S3 API, Reed–Solomon erasure coding, Raft metadata on Pebble, healing, scrubber, lifecycle, replication, encryption, notifications.

Control plane console

Admin console with RBAC and MFA, tenants, metering, alerting, licensing, and encrypted support bundles; connects to many clusters over Admin gRPC.

Known differences from AWS S3

  • Virtual-hosted style needs domain configuration on nodes or an Ingress; otherwise use path-style.
  • SelectObjectContent (S3 Select), website hosting, server access logging, and transfer acceleration are not available yet.
  • Any region is accepted in SigV4 because one cluster serves one region.
  • Presigned POST (form upload) is SigV4 only.

Clean-room, permissive, local

Built from scratch
No MinIO or other AGPL code. Dependencies are MIT, BSD, Apache-2.0, and MPL-2.0 only.
Native tenants and metering
Released and tested together with the data plane as one version.
Local support
Team and contracts in Indonesian or English; operations guide in Indonesian.

Start with a 7-day trial on one node

Our team installs a 7-day trial on 1 node in your data center, with every S3 and console feature. The enterprise license is applied to the same cluster without reinstalling.