Token Forge docs
v0.1.0
Live demo Get help
● Start · About 20 minutes

Installation
your endpoint, your keys.

Turn the quick-start copy into a working setup: your own RPC endpoint stored in the operating system's keystore, a mint keypair you generated yourself, and devnet SOL to pay for a first mint.

01Packages and a clean check

  1. Open a terminal in the project folderThe one with pubspec.yaml.
  2. Install packages
    flutter pub get
  3. Run the checks
    flutter analyze   # expect: No issues found!
    flutter test      # expect: All tests passed! (260 tests)
    The tests include guards you will want to keep green: test/no_signing_in_product_test.dart (the app imports no signing library) and test/language_guard_test.dart (no copy that promises a return).

02Your own RPC endpoint Required

Nothing in the package ships with an API key. RPC providers do not allow you to hand your key to other people's apps, so a product that shipped one would break their terms for every buyer. Until you add yours, the forge uses api.devnet.solana.com or api.mainnet-beta.solana.com. Those are rate limited and refuse getProgramAccounts, so the console's holder list, and the Expiry, Approvals and Fees tabs that depend on it, cannot work there. The app says so on screen instead of showing an empty list.

  1. Get an endpointSign up with any Solana RPC provider. A free tier is enough. Copy the devnet URL, and the mainnet URL if you plan to use mainnet.
  2. Open Settings → Your RPC endpointsPaste the URL into Set the devnet endpoint (and Set the mainnet endpoint).
  3. Save endpointsBoth are checked before either is saved: the URL must be https://. The only exception is localhost or 127.0.0.1, for a local validator.
  4. Check itDevnet, in use now shows your provider's host with the rest hidden, for example https://your-provider.example/···.
Where it is stored

The whole URL is treated as a secret (providers put the key in the path or query). It goes to the operating system's secure store through flutter_secure_storage: the Keychain on macOS and iOS, the Android Keystore, the browser's storage on web. It is never written to the app's ordinary settings, a log or an export, and it is always shown redacted. Code: CredentialStore in lib/core/config/config_store.dart.

If it does not stick

"Keystore unavailable" or "The keystore refused the write" means the endpoint is used for this session only. On macOS add the Keychain Sharing capability (how); on the web serve the app over HTTPS (details).

03Endpoint at build time (CI or kiosk)

For a build that should start with an endpoint already set, pass it as a compile-time value. Both default to empty. A value saved in Settings takes priority over the compiled one.

flutter build web \
  --dart-define=FORGE_DEVNET_RPC_URL=<YOUR_DEVNET_URL> \
  --dart-define=FORGE_MAINNET_RPC_URL=<YOUR_MAINNET_URL>
Careful

A value compiled into a web build ends up in the JavaScript anyone can download. Use it only for a private build or with a key restricted to your domain. Never commit a build script with a real URL in it.

04Make the mint keypair Required

The forge asks for a mint address; it never creates one. A tool that generates your mint keypair is a tool that has held your key. With the Solana CLI:

solana-keygen new --no-bip39-passphrase -o mint.json
solana-keygen pubkey mint.json   # prints the mint address

Paste the printed address into Mint address on step 6 of the build. The mint keypair signs the creation transaction together with your fee payer. Keep mint.json out of any Git repository.

05Devnet SOL for the fee payer

The fee payer pays rent for the mint account and the network fee. On devnet, fund your wallet with free test SOL, for example:

solana airdrop 1 <YOUR_WALLET_ADDRESS> --url devnet

The build sheet has Read its balance to check the fee payer before you build. The devnet faucet has limits; if the airdrop is refused, try again later or use a web faucet.

06Installed: what now

  • Settings → Your RPC endpoints shows your host, not the public endpoint.
  • You have a mint address from solana-keygen and a funded devnet fee payer.
  • Next: Create a token on devnet, then go through Settings.