Who it is for
- Configuration and feature flag storage
- Distributed coordination metadata
- Rate limiting counters with TTL
- Session coordination state
- Internal platform state that must be consistent across nodes
Vaylix is a key-value store built for operational state that must survive crashes. It fsyncs every acknowledged write and, in HA mode, commits writes to a quorum before returning success.
Current line: server v0.9.0, TypeScript SDK 0.4.0, Go SDK 0.1.0. Pre-1.0 means the storage format and compatibility policy are documented explicitly instead of implied.
docker run --rm \ -p 9173:9173 \ -v vaylix-data:/var/lib/vaylix \ -e VAYLIX_USER=vaylix \ -e VAYLIX_PASSWORD=vaylix \ ghcr.io/vaylix/vaylix:0.9.0Vaylix is a durable key-value database for control-plane and operational state. It keeps transport, server policy, and storage separated so write durability, failure handling, and access control stay explicit instead of implicit.
Who it is for
What it is not for
What it guarantees
What it does not guarantee
Production-facing features
Reference surface
Start one node with Docker, connect with an SDK, and write a durable key. Follow the full guide for local clustering, TLS, and non-default credentials.
Run the server
docker run --rm \ -p 9173:9173 \ -v vaylix-data:/var/lib/vaylix \ -e VAYLIX_USER=vaylix \ -e VAYLIX_PASSWORD=vaylix \ ghcr.io/vaylix/vaylix:0.9.0Connect with TypeScript
import { createClient } from '@vaylix/client';
const client = createClient({ url: 'vaylix://vaylix:vaylix@127.0.0.1:9173',});
await client.connect();
try { await client.set('config:feature-x', 'enabled'); const value = await client.get('config:feature-x'); const ttlApplied = await client.expire('config:feature-x', 60); const casOk = await client.set('config:feature-x', 'disabled', { ifVersion: 1n });
console.log({ value, ttlApplied, casOk });} finally { await client.close();}Connect with Go
package main
import ( "context" "log"
vaylix "github.com/vaylix/vaylix-go")
func main() { ctx := context.Background()
client, err := vaylix.Connect(ctx, vaylix.Options{ URL: "vaylix://vaylix:vaylix@127.0.0.1:9173", }) if err != nil { log.Fatal(err) } defer client.Close()
if _, err := client.Set(ctx, "config:feature-x", "enabled", nil); err != nil { log.Fatal(err) }}Use the CLI
vaylix-client opens an interactive REPL.
$ vaylix-client --url 'vaylix://vaylix:vaylix@127.0.0.1:9173'vaylix> SET config:env productionOKvaylix> GET config:envproductionvaylix> SET config:env staging IF VERSION 1truevaylix> GET config:envstagingvaylix> TTL config:env-1vaylix> EXIT$