AXIS docs
v1.0.0
Live demo Get help
● Set up · Every setting

Configuration
every key, every default.

The runtime settings you publish in config.json (or Firebase), the build settings you pass as Dart defines, and the identity constants you edit in code. Every name on this page was checked against the 1.0.0 source.

01Where a value comes from

Highest wins: operator (this device's console) → remote (your published config) → built-in default. How to publish a remote config is in Installation. The console shows the source of each value next to it: OPERATOR, REMOTE CONFIG or BUILT-IN DEFAULT.

Remote sources, in the order the app tries them (lib/main.dart):

  1. Local file, debug builds only on iOS / Android: ~/.axis/admin_config.json, or the path in the AXIS_LOCAL_CONFIG environment variable. Ignored in release builds and on the web.
  2. Hosted JSON at kAdminConfigUrl (lib/core/config/app_config.dart), when not empty.
  3. Firestore document app_config/runtime_admin_config, when Firebase is configured.
  4. Remote Config parameter admin_config (a JSON string), when Firebase is configured.

02Runtime settings (config keys)

The keys AXIS 1.0.0 reads and acts on. Each can be published remotely or set in the operator console.

KeyDefaultWhat it does
hyperliquid_perps_enabledfalseMaster switch for trading. Off refuses new positions and transfers to the stock dex; closing and withdrawing stay available.
stocks_enabledtrueShows the stock / commodity (xyz) markets.
builder_fee_enabledfalseAttaches your builder code to orders. See Earnings.
builder_addressemptyThe address Hyperliquid pays. 0x + 40 hex characters, not the zero address.
builder_fee_tenths_bps0Perps fee in tenths of a basis point, 1 to 100 (100 = 0.1 %, the protocol cap).
builder_fee_stock_tenths_bps0Same units for the xyz markets. 0 = use the perps fee.
app_nameAXISWindow / task title and the About screen.
primary_color#7CF5D5Accent colour, as #RRGGBB. Invalid values fall back to the default mint.
taglineemptyShown on the About screen.
support_emailemptyUsed by the Support screen. Empty = kAxisSupportEmail from axis_identity.dart.
support_url, websiteemptyLinks on the About screen.
twitter, discord, telegramemptyOptional social links on the About screen; hidden when empty.
walletconnect_project_idemptyReown project ID for dApp connections (or use the REOWN_PROJECT_ID build setting).
walletconnect_enabledtrueTurns the WalletConnect screen on or off.
maintenance_modefalseReplaces the whole app with the maintenance screen.
maintenance_message"We'll be back soon…"Text on the maintenance screen.
min_app_versionemptyForces an update below this version (for example 1.2.0). Empty disables the check.

Most keys also accept camelCase (builderAddress, hyperliquidPerpsEnabled …).

Keys that do nothing yet

Not active in this version The model and the console still carry keys from the wallet engine AXIS grew from. No AXIS screen reads them: swap_enabled, bridge_enabled, buy_enabled, sell_enabled, send_enabled, discover_enabled, and the swap fee (fee_enabled, fee_wallet_address, fee_bps). Leave them at their defaults.

The network is not a config key

Mainnet / testnet is chosen at build time (HYPERLIQUID_NETWORK, below) or per device in the operator console. A published config cannot move a build between networks, on purpose.

03Example config.json

Example only: replace the address with one you control, and choose your own rate.

{
  "hyperliquid_perps_enabled": true,
  "stocks_enabled": true,
  "builder_fee_enabled": true,
  "builder_address": "0x<your-40-hex-character-address>",
  "builder_fee_tenths_bps": 10,
  "builder_fee_stock_tenths_bps": 0,
  "app_name": "<Your Terminal>",
  "primary_color": "#7CF5D5",
  "support_email": "support@<your-domain>",
  "website": "https://<your-domain>",
  "maintenance_mode": false,
  "min_app_version": ""
}

Keys you leave out keep their built-in default. A value that fails validation (a malformed address, a fee above 100) is not applied: the build falls back to no builder code rather than blocking trading.

04Build settings (Dart defines)

Passed as --dart-define=NAME=value or in a file with --dart-define-from-file=<file>. They are compiled in; changing one needs a new build.

NameDefaultPurposeWhere to get it
HYPERLIQUID_NETWORKmainnetmainnet or testnet. Anything unrecognised resolves to mainnet.Your choice
REOWN_PROJECT_IDemptyWalletConnect (Reown). Empty = dApp connections unavailable.cloud.reown.com
AXIS_DEMOfalseSeeds sample data for a demo site. Never for a real build (why).—
WEB_PUSH_VAPID_KEYemptyWeb push through Firebase Cloud Messaging.Firebase console → Project settings → Cloud Messaging
APP_STORE_URL, PLAY_STORE_URLemptyStore links used by the update prompt.Your store listings
APP_VERSION, APP_BUILD, APP_PACKAGE1.0.0, 1, com.axisterminal.appShown on the About screen.Match pubspec.yaml and your IDs
REMOTE_CONFIG_URLemptyOptional JSON for the client feature flags on Account → Operator flags (a separate, inherited system).Your hosting

The define list in the code also contains explorer, swap, on-ramp and data-provider keys (ETHERSCAN_API_KEY, ZEROX_API_KEY, MOONPAY_API_KEY, COINGECKO_API_KEY and others in lib/core/config/api_key_repository.dart). They belong to the inherited wallet engine; the Hyperliquid client and the perps screens do not use them.

05Identity constants (code)

lib/core/config/axis_identity.dart. Edit, then rebuild.

ConstantUsed for
kAxisAppName, kAxisTaglineProduct name and one-line description
kAxisWebsiteUrl, kAxisIconUrlYour site, and the icon other apps see over WalletConnect
kAxisSupportEmailSupport screen fallback when support_email is empty
kAxisPrivacyUrl, kAxisTermsUrl, kAxisRiskUrlLegal links on Account. All three must exist before store submission.
kAxisApplicationIdShown on the About screen; keep equal to your real app ID

Other hard-coded addresses to change are listed in Rebranding → URLs.

06RPC endpoints

Hyperliquid's endpoints are fixed per network in lib/core/hyperliquid/hyperliquid_env.dart and need no key. Deposits and withdrawals use Arbitrum One; its default public RPC endpoints are in lib/core/chains.dart. Users can add their own RPC under Account → Networks. For production traffic, use an RPC provider account of your own: provider terms generally forbid sharing keys.

Networks: active RPC endpoint, Add Custom RPC Network, Import from ChainList and the built-in networks
Account → Networks · demo build