Installation
APT (Debian/Ubuntu)
Section titled “APT (Debian/Ubuntu)”# Import the signing keycurl -fsSL https://saxy.github.io/tellstone-apt/key.gpg \ | sudo gpg --dearmor -o /usr/share/keyrings/tellstone.gpg
# Add the repositoryecho "deb [signed-by=/usr/share/keyrings/tellstone.gpg] https://saxy.github.io/tellstone-apt stable main" \ | sudo tee /etc/apt/sources.list.d/tellstone.list
# Installsudo apt update && sudo apt install tellstoneHomebrew (macOS/Linux)
Section titled “Homebrew (macOS/Linux)”brew tap Saxy/tellstone-tapbrew install --cask tellstoneBinary downloads
Section titled “Binary downloads”Pre-built binaries for Linux, macOS, and Windows (amd64/arm64) are available on the GitHub Releases page.
# Example: Linux amd64curl -fsSL https://github.com/Saxy/Tellstone/releases/latest/download/tellstone_1.0.0_linux_amd64.tar.gz \ | tar xzsudo mv tellstone /usr/local/bin/Verify the installation:
tellstone --versionContainer images
Section titled “Container images”Container images are published to GitHub Container Registry on every release. The images use a distroless base with no shell or package manager, and run as a non-root user.
Pull and run
Section titled “Pull and run”# Pull the latest releasepodman pull ghcr.io/saxy/tellstone:latest
# Run with the binary protocol on port 9988podman run --rm -p 9988:9988 ghcr.io/saxy/tellstone:latest
# Run with both binary and RESP protocolspodman run --rm -p 9988:9988 -p 6379:6379 \ ghcr.io/saxy/tellstone:latest \ -addr 0.0.0.0:9988 --enable-resp -resp-addr 0.0.0.0:6379Replace podman with docker if you use Docker — the images are OCI-compliant and
work with both.
Pin a version
Section titled “Pin a version”podman pull ghcr.io/saxy/tellstone:1.2.0Persist data
Section titled “Persist data”Mount a volume for the data directory:
podman run --rm \ -p 9988:9988 \ -v ./data:/data:Z \ -e TSD_DATA_DIR=/data \ ghcr.io/saxy/tellstone:latestThe :Z suffix handles SELinux relabeling for rootless Podman.
Local development image
Section titled “Local development image”Build a dev image from source using the Taskfile:
task podman:build # builds ghcr.io/saxy/tellstone:devtask podman:up # runs on ports 9988 + 6379, mounts ./datatask podman:logs # tail logstask podman:down # stop containerKubernetes
Section titled “Kubernetes”The container image is suitable for direct use in Kubernetes. A minimal deployment:
apiVersion: apps/v1kind: Deploymentmetadata: name: tellstonespec: replicas: 1 selector: matchLabels: app: tellstone template: metadata: labels: app: tellstone spec: containers: - name: tellstone image: ghcr.io/saxy/tellstone:1.2.0 ports: - containerPort: 9988 # binary protocol - containerPort: 6379 # RESP (optional) env: - name: TSD_ADDR value: "0.0.0.0:9988" # - name: TSD_ENABLE_RESP # value: "true" # - name: TSD_ENABLE_PERSISTENCE # value: "true" readinessProbe: tcpSocket: port: 9988 initialDelaySeconds: 1 periodSeconds: 5 resources: requests: memory: "64Mi" cpu: "100m" limits: memory: "512Mi" cpu: "500m"See Configuration for all environment variables and flags.
Build from source
Section titled “Build from source”Prerequisites
Section titled “Prerequisites”- Go 1.26+
- Optional:
task(go-task) for the shortcuts below - Optional, for RESP benchmarking:
redis-cli,memtier_benchmark, orredis-tools
git clone https://github.com/Saxy/Tellstonecd Tellstonetask build # -> ./bin/tellstoneWithout task, build directly with Go:
go build -o bin/tellstone ./cmd/tellstonetask run # binary protocol on 127.0.0.1:9988task run:resp # binary on :9988 + Redis-compatible RESP on :6379Or run the binary directly with flags or environment variables:
./bin/tellstone --addr 127.0.0.1:9988 --enable-resp --resp-addr 127.0.0.1:6379TSD_ADDR=127.0.0.1:9988 TSD_ENABLE_RESP=true ./bin/tellstoneSee Configuration for the full list of flags and environment variables.
Advanced Configuration
Section titled “Advanced Configuration”For production deployments, consider setting additional environment variables:
TSD_GC_PERCENT=-1to disable Go’s garbage collector for maximum performanceTSD_MEM_LIMIT_BYTESto set a memory ceiling for the Go runtimeTSD_ENABLE_PROFILING=1to enable pprof profiling on 127.0.0.1:6060TSD_ENABLE_PERSISTENCE=trueto enable WAL persistence for crash recovery
Next: run through the quickstart to store and read your first key.