v1.0.1 · Free & open source · Self-hosted · Windows

Iskra
Voice & text chat.
No strings attached.

Run your own server. Own your data.
No accounts, no cloud, no subscriptions. E2E encrypted DMs built in.

Download Client View Source

Windows 10/11 · Requires .NET 8 Desktop Runtime · PolyForm Noncommercial

Your machine, your data
E2E encrypted DMs
WebRTC P2P voice
Open source
Plain-text storage
No telemetry

Everything you need.
Nothing you don't.

Built to replace Discord for real groups. Not stripped down. The full thing, running on your hardware.

Voice Channels

Push-to-talk or voice activation. WebRTC peer-to-peer with TURN relay fallback for friends behind strict NATs. Noise suppression via RNNoise. Per-user volume control.

New

1:1 DM Voice Calls

Call anyone directly from a DM conversation. Accept or decline with a popup, mute mid-call, see a live timer. No separate app, no phone number. Just click and you're talking.

Text Channels

Markdown, image embeds, file uploads, reactions, edits, pins, threads, polls, GIF search, @mentions, reply quotes, link previews. History stored as plain .jsonl files. No database.

End-to-End Encrypted DMs

Two layers: IskraID relay DMs are always E2E encrypted — zero-knowledge, the server sees only ciphertext. Local alias DMs can be encrypted with a passphrase-protected key stored only on your device. AES-GCM 256, ECDH P-256. The server operator cannot read either.

Roles & Auth

Five role tiers: guest, member, trusted, admin, owner. Per-channel read and write role requirements. Three auth modes: open, registered+guests, or verified-only. HWID-based identity tracking for bans.

Direct Messages

Server-to-server private conversations with read receipts, unread badges, edit and delete. No separate channel needed. Right-click any user and message them.

Screen Share & Webcam

Share your screen or webcam to anyone in a voice channel. Includes system audio. No plugins, no browser extension, no third-party service involved.

New

Media Gallery & Message Links

Gallery button in any channel shows every image and video shared, all at once. A link icon on any message copies a direct deep link. Clicking it smooth-scrolls and flashes the message.

Soundboard

Add your own clips (.mp3, .wav, .ogg) and play them straight into a voice channel. The sound mixes with your mic. Everyone in the channel hears it.

Webhooks & Bots

Post to any channel via HTTP webhook. Build bots that connect as a regular WebSocket client using a named token. No rate limits, no approval process, no platform rules to navigate.

Audit Log & Backup

Every admin action is logged. Download a full backup ZIP from the admin panel: chat history, roles, bans, avatars, uploads, all of it. Restore by unzipping.

Server Discovery

Server owners can opt in to be listed publicly. Anyone can browse and join without an account. A directory you actually control. You choose who finds your server.

No account needed. Pick a name and connect. Every feature works. IskraID is strictly opt-in. It adds cross-server identity if you want it. Nothing is locked behind it.

Your call.
Use it or don't.

Use Iskra however suits you. The two modes are not tiers. Neither is better. They are just different scopes.

Without IskraID
  • Pick any name, connect instantly
  • Voice, text, files, all features
  • E2E encrypted DMs (optional, local key)
  • DMs with anyone on the same server
  • 1:1 voice calls, screen share, soundboard
  • Nothing sent to any external service
  • Zero signup, zero account
With IskraID
  • Globally unique alias across all servers
  • E2E encrypted DMs across different servers
  • Friends list that follows you everywhere
  • Global avatar sync
  • Personal HTML profile page
  • All of the above, plus everything on the left

Register at account.iskra.foo if you want cross-server identity. The relay is zero-knowledge: it stores only encrypted ciphertext and cannot comply with a decryption order. Your private key is derived from your password on-device and never sent anywhere.

Friends across servers

Add anyone by alias. Message them even if you're not on the same server. Read receipts show when your message was seen.

Zero-knowledge relay

ECDH P-256 + AES-GCM 256. The relay stores blobs it cannot decrypt. Your key never leaves your device.

Personal profile page

Link your Neocities, GitHub Pages, or Cloudflare Pages site. Anyone can view it by clicking your name. Rendered in a sandboxed iframe. Scripts stripped, your HTML intact.

Server discovery

Server owners can opt in to be listed at iskra.foo/findservers. Public listing, no account needed to browse.

Your profile.
No paywall.
No ceiling.

Discord charges $10/month for an animated avatar and a banner color. That's the product. That's Nitro.

Iskra profiles are a full HTML page you write and host yourself. Embed your best fragvideo. Drop in a music player. Put a Spotify widget, a custom layout, a photo gallery, a manifesto. Whatever you actually want to be known for. No feature tiers, no "profile effects" to unlock, no badge shop, no currency. Just a URL and whatever you put on it.

Host it on Neocities, GitHub Pages, or Cloudflare Pages. All free. Link it to your Iskra ID. Everyone who clicks your name sees it.

Full HTML page Host it anywhere No unlocks, ever Free forever

Embed a video

Your best clip, a fragvideo, a highlight reel. Drop a YouTube embed, add autoplay with muted audio, style it however you want. It shows up right in your profile.

Add music

Spotify widget, SoundCloud embed, an audio tag pointing at your own file. Let people know what you're listening to without asking anyone's permission.

Full HTML and CSS

Custom fonts, animations, layouts, colors. Write it like a webpage because it is one. Rendered in a sandboxed iframe so it can't reach outside your profile.

No approval required

No content team reviewing it. No strikes, no "violates community guidelines," no waiting for review. Update it whenever, however you want.

What people could actually build.

Two example profiles: full HTML, self-hosted on free platforms, linked to an Iskra ID. Nothing to unlock. Embed video? Yes.

Please show us your creations, there might even be a contest!

psychok1llr98.neocities.org
SSJ
PsychoK1LLr98_TTV
● LIVE    412 viewers
"i love to pwn noobs in CS2, LOL and Dota2"
CS2
Global Elite
League of Legends
Diamond I
Dota 2
Herald V
v0idpilot.neocities.org
// system online
v0idpilot
SIGNAL ACQUIRED / SECTOR THETA-7
sector
THETA-7
status
DRIFTING
distance
2.4k ly from home
systems
23 mapped
signal
82%
exploring void since 2019
currently: watching stars die
next jump in T-00:04:17

Looks exactly like yours.

Ten themes ship with Iskra. Write your own in JSON and import it in Settings. Every color, radius, and accent is a variable you control. No mods, no ToS violations, no BetterDiscord workarounds.

Catppuccin
Dracula
Tokyo Night
Nord
One Dark
Solarized Dark
Iskra Dark
Synthwave 1984
Cyber-Lime
Blood Moon
Snippet from the actual JSON

Done with Discord?
Same.

Discord is a VC-funded product optimizing for engagement and monetization. Iskra is a tool you run yourself. The difference is who's in charge.

Discord

  • Your data lives on their servers, forever
  • Good features locked behind $10/month Nitro
  • Account required for every single user
  • DMs are not end-to-end encrypted
  • Your server can be deleted with no warning
  • Platform has been sold once, may be sold again
  • No real export, no backup, no data portability

Iskra

  • Your server, your machine, your files
  • Every feature, always free, forever
  • No account. Pick a name and connect
  • Relay DMs are end-to-end encrypted, zero-knowledge
  • Runs as long as you keep it running
  • Open source. Read it, fork it, audit it
  • Full backup with one click. Restore by unzipping

Up in three steps.

No installer, no cloud setup, no account creation. Just unzip and run.

1

Run the server

Extract iskra_server.exe, drop a server.json next to it, and launch. It's online in under a minute.

2

Share the address

Forward one TCP port on your router. Send friends your IP. That's it. No domain, no SSL cert, no dashboard, no DNS to configure.

3

Connect & talk

Friends unzip the client, enter your address, pick any name, and they're in. Voice, text, files. Everything works immediately.

# Minimal server.json. Edit ServerName and AdminPassword, then run.
{
  "Settings": {
    "ServerName": "My Server",
    "Port": 8080,
    "RequirePassword": false,
    "AdminPassword": "change-this",
    "AuthMode": "open"
  },
  "Channels": [
    { "Id": "v_lobby", "Name": "Lobby", "Type": "Voice" },
    { "Id": "t_gen", "Name": "general", "Type": "Text" }
  ]
}

Pick your setup.

Same binary everywhere. The difference is where it runs, who needs to reach it, and whether you want TURN handled for you or by you.

1

One VPS: Iskra + coturn + nginx Recommended

The cleanest setup for a friend group. One cheap VPS ($6-10/mo, 1-2 GB RAM) runs everything: Iskra server, coturn for TURN relay, and nginx for SSL. Server.json points TurnUrls at the VPS's own public IP. CGNAT-proof for every friend on any ISP. Always-on, no port forward, no home hardware required. Spin it up once and forget about it.

VPS nginx + SSL coturn on same box CGNAT-proof always-on
# apt install nginx certbot python3-certbot-nginx dotnet-runtime-8.0 coturn # /etc/turnserver.conf listening-port=3478 tls-listening-port=5349 realm=yourserver.com user=iskra:yourpassword lt-cred-mech fingerprint # ufw allow 80/tcp 443/tcp 3478/udp 5349/tcp # ufw allow 49152:65535/udp ← TURN relay ports # certbot --nginx -d yourserver.com # server.json — TurnUrls points at the VPS's own IP "TurnUrls": ["turn:yourserver.com:3478", "turns:yourserver.com:5349"], "TurnUsername": "iskra", "TurnCredential": "yourpassword"
2

LAN only

Run iskra_server.exe on any machine on your network. Everyone connects by local IP. No router config, no internet, no TURN needed. Fastest latency possible. Good for LAN parties, offices, or homes where everyone is on the same router.

no port forward no TURN air-gapped
# Minimal server.json { "Settings": { "ServerName": "Home", "Port": 8080, "AuthMode": "open" }, "Channels": [{ "Id": "v_lobby", "Name": "Lobby", "Type": "Voice" }] }
3

Home server, port forward

Forward one TCP port on your router to the machine running the server. Friends connect using your public IP. Clients only need outbound TCP to reach your server, so the connection works fine with a port forward. Voice is a different story: WebRTC P2P requires both sides to have a reachable IP. Most ISPs hand out CGNAT by default today - a real public IP costs extra and you have to ask for it. If any friend is behind CGNAT (likely most of them), voice will not punch through without TURN. See Mode 3.

port forward TCP real public IP required local accounts no cloud
# Router: forward TCP 8080 → your PC's local IP # Friends connect to: your.public.ip:8080 or yourdomain.com:8080 # Voice P2P works only if friends have a real public IP too. # Most don't. Add TURN (Mode 3) to cover everyone. { "Settings": { "ServerName": "Bunker", "Port": 8080, "AuthMode": "open", "AdminPassword": "change-this" } }
4

Home server + TURN (what most people actually need)

CGNAT is the default on most ISPs worldwide. If your friends haven't specifically requested and paid for a real public IP, they're behind it, and P2P voice will fail silently without TURN. Add TURN and voice works for everyone regardless of what ISP they're on. Point the server at the community TURN relay at turn01.ams.iskra.foo or run your own (Mode 4). The credential for the community relay is available from your server account.

recommended for most groups CGNAT-friendly local accounts
{ "Settings": { "TurnUrls": ["turn:turn01.ams.iskra.foo:3478", "turns:turn01.ams.iskra.foo:5349"], "TurnUsername": "iskra", "TurnCredential": "your-credential-here" } }
5

Home server + your own coturn

Run your own TURN server on a cheap VPS ($4-6/mo is enough). Full control over bandwidth and credentials. No dependency on any third-party relay. Install coturn, open UDP 3478 and TCP 5349, configure /etc/turnserver.conf, then point your server.json at it.

self-hosted TURN full control your bandwidth
# VPS: apt install coturn # /etc/turnserver.conf (minimal) listening-port=3478 tls-listening-port=5349 realm=turn.yourserver.com user=myuser:mypassword # server.json "TurnUrls": ["turn:turn.yourserver.com:3478"], "TurnUsername": "myuser", "TurnCredential": "mypassword"
6

VPS, direct

Run the server binary on a Linux or Windows VPS. Open the port in your firewall, point a domain A record at the VPS IP. No nginx, no SSL - plain WebSocket on port 8080. Works fine for private groups. The connection is encrypted at the application layer (TLS is optional via nginx, not required).

VPS direct port always-on
# Ubuntu/Debian VPS apt install dotnet-runtime-8.0 ufw allow 8080/tcp ./iskra_server # DNS: A record yourserver.com → VPS IP # Users connect: yourserver.com:8080
7

VPS + nginx + SSL

The proper production setup. nginx proxies WebSocket connections to the Iskra server running on localhost:8080. certbot handles Let's Encrypt. Users connect to yourserver.com with no port number in the URL, full SSL, looks clean. Spin it up in 5 minutes, port forward is not needed.

nginx SSL VPS no port in URL
# Install: apt install nginx certbot python3-certbot-nginx dotnet-runtime-8.0 # /etc/nginx/sites-available/iskra server { listen 443 ssl; server_name yourserver.com; ssl_certificate /etc/letsencrypt/live/yourserver.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourserver.com/privkey.pem; location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; } } server { listen 80; server_name yourserver.com; return 301 https://$host$request_uri; } # certbot --nginx -d yourserver.com
8

VPS + nginx + IskraID relay

Everything in Mode 6, plus relay support enabled. Users with an IskraID (registered at account.iskra.foo) can send cross-server E2E encrypted DMs and maintain a global friends list across every Iskra server they join. Optionally list your server publicly at iskra.foo/findservers so anyone can discover and join without an account.

IskraID relay cross-server DMs public listing optional E2E relay DMs
# Same nginx config as Mode 6, plus in server.json: { "Settings": { "ServerName": "Public Bunker", "AuthMode": "open", "TurnUrls": ["turn:turn01.ams.iskra.foo:3478", "turns:turn01.ams.iskra.foo:5349"], "TurnUsername": "iskra", "TurnCredential": "your-credential" } } # Enable public listing from the admin panel once the server is running

Your server.
Your rules.

Free forever. No cloud. No bullshit.

Download Iskra Read the docs ☕ Buy me a coffee