The messaging layer for VBWDMeinChat2026

Your platform's
own messenger.

Nickname identity, a private address book, real-time 1-on-1 chat with images, and peer-to-peer token transfer — built into VBWD, on web and iOS.

MeinChat gives your users a way to find each other by nickname, save contacts, message 1-on-1 with text and image attachments delivered in real time, and send each other platform tokens — without exposing email or phone numbers. It ships as a VBWD plugin (Flask backend, Vue web app, Swift iOS app), runs on your own infrastructure, and rides the same event bus, identity and RBAC as the rest of your platform.

What it is
In-platform 1-on-1 messaging
+ peer-to-peer token transfer
Identity
Nickname directory
no phone / email exposed
Delivered as
A VBWD plugin
Flask · Vue web · Swift iOS
Secure tier
MeinChat Plus
Signal-style E2E encryption
MeinChat · Features
MeinChat · What it does

Find people, message them,
send them tokens.

A complete 1-on-1 messaging surface for your users — identity, contacts, real-time conversations and value transfer — with a moderation surface for your admins. No external accounts, no phone numbers.

@

Nickname identity

A public nickname directory with prefix typeahead search and a shareable nickname card. Changing your nickname is free with no cooldown — users are found by handle, not by email or phone.

Private address book

Each user keeps their own contacts — add, remove, pin and sort. Contacts are per-user and private; no shared global graph.

1-on-1 messaging

Text plus image attachments, read receipts, and hard delete on both sides (no tombstone). Conversations auto-create on first message to a nickname.

Real-time delivery

Messages arrive live over a Server-Sent-Events stream — no polling. No "online dot": last-seen is derived from the last message, by design, not a presence tracker.

P2P token transfer

Send platform tokens to a contact straight from chat (minimum 1), with a full transfer history. Messaging and the token economy in one surface.

Admin moderation

Ban / unban nicknames, inspect any conversation by ID, and audit every token transfer — each behind its own RBAC permission key.

Two clients, one backend. The same MeinChat backend serves the Vue user dashboard (a single "Messages" nav entry) and a native Swift iOS app — so users carry their conversations between web and phone.
MeinChat · Features
02 / 10
MeinChat · Technology
MeinChat · How it's built

A VBWD plugin —
backend, web and iOS.

A plugin bundle, not a separate service: the backend plugs into the platform's DI, event bus and RBAC; web and iOS share one REST + streaming surface.

Plugin backend

MeinchatPlugin(BasePlugin) — 5 SQLAlchemy models (nickname, contact, conversation, message, transfer), repos + services, flat blueprint, idempotent Alembic migrations and demo seed.

SSE streaming

POST /messaging/stream/token mints a 60-min JWT (aud=meinchat-stream); the client opens an EventSource. Live, not polled.

Redis fan-out

Redis pub/sub broadcasts across gunicorn workers so delivery is consistent under load — with an in-process bus fallback when Redis is unreachable.

Rate limits

Per-user rate limiting on messaging and transfers, plus Redis-bus hardening, keep the surface abuse-resistant.

Vue web client

Routes under /dashboard/messages/*; Pinia stores for nickname, contacts and conversations; a stream composable with token-mint + auto-reconnect.

Admin surface

A separate fe-admin plugin for moderation — nickname table, conversation lookup, transfer audit log — gated by per-action permission keys.

Native iOS

A Swift package in the vbwd-ios app (TestFlight): capability discovery, a Keychain-encrypted local message cache with a 10-day TTL, and retention settings.

Self-hosted

Runs in your own containers. Conversations and transfers live in your PostgreSQL; no data leaves your infrastructure.

Extension ports. MeinChat exposes six extension seams — capability discovery, delivery tracking, retention policy and more — which is exactly how MeinChat Plus bolts on without forking the base plugin.
MeinChat · Technology
03 / 10
MeinChat · Positioning
MeinChat · Where it sits in the market

Not support chat. Not WhatsApp.
Your users, messaging on your platform.

Most "chat" products are either support widgets (Intercom, Zendesk) or consumer messengers (WhatsApp, Telegram). MeinChat is neither: it's user-to-user direct messaging that lives inside your own platform and settles in your own token economy.

vs. support-chat SaaS

Intercom & co. connect a visitor to your staff. MeinChat connects your users to each other — a social/transactional layer, self-hosted, with no per-seat or per-resolution bill.

vs. consumer messengers

WhatsApp/Telegram pull people off your platform into someone else's app. MeinChat keeps the conversation on your brand, your infrastructure, tied to your accounts and identity.

The wedge

Messaging wired to value. Users find each other by nickname and can move tokens in the same thread — chat and the loyalty economy as one surface.

@

Privacy by handle

People connect by nickname, never by exposing email or phone. Contacts are private and per-user — no harvested global social graph.

Data residency

Self-hosted by design — conversations and transfers stay in your database, your region, your backup policy.

Upgrade path

Start with fast, moderatable messaging. Turn on MeinChat Plus where confidentiality matters — same product, end-to-end encrypted.

ICP. Operators running a VBWD platform — marketplaces, hotels, clinics, communities — who want their users to talk and transact with each other in-product, on web and iOS, instead of leaking that engagement to an external app.
MeinChat · Positioning
04 / 10
MeinChat · In practice
MeinChat · What it changes — and its scope

Engagement that stays
on your platform.

MeinChat turns a platform of isolated accounts into a network: people find each other, talk, and move value — all in-product. And it's deliberately scoped, with the hard decisions made explicit rather than hidden.

Network effects

Nickname discovery + contacts + token transfer give users a reason to bring others onto the platform and to come back to it.

Live, on two clients

Real-time SSE delivery on the Vue web app and the native iOS app — conversations follow the user from desk to phone.

Governable

Moderation and a full transfer audit trail mean you can run it responsibly — ban abuse, inspect on report, account for every token moved.

Honest about scope. By design: no live presence (last-seen is derived, not tracked); message delete is hard on both sides with no tombstone; contacts are private per user; a banned nickname's handle is only freed after a configurable grace period (default 30 days). Simple, predictable rules — not a half-built social network.
Want confidentiality too? Everything here is fast and server-readable for moderation. When messages must be private even from you, MeinChat Plus adds Signal-style end-to-end encryption on top — next.
MeinChat · In practice
05 / 10
MeinChat Plus
Section opener · end-to-end encrypted chat
Same conversation. Sealed end to end.

MeinChat Plus.

Signal-style encryption — the server stores ciphertext it cannot read.

MeinChat Plus · Opener
06 / 10
MeinChat Plus · Features
MeinChat Plus · What the secure tier adds

End-to-end encrypted —
the server holds no keys.

MeinChat Plus layers Signal-style end-to-end encryption onto the same conversations. Clients encrypt and decrypt; the server only validates the shape and size of an opaque envelope, stores it, and tracks delivery. It never holds a key and never sees plaintext.

🔒

True E2E encryption

Every message is sealed on the sender's device and opened only on the recipient's. Stored as ciphertext — your own server provably cannot read it.

Forward secrecy

A Double Ratchet rotates keys every message, so a compromised key can't unlock past or future messages. Out-of-order and skipped messages are handled without breaking the chain.

Multi-device

Messages fan out per registered device and decrypt on each. Web and iOS exchange the same ciphertext through one instance.

Encrypted attachments

Images are sealed too — one encrypted blob plus a per-recipient wrapped key, with full-resolution and thumbnail both protected.

Downgrade-proof

Fail-closed: the client refuses to send in the clear on a conversation the server hasn't pinned to e2e_v1. No silent fallback to plaintext.

Blind admin

Because the server can't read messages, the admin tool is deliberately thin: look up a user's public device keys for abuse triage — there is no conversation inspector.

On by default, opt-out per user. At v1 the secure tier ships enabled. A device unlocks its keys with a passphrase (a pairing step); an operator can disable the plugin per instance and a user can disable it per device — which cleanly restores plain MeinChat.
MeinChat Plus · Features
07 / 10
MeinChat Plus · Technology
MeinChat Plus · The cryptography

X3DH + Double Ratchet,
audited primitives, zero server keys.

Signal's protocol in audited pure-JS that runs in the browser, with a Swift client on iOS — and a backend that never touches a key.

X3DH agreement

One Ed25519 identity key (with its X25519 projection), a signed prekey and one-time prekeys. Initiator and responder derive the same secret; prekeys are consumed atomically (SKIP LOCKED).

Double Ratchet

DH + symmetric KDF chains give per-message forward secrecy; the header is bound into the AEAD additional data; a bounded skipped-key cache tolerates out-of-order delivery.

Noble primitives

@noble/curves (X25519/Ed25519), @noble/ciphers (ChaCha20-Poly1305), @noble/hashes (HKDF/HMAC), hash-wasm (Argon2id) — browser-safe, not the native libsignal addon.

At-rest keys

An Argon2id passphrase KEK wraps device + session keys, stored in IndexedDB. The pairing sheet turns a passphrase into that KEK — keys never sit in the clear.

Opaque envelopes

The wire format is a CBOR envelope with 256-byte length-hiding padding. Server-side a SignalEnvelopeValidator checks only shape + size — never content.

Extension ports

It registers against MeinChat's six seams — device-key directory, both-peers-have-keys, e2e capability, delivery marking, retention — so the base plugin isn't forked.

Fail-closed

A downgrade guard refuses any conversation the server didn't pin to e2e_v1; tamper, wrong-key and replay are rejected by the AEAD construction.

Web ↔ iOS

A Swift Signal client + device pairing ships in the iOS app, interoperating with the web client's ciphertext through the same backend.

Documented, not hand-waved. The construction, security properties, threat model and known limitations live in a crypto-audit doc, and a TDD spec set covers the protocol — ratchet round-trip, forward secrecy, tamper detection, skipped keys, downgrade fail-closed — plus a production key-distribution smoke.
MeinChat Plus · Technology
08 / 10
MeinChat Plus · Positioning
MeinChat Plus · Where it sits in the market

Signal-grade privacy,
inside your own platform.

Secure messaging today means a separate consumer app (Signal, WhatsApp) or a SaaS chat where the vendor can read your data. MeinChat Plus is the third option: the same end-to-end guarantees, embedded in your product and running on your infrastructure.

vs. consumer messengers

Same protocol family as Signal — but on your brand, your servers, tied to your accounts, with a web client too. Privacy without sending users to a third-party app.

vs. SaaS chat

Intercom, Zendesk and friends can read every message. Here the server holds no keys — "we can't read your messages" is an architectural fact, not a privacy-policy promise.

The wedge

Zero-knowledge messaging as a platform feature. Confidentiality that's provable, self-hostable, and native to the system your users already trust.

Compliance & trust

A defensible answer for regulated or sensitive contexts — health, legal, finance, communities — where "the operator can't read it" is the requirement.

E2E-aware retention

Retention understands ciphertext: encrypted at rest on the server, with a device-side cache TTL — privacy and data-minimisation together.

Additive & reversible

It sits on MeinChat through extension ports. Enable where confidentiality matters; disable per device or per instance to fall back to plain messaging.

The one-line pitch. MeinChat is your platform's built-in messenger and token-transfer layer; MeinChat Plus makes it end-to-end encrypted — Signal-style, zero-knowledge server, web and iOS — without leaving your stack.
MeinChat Plus · Positioning
09 / 10
MeinChatMessaging + token transfer, optionally E2E2026

Two tiers, one conversation.

MeinChat is your platform's own messenger — nickname identity, a private address book, real-time 1-on-1 chat with images, and peer-to-peer token transfer, on web and iOS. MeinChat Plus seals it end to end with Signal-style encryption on a zero-knowledge server. Self-hosted, governable, and honest about its scope.

See it live
vbwd.cc/meinchat/demo
Web + iOS (TestFlight)
MeinChat
1-on-1 messaging + tokens
Moderatable · self-hosted
MeinChat Plus
Signal-style E2E encryption
Zero-knowledge server
Become a partner
vbwd.cc/partner
Resell to your book
vbwd.cc · MeinChat — the messaging layer for your platform
10 / 10