MarketDeck docs

onboard

Interactive first-run setup — walks through database, wallets, AI provider, telegram, coins, plugins and the daemon.

marketdeck onboard is the one command that takes a fresh install to a working state. It is purely an orchestrator over the existing built-in commands — every choice it makes ends up as a wallets add, config set, openrouter set-key, plugin install, or daemon start you could have run manually. There is no separate "onboard state".

The command is interactive only. Under a pipe or with --format json it refuses up-front rather than blocking on stdin that a script can never satisfy. Run it from a real terminal.

Usage#

marketdeck onboard

Flow#

#StepWhat it asks
1DatabaseOpens the SQLite file and runs schema migrations. Reports the live schema version. No prompt — auto-runs.
2Paper walletName and starting balance. Defaults: Paper Demo, $10000.
3Real wallet (optional)Pick the exchange (Hyperliquid / Aster / Bybit / Binance), name, address (HL only — required), then the credential on stdin (private key for HL, apiKey + apiSecret for the others). The credential goes straight to the keyring; it never appears on argv.
4AI providerOne of claude / codex / hermes / openclaw / ollama / openrouter / Skip. The picker shows whether each provider's CLI is detected on PATH. Picking OpenRouter immediately asks for the API key + a model id.
5Telegram (optional)Bot token (hidden) + numeric chat id. Sets telegram-enabled = true. Run marketdeck telegram test afterwards to verify.
6Favourite coinsComma-separated tickers. Default seed: BTC, ETH, SOL, HYPE.
7PluginsOffers the official plugins one at a time: marketdeck-gnome (Linux only — panel + prefs UI) and marketdeck-webui (web dashboard). Each install runs plugin install <git-url> inline so you see git-clone progress.
8DaemonStarts the long-lived feed daemon if it isn't already running.

Re-running#

marketdeck onboard is idempotent. The second time you run it, every step that already has a value shows it back to you and asks:

  current: <existing value>
  what would you like to do?
    1) Skip (default)  — keep <thing> as-is
    2) Edit            — modify the existing entry
    3) Replace         — wipe and start fresh
  • Skip does nothing.
  • Edit opens the same prompts the create flow uses, pre-filled with the current value.
  • Replace asks the create-flow questions from scratch (and, for paper wallets and the AI provider, removes the existing entry before writing the new one).

Real wallets never auto-replace — Replace at step 3 means "add another one alongside the existing wallets", never "delete a wallet plus its keyring entry". Use marketdeck wallets remove for that.

What it never does#

  • Touch a wallet you didn't explicitly answer through the prompt.
  • Wipe the keyring.
  • Install a plugin you didn't pick.
  • Start the daemon if you said no.
  • Run the importer that pulls legacy JSON state into SQLite — that is marketdeck db import, intentionally separate.

Examples#

marketdeck onboard               # full interactive walk-through
marketdeck onboard --help        # the step list above

# Pipe / JSON mode is refused:
marketdeck onboard --format json
# → onboard: this command is interactive and only works under a TTY.