Skip to content
@keicoin-org

kei

The Kei coin: an owl pushing a boulder uphill between two olive branches, reading UNUS KEI above a lyre marked with the Roman numeral one.

Kei

A feeless blockchain with native tokens, and a TypeScript SDK that puts a browser game's
currency, items, loot and player market on-chain — without the developer ever running
payment infrastructure.

keicoin.org · Docs · Live examples · llms.txt


PlayFab is the category. One primitive is the product.

The reason Kei can exist is a single gap: a card processor cannot take a $0.001 payment, because the fee exceeds the payment. A feeless chain can. Every repository here follows from that one sentence.

import { Kei } from 'kei-transaction'

const kei = await Kei.start()          // wallet created, persisted, funded on testnet
await kei.send('kei_3abc...', 0.001)   // sub-cent, instant, feeless

No signup, no API key, no wallet extension, no dashboard, no database.

Read this before anything else

The honest boundaries are stated here as prominently as the capabilities, because someone adopting Kei on a false premise builds something broken and has a worse time than someone who passed.

Mainnet Does not exist. It is gated on network security, reserve governance, and a legal conversation — none of them finished.
Testnet One best-effort node at https://testnet.keicoin.org/rpc. Weak consensus, no uptime promise, published keys, and it may be rebuilt without notice.
Value None. There is no sale, no presale, no listing, and no airdrop. Testnet Kei is worth nothing by construction, and no one should hold anything here they would miss.
Domain keicoin.org is the only one. Not .com, not any other suffix. Anything published elsewhere claiming to be Kei is not Kei.

Try it in a browser

Button A green button on a pole. The smallest thing that exercises every primitive.
Carpet Markets A coin launchpad, pump.fun-shaped, where the difference between a rug and a real one is a transfer policy the chain enforces.
World of Wonder A multiplayer 3D RPG whose gold, items, vendor and bag live on the chain.

The hosted demos currently run against in-memory mock ledgers rather than the public testnet, so they reset. The code in the repositories talks to the real node.

Start building

npm create kei-game        # scaffolds a project you own, then gets out of the way
bun add kei-transaction    # or add the SDK to a game you already have

kei-transaction@0.3.0 is on npm, along with every @keicoin/* package — core, tokens, claims, market, wallet, and work. The umbrella package is the default install; the scoped ones exist for people who care about bundle size.

The repositories

Five products and two supporting repositories. They are deliberately separate: a consensus bug fix and an SDK typo fix must never share a release, and a developer cloning the game template must not download a blockchain.

Repository What it is Stack
kei-node The chain. A Banano fork adding a native token primitive, rooted claims, and a Kei genesis. C++
kei-transaction The SDK, and the product — what developers actually touch. A monorepo of @keicoin/* packages. TypeScript
kei-wallet The standalone wallet, forked from BananoVault. Keys never leave the machine. TypeScript (Angular)
world-of-wonder The multiplayer 3D RPG template, forked from orion3dgames/t5c and wired to Kei. TypeScript, Babylon.js, Colyseus
button The demo game. Ten files, every primitive. TypeScript
carpet-markets The worked example of @keicoin/market. TypeScript
keicoin-site keicoin.org — docs, examples, and the machine-readable surface. TypeScript, Cloudflare Workers

Four facts about the design

Token balances are enforced by consensus. Not by an SDK ledger, not by the developer's Postgres, and not by an indexer's interpretation of ordinary transactions. That is the whole reason a fork was necessary rather than a meta-protocol.

An item is a native token with supply 1. Ownership is balanceOf — one call, no crawling, no background indexer. Item transfer is token transfer, so there is one code path rather than two.

The transfer policy is the argument. Every token declares open, issuer-only, or none at issuance; the node enforces it and it is immutable thereafter. open means a permissionless market will eventually appear whatever the developer would prefer. issuer-only means players genuinely cannot trade with each other. none is soulbound. There is no fourth option and no way to have two of them.

Loot is one issuer block and a thousand player claims. The issuer publishes a Merkle root committing to an entire batch of entitlements; each player proves membership and writes the claim to their own chain. Because every account in a block-lattice has its own chain, those claims happen in parallel with no ordering contention — a monolithic chain would serialise them and charge gas for the privilege.

What Kei is not

Each of these was considered and rejected for cause. Please do not open a pull request adding one.

  • No smart contract VM. No EVM, no Solidity, no gas. A native token primitive is not a VM and must not grow into one.
  • No play-to-earn. "Earning" requires money to exit, which requires perpetual new buyers. Anyone may build it on Kei; this project does not ship or promise it.
  • No on-chain exchange, AMM, or order book. The chain moves assets; it does not price them. A swap settles a trade two parties already agreed on.
  • No game world of our own. Anything that needs a population before it has value is out of scope by definition.
  • No general game-backend features. Leaderboards, matchmaking, analytics, and cloud save are ordinary database work. Use PlayFab alongside Kei — that is a feature, not a gap.

The test for whether something belongs: does it need consensus or custody? If yes, it is in scope. If no, it is someone else's database.

Contributing

Contributions are welcome, and the fastest way to have one merged is to know which of these you are working on.

If you Start at
write TypeScript and games kei-transaction — read its README first, then button for the smallest working integration
write C++ and care about consensus kei-node, which carries a CONTRIBUTING.md inherited from the Nano lineage
care about how keys are handled kei-wallet — it holds real seeds, so it moves carefully
want to build a game on it world-of-wonder or carpet-markets; both are templates you are meant to own and modify
write documentation keicoin-site — including llms.txt and AGENTS.md, which are read more often than the prose

House rules

  1. The design specification is the brief, and anything not in it is out of scope until it is in it. If a change needs the scope widened, open an issue arguing for the spec change before writing the code — that conversation is much cheaper than a rejected pull request.
  2. Open an issue before a large change. A one-line fix needs no ceremony. A new package, a new block type, or a new dependency does.
  3. CI is the gate. kei-node, kei-transaction, carpet-markets, and world-of-wonder build in CI; the node's build is slow, so expect a long loop on consensus changes and make each run count.
  4. State what is not true. Status claims across this project are deliberately narrow — "merged" is not "deployed", and "published" is not "in production". Keep that habit in documentation and pull request descriptions.
  5. Security issues are not normal issues. A defect in block validation, token policy enforcement, or key handling should not go in a public issue tracker. Use private vulnerability reporting on the affected repository, or contact a maintainer directly.

Licensing

kei-transaction, kei-wallet, and carpet-markets are MIT. kei-node is BSD-3-Clause, inherited from the Nano and Banano lineage. world-of-wonder carries its upstream terms from orion3dgames/t5c, with attribution preserved. button and keicoin-site do not carry a LICENSE file yet — if you intend to reuse either, ask first.


Built on Banano, itself a fork of Nano. Wallet forked from BananoVault, itself forked from NanoVault. Game template forked from orion3dgames/t5c.

Pinned Loading

  1. kei-node kei-node Public

    The Kei node. A Banano fork adding a native token primitive and a Kei genesis.

    C++

  2. kei-transaction kei-transaction Public

    The JS SDK for serverless authoratative transacting, using kei as the backend

    TypeScript

  3. kei-wallet kei-wallet Public

    Forked from BananoCoin/bananovault

    Open source wallet for using the Banano cryptocurrency

    CSS

  4. keicoin-site keicoin-site Public

    The splash site for keicoin.org

    TypeScript

Repositories

Showing 9 of 9 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…