---
title: Config
description: All firma settings live locally in ~/.firma/config.json. Use `firma config set` and `firma config get` to manage them. No restart is required.
---

export const setRows = [
  { cmd: <code>firma config set finnhub-key &lt;key&gt;</code>, desc: 'Set your Finnhub API key' },
  { cmd: <code>firma config set fred-key &lt;key&gt;</code>,    desc: 'Set your FRED API key' },
  { cmd: <code>firma config set currency KRW</code>,             desc: 'Set the default display currency (USD, KRW, JPY, EUR, GBP, CNY, HKD, INR, TWD)' },
  { cmd: <code>firma config set db-path ~/path/to/firma.db</code>, desc: 'Move the database file, useful for iCloud or Dropbox sync' },
];

export const keys = [
  {
    icon: 'F-KEY',
    title: 'finnhub-key',
    desc: <>Finnhub API key. Required for <code>firma sync</code>, <code>firma show portfolio</code>, <code>firma show news</code>, <code>firma show insider</code>, <code>firma show financials</code>, and <code>firma show earnings</code>. Free tier at <a href="https://finnhub.io" target="_blank" rel="noopener noreferrer">finnhub.io</a> covers all firma features.</>,
  },
  {
    icon: 'FRED',
    title: 'fred-key',
    desc: <>FRED API key. Required for <code>firma show macro</code> and <code>firma sync fx</code>. You can register for free at <a href="https://fred.stlouisfed.org/docs/api/api_key.html" target="_blank" rel="noopener noreferrer">fred.stlouisfed.org</a>.</>,
  },
  {
    icon: 'FX',
    title: 'currency',
    desc: <>The default display currency. Defaults to <code>USD</code>. Supported: <code>USD</code>, <code>KRW</code>, <code>JPY</code>, <code>EUR</code>, <code>GBP</code>, <code>CNY</code>, <code>HKD</code>, <code>INR</code>, <code>TWD</code>. It is the fallback for every command that takes <code>-c/--currency</code> — <code>show portfolio</code>, <code>txns</code>, <code>balance</code>, <code>flow</code>, <code>dividend</code>, <code>snapshot</code>, <code>report</code>, <code>brief</code>. Values are stored in USD; the display currency only changes how they are shown.</>,
  },
  {
    icon: 'DB',
    title: 'db-path',
    desc: <>Absolute path to the SQLite database. Defaults to <code>~/.firma/firma.db</code>. Point it at a file on iCloud Drive or Dropbox if you want the same data on multiple machines. Just make sure only one machine is writing at a time.</>,
  },
];

export const relatedRows = [
  { cmd: <code>firma doctor</code>,      desc: 'Verify all keys are set and data is present' },
  { cmd: <code>firma sync fx</code>,     desc: 'Populate the FX cache after setting your FRED key' },
  { cmd: <code>firma mcp install</code>, desc: 'Register firma as an MCP server in Claude Desktop' },
];

<Section label="firma config get">
Shows all current config values. Pass a key name to read just one.

  <Terminal command="firma config get" />

  <Terminal command="firma config get currency" />
</Section>

<Section label="firma config set <key> <value>">
  <CommandTable rows={setRows} />
</Section>

<Section label="Keys">
  <FeatureList items={keys} />
</Section>

<Section label="Related">
  <CommandTable rows={relatedRows} />

  <Note>
    Config is stored as plain JSON at <code>~/.firma/config.json</code>.
    On macOS, it is readable only by your user account.
  </Note>
</Section>
