Everything pluggable in Pairlens goes through the same capability-based plugin system. A plugin declares the capabilities it provides, and the resolver picks the best plugin for each requested capability at runtime.
Capabilities
| Capability | What it provides |
|---|---|
market-data:candles |
Streaming candles |
market-data:ticker |
Streaming tickers |
market-data:ticker-snapshot |
Point-in-time ticker reads |
market-data:orderbook |
Streaming order books |
market-data:trades |
Streaming public trades |
market-data:history |
Historical candle backfill |
market-data:discovery |
Instrument listing |
market-data:discovery:search |
Instrument search |
market-data:symbol-logo |
Asset logos |
market-data:events |
Prediction-market event browsing |
market-data:pool-stats |
AMM pool state, its swaps, and a chain’s ranked pools |
market-data:session |
Trading-day clock and calendar, holidays and half days included |
market-data:funding |
Perpetual funding rates, mark and index prices, and open interest |
market-data:liquidations |
Aggregated liquidation history for perpetual futures pairs |
market-data:bridge |
Cross-chain route quotes and transfer status tracking |
trading:orders |
Order placement and cancellation |
trading:balances |
Account balances |
trading:positions |
Open positions and contracts |
trading:bridge |
Executes cross-chain transfers with the connected wallet |
rpc:solana |
JSON-RPC access to the Solana network for reads and sends |
ai:inference |
A language model |
ai:web-search |
Web search for research |
workflow:step-types |
New workflow canvas steps |
notification:channel |
New alert delivery channels |
chart:indicator |
Custom chart indicators |
theme:override |
A terminal theme |
workspace-store:catalog |
A source of workspace templates |
Plugins also contribute panels through the manifest’s contributes block,
which is how a plugin adds a tile to the workspace grid, and workspaces,
which is how a plugin ships whole ready-made layouts. A contributed workspace
appears in the Workspace Store, and if it declares routeMenu it also appears
in the Workspaces menu of the pair or Discovery route it targets. Both leave
with the plugin: disable it and its layouts stop being offered, without a
reload. That is how each asset class ships its own default pair layout.
Chat and research are not separate capabilities. Both use ai:inference with a
runtime purpose selector.
What the host provides
Mark these as build externals. The host supplies its own instances at runtime, so your bundle stays small and the WebGL chart engine is never duplicated:
- React
@pairlens/plugin-sdk(hooks)@pairlens/ui(the design system, imported from the package root)@pairlens/fast-financial-chartsand@pairlens/fast-financial-charts/react
In this section
- Create a plugin. Scaffold and run one locally.
- MarketAdapter API. The interface every connector implements.
- Publish to the registry. Sign and ship.
- Agent interfaces. Every way an AI agent can drive the terminal, and where the trading boundary sits.
Sandboxed by default
Non-bootstrap plugins run in a Worker sandbox with a network allowlist derived from the hosts they declare. Packages are Ed25519-signed against pinned keys, and full trust is an explicit grant a user makes per plugin, never the default. See the security model.
