Zero-knowledge encryption · Open Source · MIT License

Stop pasting
.env files
in Slack

A CLI that encrypts your secrets, generates a self-destructing link, and shares it in 3 seconds. The server never sees your keys.

$curl -fsSL https://raw.githubusercontent.com/kipenv/kip/main/install.sh | shclick to copy

No signup. No credit card. Works in 5 seconds.

AES-256-GCM Zero-knowledge MIT License
terminal
AES-256-GCM encryption·Self-destructing links·Zero-knowledge architecture·Self-hostable · Docker Compose·MIT License · Open source·Argon2id key derivation·Built in Go·No account needed to receiveAES-256-GCM encryption·Self-destructing links·Zero-knowledge architecture·Self-hostable · Docker Compose·MIT License · Open source·Argon2id key derivation·Built in Go·No account needed to receive
See it run

From install to self-destruct, in half a minute.

Two machines, one link. Every line of output was captured from the real CLI running against a real server — nothing here is a mockup.

26s · silent · loops
How it works

Three commands.
Zero friction.

The receiver doesn't even need the CLI — they can open the link in a browser. That's the point.

Push your .env

kip encrypts your file locally with a unique random key. That key never touches our server.

$ kip push .env --ttl 86400 --reads 1

Share the link

The decryption key lives in the URL #fragment — browsers never send that to servers. It's an HTTP protocol guarantee.

https://kip.example.com/s/k9xm2p#AZ7k...

It self-destructs

After the configured reads, the encrypted blob is permanently deleted. TTL ensures deletion even if nobody reads it.

$ kip pull https://... ✓ Saved → .env · Link destroyed
terminal
# Encrypt & upload
$ kip push .env --ttl 86400

Generating AES-256-GCM key... done
Encrypting file locally... done
Uploading ciphertext... done

✓ Ready to share

Link: https://kip.example.com/s/k9xm2p#AZ7kQ...
TTL: 24 hours
Reads: 1 (self-destructs on open)
Zero-knowledge architecture

Even if we're hacked,
attackers get garbage

The server stores only encrypted blobs. The decryption key lives exclusively in your URL fragment — which browsers never transmit over HTTP. It's not a policy. It's cryptographic fact.

AES-256-GCM · Argon2id · base58 URL encoding
Authenticated encryption — tampered ciphertext is rejected
1
CLI generates key locally
key = crypto/rand(32 bytes)
nonce = crypto/rand(12 bytes)
2
Encrypt locally, upload ciphertext only
POST /api/v1/secret
{ ciphertext, nonce } ← no key
3
Key goes in URL fragment only
/s/k9xm2p#AZ7kQR...
browsers never send # to servers
4
Server deletes after reads/TTL
Redis DEL secret:k9xm2p
reads_left = 0 → gone forever
Features

Everything you need.
Nothing you don't.

We do one thing — ephemeral secret sharing — and we do it correctly.

AES-256-GCM encryption

Authenticated encryption. Tampered ciphertext is rejected, not silently corrupted.

Self-destructing links

Configure TTL and max reads independently. Links die after use — Redis TTL guarantees it.

Lightweight teams

Teams work like game lobbies. Create, share an invite code, done. No admin panels, no RBAC.

Web decrypt page

Receivers don't need the CLI. Open the link in a browser — decryption happens client-side.

Secret scanning

Offline regex patterns flag AWS and Stripe keys, GitHub tokens and weak secrets before you share.

Self-host in 30 seconds

Docker Compose. Server + Redis + SQLite in one file. No cloud lock-in. Free forever.

vs. alternatives

The only tool that does
all of this at once.

FeaturekipSlack DMYopassDoppler
Native CLIYESNONOYES
Zero-knowledge encryptionYESNOPARTIALNO
Self-destructing linksYESNOYESNO
Self-hostable (free)YESNOYESNO
Receiver needs accountNONONOYES
Lightweight teamsYESYESNOYES
Secret scanningYESNONOPARTIAL
Starts atFREEFREEFREE$21/user/mo
Self-hosting

Your infra.
Your data.
Zero ops.

One Docker Compose file brings up the Go server, Redis, and an SQLite volume. It runs anywhere — your VPS, Fly.io, Railway, whatever.

No per-seat pricing. Ever.
MIT License — fork it, own it.
SQLite = single file backup
Health check endpoint + structured logging
docker-compose.yml
# That's it. No config files.
services:
kip:
image: ghcr.io/kipenv/kip-server:latest
environment:
REDIS_URL: redis://redis:6379
PORT: "8080"
ports: ["8080:8080"]
volumes: ["./data:/data"]
redis:
image: redis:7-alpine

# Boot in 30 seconds:
$ docker compose up -d
# Point the CLI to your server:
$ kip config set --server http://your-host:8080
FAQ

Straight answers.
No marketing copy.

What happens if the server is compromised? +

Does the receiver need to install anything? +

What does it cost? +

Can I self-host for my company? +

How do teams work? +

What does the secret scan actually do? +

Ship it.
Don't Slack it.

Install takes 5 seconds. First share takes 3 more.

$go install github.com/kipenv/kip/cmd/kip@latestClick to copy

Also: go install github.com/kipenv/kip/cmd/kip@latest · self-host guide