SOLSCOPE docs
v0.1.0
Live demo Get help
● Set up · Settings and keys

Configuration
every setting, and where it wins.

Where each value can come from — a build define, the Setup tab, your config URL or the shipped default — and every key the app reads. Parsed by lib/core/config/admin_config_model.dart.

01Four layers, highest first

LayerSet byShown in Setup as
Build define--dart-define at build timeBuild define / Pinned at build — not editable in the app
Operator consoleThe Setup tab, on this deviceSet here
Config documentThe JSON at your config URL, live or from this device's cacheConfig URL / Config URL (cached)
Shipped defaultThe tables belowDefault

Setup → Effective configuration prints every key with the layer its value came from. A console value that hides a published one says so, and names what it hides. fee_enabled can also read Inferred: nobody set it and it follows a positive fee_bps.

Setup is part of every build

The Setup tab is not locked behind a login, and values set there are stored on that device and outrank your config URL. To make sure every install you publish charges your fee, pin it at build time with SOLSCOPE_FEE_BPS and SOLSCOPE_FEE_ACCOUNT (below). A pinned value cannot be changed in the app.

02Build defines

Pass with --dart-define=NAME=value, or list them in .env and use --dart-define-from-file=.env. All are empty by default.

NamePurposeWhere to get it
SOLSCOPE_RPC_URL Before launchYour Solana RPC endpoint. Empty = public fallback, rate limited.Your RPC provider
SOLSCOPE_HELIUS_API_KEYFull holder count, dev-wallet history, funding source. Without it the holder list is limited and those rows say why.helius.dev (free tier)
SOLSCOPE_COINGECKO_DEMO_KEYHigher rate limit for the SOL reference pricecoingecko.com/en/api (Demo)
SOLSCOPE_WALLETCONNECT_PROJECT_IDNot active in this version The WalletConnect relay adapter is not in this build (lib/core/wallet/walletconnect_connector.dart); the option stays greyed either way.cloud.reown.com
SOLSCOPE_ADMIN_CONFIG_URLWhere the admin JSON is fetched fromYour host (how)
SOLSCOPE_FEE_BPSPins fee_bps into the binaryYour choice (Earnings)
SOLSCOPE_FEE_ACCOUNTPins fee_account into the binaryYour fee token account
SOLSCOPE_OPENING_MINTThe token the terminal opens on when the device has no history. Default: JUP.Any mint address
SOLSCOPE_LIVE_HOSTSite the status-bar Docs and site buttons open (<host>/docs/). Default: https://solscope.mikodes.com.Your website
SOLSCOPE_DEMOtrue builds the public demo: no wallet connectors, read-only Setup, a labelled placeholder fee account.Only for a demo build
SOLSCOPE_DEMO_MINTThe token a demo build opens on. Default: JUP.Only for a demo build

Only three admin values can be pinned at build time: the config URL, fee_bps and fee_account. maintenance_mode is deliberately not pinnable, so you always keep one remote stop switch.

03Admin JSON

One JSON document, fetched at start-up and cached. Every key is optional; a missing or malformed key falls back to the default, and a failed fetch leaves the last good config in force. The example below is also the shipped default — the fee is empty.

{
  "maintenance_mode": false,
  "maintenance_message": "",
  "swap_enabled": true,
  "new_token_feed_enabled": true,
  "alerts_enabled": true,
  "paid_listings_enabled": false,
  "fee_bps": 0,
  "fee_account": "",
  "fee_enabled": false,
  "default_slippage_bps": 50,
  "max_slippage_bps": 500,
  "min_app_version": "",
  "announcement": "",
  "announcement_url": "",
  "swap_disclaimer": "",
  "promoted_mints": [],
  "blocked_mints": [],
  "rpc_url": ""
}
KeyType · defaultMeaning
maintenance_modebool · falseShows a full-screen overlay.
maintenance_messagestring · ""Text on that overlay.
swap_enabledbool · trueKill switch for the swap path.
new_token_feed_enabledbool · trueKill switch for the new-pairs feed.
alerts_enabledbool · trueKill switch for alert evaluation.
paid_listings_enabledbool · falseShows promoted_mints. Promoted rows are always labelled as paid.
fee_bpsint 0–10000 · 0Your fee, sent to Jupiter as platformFeeBps. 100 bps = 1 %.
fee_accountstring · ""The token account that receives it, sent as feeAccount.
fee_enabledbool · inferredOmit it and a positive fee_bps means "charge". Set false to switch off without clearing the values.
default_slippage_bpsint · 50Clamped to 1–5000.
max_slippage_bpsint · 500Clamped to 1–5000.
min_app_versionstring · ""Dotted version such as 1.2.0. Empty lets every build in.
announcement, announcement_urlstring · ""Banner text and the link it opens.
swap_disclaimerstring · ""Extra text on the swap confirm, for whatever your jurisdiction requires.
promoted_mintsarray · []{"mint": "…", "label": "…", "expires_at": "ISO-8601"}. An expired or unparseable entry is not shown.
blocked_mintsarray · []Hidden from discovery. A blocked mint still opens by direct address, with the reason stated.
rpc_urlstring · ""Overrides the in-app RPC credential, so you can move endpoints without a new build.

The fee keys may also be nested: { "swap_config": { "fee_bps": 25, "fee_account": "…" } } is flattened on the way in.

04The cache

A fetched document is cached together with the URL it came from. If you change or remove the config URL, a cache from the old URL is deleted rather than applied, so an old fee, block list or slippage ceiling cannot stay in force.

05What is deliberately absent

  • No referral or affiliate field, and no field that maps a code, a user or a wallet address to anything.
  • No auto-execution: alerts notify, they never trade.
  • No analytics or server that receives what users watch. Watchlist, alerts and the trade journal stay on the device.