> ## Documentation Index
> Fetch the complete documentation index at: https://docs.quanux.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Configure and run QuanuX extensions (QXP)

> Attach broker connectors, charting clients, and automation bridges to QuanuX as independent sidecar processes using the QuanuX Extension Protocol (QXP).

QuanuX extensions implement the **QuanuX Extension Protocol (QXP)**: standalone programs, typically written in Go, that run alongside the QuanuX core server as sidecar processes. Each extension communicates with the core over HTTP and WebSocket, authenticates with a bridge key, and exposes a specific integration — a broker's order API, a charting platform's data feed, an automation workflow engine. You start, stop, and update extensions independently of the main server.

## Extension directory

All extensions ship in the `/extensions` directory of your QuanuX installation:

```text theme={null}
/extensions
  /n8n              # Go bridge for n8n workflow automation
  /sierra-chart     # DTC client for Sierra Chart
  /figma            # Figma MCP server for UI generation
  /rithmic          # Rithmic market data pump
  /signalr          # Generic SignalR connector
  /ibkr             # Interactive Brokers TWS client
  /tradovate        # Tradovate WebSocket client
  /tradingview-udf  # UDF data feed for charting
```

Each subdirectory is a self-contained Go module with its own `main.go`, `go.mod`, and a `SKILL.md` describing its architecture and configuration options.

## Generate a bridge key

Every extension authenticates to the QuanuX core with a **bridge key** — a locally generated secret that authorizes the sidecar to connect. You must generate this key before starting any extension.

<Steps>
  <Step title="Open Settings">
    In the QuanuX web or desktop app, navigate to **Settings → QuanuX Extensions**.
  </Step>

  <Step title="Generate the key">
    Click **Generate Key**. QuanuX creates a cryptographically random key and stores it in the OS Keyring under `QUANUX_<NAME>_KEY` for the selected extension.
  </Step>

  <Step title="Verify storage">
    Confirm the key was stored by running:

    ```bash theme={null}
    quanuxctl secrets get QUANUX_<NAME>_KEY
    ```

    If a value is printed, the key is ready to use.
  </Step>
</Steps>

<Note>
  Bridge keys are separate from your broker credentials. A bridge key authorizes the extension process to talk to QuanuX — your broker API key or password is a different secret stored under its own key name. See [Managing API keys and secrets](/configuration/secrets) for broker credential setup.
</Note>

## Start an extension

The startup pattern is the same for every extension. Navigate into the extension directory, load the bridge key from the keyring, and run the Go program:

```bash theme={null}
cd extensions/<name>
export QUANUX_BRIDGE_KEY=$(quanuxctl secrets get QUANUX_<NAME>_KEY)
go run main.go
```

For example, to start the Tradovate extension:

```bash theme={null}
cd extensions/tradovate
export QUANUX_BRIDGE_KEY=$(quanuxctl secrets get QUANUX_TRADOVATE_KEY)
go run main.go
```

<Tip>
  For production use, build the extension binary first with `go build -o quanux-<name> .` and run the compiled binary instead of `go run main.go`. This avoids the compilation overhead on each startup and is easier to manage as a system service.
</Tip>

## Extension-specific configuration

Each extension accepts additional environment variables to point it at the right host, port, or endpoint. These follow the naming convention `QUANUX_<NAME>_<FIELD>`. Load them from the keyring the same way you load the bridge key:

```bash theme={null}
export QUANUX_IBKR_HOST=$(quanuxctl secrets get QUANUX_IBKR_HOST)
export QUANUX_IBKR_PORT=$(quanuxctl secrets get QUANUX_IBKR_PORT)
export QUANUX_BRIDGE_KEY=$(quanuxctl secrets get QUANUX_IBKR_KEY)
```

Refer to the integration-specific pages for the exact variables each extension requires:

* [Rithmic market data](/integrations/rithmic) — `QUANUX_RITHMIC_USER`, `QUANUX_RITHMIC_PASS`, `QUANUX_RITHMIC_SYSTEM`, `QUANUX_RITHMIC_URL`
* [TopstepX](/integrations/topstepx) — `QUANUX_TOPSTEP__API_KEY`, `QUANUX_TOPSTEP__USERNAME`
* [Interactive Brokers](/integrations/brokerages) — `QUANUX_IBKR_HOST`, `QUANUX_IBKR_PORT`
* [Sierra Chart](/integrations/sierra-chart) — `QUANUX_SIERRA_HOST`, `QUANUX_SIERRA_PORT`, `QUANUX_SIERRA_BRIDGE_KEY`

## Remote QuanuX with a local extension

If your QuanuX core server runs in the cloud or on a remote machine, but the extension needs to run locally (for example, the Sierra Chart DTC client or the IBKR TWS client must be on the same machine as your charting or trading platform), use an SSH reverse tunnel to bridge the connection.

<Steps>
  <Step title="Open a reverse tunnel from your local machine">
    This command forwards the remote server's port 8080 back to your local machine's port 8080, so the extension can reach the QuanuX API as if it were running locally:

    ```bash theme={null}
    ssh -R 8080:localhost:8080 user@your-quanux-server
    ```
  </Step>

  <Step title="Set the host variable for the extension">
    Tell the extension to connect to the tunneled local address:

    ```bash theme={null}
    export QUANUX_<NAME>_HOST=localhost
    ```
  </Step>

  <Step title="Start the extension">
    Run the extension as normal:

    ```bash theme={null}
    export QUANUX_BRIDGE_KEY=$(quanuxctl secrets get QUANUX_<NAME>_KEY)
    go run main.go
    ```
  </Step>
</Steps>

<Warning>
  Keep the SSH tunnel alive for the duration of the trading session. If the tunnel drops, the extension loses its connection to the core server. Consider using `autossh` or a systemd service with `Restart=always` to maintain the tunnel automatically.
</Warning>

## Available extensions reference

<AccordionGroup>
  <Accordion title="n8n — workflow automation bridge">
    The n8n extension exposes QuanuX trading events (order fills, position updates, alerts) as triggers in an n8n workflow. Use it to send notifications, log trades to external systems, or fire conditional automations without writing custom code. Bridge key: `QUANUX_N8N_KEY`.
  </Accordion>

  <Accordion title="Sierra Chart — DTC client">
    The Sierra Chart extension implements the DTC (Data and Trading Client) protocol to feed real-time market data from QuanuX into Sierra Chart. Requires `QUANUX_SIERRA_HOST`, `QUANUX_SIERRA_PORT`, and `QUANUX_SIERRA_BRIDGE_KEY`. See [Sierra Chart integration](/integrations/sierra-chart).
  </Accordion>

  <Accordion title="Figma — MCP server for UI generation">
    The Figma extension runs a local MCP server that connects to the Figma Desktop API. In combination with the QuanuX MCP server, it enables AI agents to read Figma designs and generate QuanuX-compliant React components. See [Connect AI agents via the QuanuX MCP server](/configuration/mcp).
  </Accordion>

  <Accordion title="Rithmic — market data pump">
    The Rithmic extension connects to the Rithmic R|Protocol feed and pumps tick data into the QuanuX data plane. This extension powers live market data for all Rithmic-compatible brokerages and prop firms. See [Rithmic integration](/integrations/rithmic).
  </Accordion>

  <Accordion title="IBKR — Interactive Brokers TWS client">
    The IBKR extension connects to a running instance of Trader Workstation (TWS) or IB Gateway on your network. It bridges order routing and account data between QuanuX and IBKR. Requires `QUANUX_IBKR_HOST` and `QUANUX_IBKR_PORT`.
  </Accordion>

  <Accordion title="Tradovate — WebSocket client">
    The Tradovate extension maintains a persistent WebSocket connection to the Tradovate API, relaying order events and market data. Requires `QUANUX_TRADOVATE_KEY` and `QUANUX_TRADOVATE_ENV` (set to `Demo` or `Live`).
  </Accordion>

  <Accordion title="SignalR — generic connector">
    The SignalR extension provides a generic transport layer for platforms that expose a SignalR endpoint. Configure the target URL with `QUANUX_SIGNALR_HOST`.
  </Accordion>

  <Accordion title="TradingView UDF — chart data feed">
    The TradingView UDF extension serves a Universal Data Feed endpoint that TradingView-compatible charting libraries can consume. Configure the extension with your QuanuX server address and bridge key.
  </Accordion>
</AccordionGroup>
