Phone

Open PegLab on your phone

KaChat does not support PC. Scan to open the public lab on iOS or Android.

QR code for the public PegLab page
Scan to open stp-kas.github.io/peglab-stp

How KaChat could use PegLab — and what “real” means

KaChat (kachat.org, vsmirn0v/KaChat) is encrypted chat plus native KAS payments on Kaspa (kchat:1:pay memos, timeout reclaim). It already runs. What it does not have is a unit that stays still while two people argue over a price in a thread.

The unit is a KAS receipt (Parker) or a named USD later. Lab tPEG is not that unit.

PegLab today cannot sit in KaChat as money. This repo is Testnet-10, tiny pool, one admin price. If you treat tPEG as USD it depegs. tPEG cannot pay KaChat — same rule as Parker’s wTestUSD cannot buy crops. Authority: DOCTRINE.md.


What KaChat is today

PieceToday
ChatE2E payloads on L1 (kchat:1:comm, groups, KaPosts)
PayNative KAS to a recipient, optional encrypted memo
Timeout paySketch already exists: KaChatPayTimeout.sil — recipient claims now, sender reclaims after tx.time
IdentityKNS names; aliases are not consensus uniqueness
FeesEvery message and pay still burns KAS mass
FXPortfolio uses CoinGecko; the payment itself is still sompi

The product freeze: people will chat, then refuse to send because KAS moved since the quote. That is the same merchant “don’t spend KAS” problem. A centralized stable on another chain does not fix in-chat Kaspa settlement.


Where PegLab would show up in KaChat

Not as “USDT in the bubble.” As chat actions that keep a number still:

  1. Quote in the receipt, pay in the receipt

“20 000 000 sompi locked” stays that quantity until paid or the timeout fires. The thread is the invoice. Not tPEG. Not $.

  1. Pay with timeout (compose, don’t rewrite chat)

Lock the receipt in a covenant. Recipient claims. If they ghost, sender reclaims after timeout. That is KaChatPayTimeout with Parker’s receipt as the asset instead of raw KAS.

  1. Group split / tip / chess stake

Same covenant family: lock, split, release, or refund. Chat is coordination; L1 is the court.

  1. Bots and agents

A bot quotes work in the unit, KaChat shows the 402 / pay button, sponsor pays KAS fees so the human is not told to go buy dust first.

  1. Display honesty

If the unit is a KAS receipt (1 unit = 1 sompi), the UI says sompi, not dollars. If someone later hosts real USDC, that is a different asset id. Never show tPEG as $.

KaChat does not need PegLab to encrypt. It needs PegLab (or a successor unit) so the pay button is not an FX trade.


Two honest units (pick one in the first sentence)

UnitFirst sentence in KaChatPegLab role
A. KAS receipt“This is locked tKAS. The number is sompi, not USD.”Productionise receipt/covenant transfer + redeem. No oracle. Closest to backed-receipt + PegLab UNIT transfer.
B. Hosted USD“This is USDC/USDT from *named issuer*. Freeze risk is theirs.”PegLab is not the issuer. KaChat lists a foreign asset when it exists on Kaspa.
C. Fake $1 tPEGDo not ship.This lab only. Admin oracle + 2 tKAS pool.

Default for KaChat: A now, B when a real dollar is on Kaspa. C stays the public depeg demo so nobody “just lists tPEG.”

Work credits / grams (WorkCredit.sil) are a fee voucher (KIP-21 mass), not a chat dollar. Useful so messages have prepaid grams. Different button from “pay the designer.”


What must be built to make A real

Order matters. Skipping to mainnet chat-pay is how you mint a bridge IOU.

1. PegLab (or receipt) on Testnet-10 for real

2. A wallet KaChat already is

KaChat is a Swift wallet (Secure Enclave, node pool, UTXO subscribe). KasWare-on-the-web is not enough.

3. Chat protocol

Extend pay, do not invent a second messenger:

4. Fees (“who pays the KAS”)

A “dollar-shaped” pay that first says “go get KAS for mass” is dead UX.

5. Product copy in the app

6. Still not a bank

If KaChat ever shows USD, the issuer is named, freeze is disclosed, and PegLab is not that issuer. Licensed payment stables are a company, not a chat feature.


Suggested build order

StepWhereDone when
0PegLab labPeople can run the depeg demo and read this file
1PegLab TN10One live series, transfer+redeem accepted on Testnet-10, indexer row
2KaChat testnetWallet shows that series balance; send 1 unit in a 1:1 chat with timeout
3FeesPay tx does not fail because the receiver has 0 KAS
4GroupsSplit / tip using the same covenant, still testnet
5MainnetOnly for receipt (A) after audit-lite + KaChat review — still not called USD
6USD in chatOnly if a named USDT/USDC exists on Kaspa

What not to do

Short version: KaChat is the conversation. The unit is a KAS receipt (Parker) or a named USD later. Lab tPEG cannot pay KaChat. Real means a receipt signer in the phone app, a pay payload, and postage in KAS/grams — not a tiny pool that pretends to be $1.

The rest of the product — phones vs PC, copy, support, agents, merchants, what never to do — is VISION.md.


Open KaChat from this site

KaChat is a mobile app. It does not support PC.

DeviceWhat this site does
Windows / macOS / LinuxShows: KaChat does not support PC. No desktop client. Does not send the visitor to kachat.org as if the app will open.
iPhone / iPadOpen KaChat uses kachat:// (registered in KaChat iOS). If the app is missing: App Store id 6759102359.
AndroidChrome intent://kapost + package com.kachat.app (BROWSABLE host kapost; empty path just opens the app). If missing: Play com.kachat.app.

kachat.org has no Apple App Site Association file, so Universal Links on that domain cannot open the app. The custom scheme is what works on a phone. Android does not accept a bare kachat:// with no host.