Logos Kit

Quickstart

From the Logos Kit catalog to your own Basecamp app that connects, gets test funds and sends LGO with a receipt.

You'll install the wallet from its catalog, make a first send in it, then build the template app and use it to connect, get test funds and send.

The dApp template showing a transaction receipt
Where you'll end: the template after a send, with its receipt.
PartTime
1. Wallet from the catalog, first sendabout 5 minutes
2. Your app from the template5–10 minutes with Nix installed; the first nix build can take 20+ minutes on a cold cache
Private transfers (optional)4–7 minutes per proof on an M-series Mac

You need: Basecamp (macOS on Apple silicon, or Linux x86-64 or arm64) and, for part 2, Nix with flakes enabled.

1. The wallet

Add the Logos Kit catalog

In Basecamp: Settings → Package Repositories → Add, and paste exactly:

https://raw.githubusercontent.com/logos-kit/logos-kit-modules/refs/heads/main/logos-repo.json
Adding the Logos Kit catalog in Basecamp settings

Install Logos Kit Wallet

Open Applications, pick Logos Kit Wallet, press Install. Basecamp pulls the core module (logos_kit_wallet) with it. The wallet appears in the sidebar.

Installing Logos Kit Wallet from the catalog

Create a wallet

Open it and choose Create wallet. Pick a password, then write down the recovery phrase: it's shown once. The wallet opens on the official LEZ testnet (lez:testnet), which runs LEZ v0.3.0.

Logos Kit Wallet opening in Basecamp after a catalog install, on the preview network

Get test funds, then send

On the home screen, press Test LGO. Logos Kit's testnet faucet sends 1 LGO to your public account. Then Send some to a second public account (account menu → + Public account) and approve it. On the testnet it can take a minute or more to land.

Wallet home for a public account
A funded public account.
Reviewing a send before approving it
Every send is reviewed first.

2. Your app

Start from the template

mkdir my-app && cd my-app
nix flake init -t github:logos-kit/logos-kit#dapp

You get a ui_qml module: metadata.json, qml/Main.qml, the SDK in qml/LogosKit/, the UI kit in qml/LogosKitUi/, and the wallet's contract in logos_kit_wallet.lidl.

Name it

In metadata.json, set name (lowercase with _), display_name and description, and replace src/icons/icon.png. Keep every intent you use under uses, as objects:

"uses": [
  { "intent": "lez.wallet.connect" },
  { "intent": "lez.transaction.send" },
  { "intent": "lez.wallet.request_funds" }
]

Build and install

nix build .#lgx-portable

Install result/*.lgx from Basecamp's Package Manager → Install from file, or with lgpm install --file result/*.lgx. Your app appears in the sidebar.

Connect, get funds, send

Open your app and press Connect wallet. Basecamp routes the request to Logos Kit, and the wallet asks which account to share.

An app asking to connect: the accounts to share and what it may do

Then Get test funds (the wallet shows its faucet sheet) and send. The template's code for the send:

import "LogosKit"

LogosKit { id: kit; visible: root.visible }

kit.api.transfer(root.account, to, "42").then(function (r) {
    kit.api.watchTransaction(r.handle, function (s) {
        if (s.lifecycle !== "included") return
        root.phase = s.outcome === "success" ? "done"
                   : s.outcome === "failure" ? "failed"
                   : "unconfirmed"          // re-check the balance before calling it done
    })
})

Amounts are lepta, as strings (1 LGO = 10^9 lepta): "42" is 0.000000042 LGO. Turn what the user types in LGO into lepta with kit.sdk.parseUnits(text, 9), and show amounts with kit.sdk.formatUnits(amount, 9).

The wallet shows the approval with your app's icon and name. Once it lands, the template shows the receipt.

Approving a testimonial post: decoded, source-verified, with the fee cap
Your proposals appear decoded, with your app's name.

If something goes wrong

SymptomCauseFix
Connect fails with not_declaredThe intent isn't in metadata.json uses (or it's a bare string)Add it as { "intent": "…" }, rebuild, reinstall
Connect does nothing, or fails with unavailableNo wallet provides the intent: Logos Kit isn't installed, or the core module didn't loadInstall Logos Kit Wallet from the catalog; restart Basecamp; check it opens
Basecamp asks which wallet to useMore than one wallet provides the intentPick Logos Kit
4900 DisconnectedThe wallet is locked or not set upOpen Logos Kit Wallet and unlock it
The wallet shows an offline banner, or 4901The sequencer isn't reachableCheck the network pill in the wallet; the testnet's status is on this site's home page; retry later
rate_limited on test fundsOne drop per account per hour, five per IPWait for the countdown
Included, but unknownThe wallet couldn't prove the effectRe-read the balance; show "not confirmed yet" until it moves

More in Troubleshooting.

Develop against a local chain

The SDK follows the wallet's network. Run e2e/standalone.sh from a checkout of this repo (a local sequencer on :3040), switch the wallet to LEZ local (Settings → Network), and your app follows. kit.chain tells you where you are.

Next

On this page