FibX

Execução DeFi na Base, Citrea, HyperEVM e Monad via agregação Fibrous: cotações de swap, swaps, transferências, portfólio cross-chain e Aave V3.

Documentação

FibX

Uma ferramenta de linha de comando e servidor MCP para operações DeFi em Base, HyperEVM e Monad, alimentada pela agregação Fibrous. Assine com sua própria carteira via WalletConnect, com uma carteira de servidor Privy ou com uma chave importada — cada caminho limitado por uma política de assinatura que reside na sua máquina.

npm version

Recursos

  • Suporte Multi-Cadeia: Base, HyperEVM e Monad
  • Portfólio: Visão geral do portfólio entre cadeias com avaliações em USD e posições DeFi
  • Trocas de Tokens: Roteamento otimizado via agregação Fibrous com slippage automático
  • Transferências: Envie ETH ou qualquer token ERC-20
  • Aave V3: Fornecer, emprestar, pagar, retirar e navegar pelos mercados na Base
  • Servidor MCP: Integração integrada com agentes de IA para Cursor, Claude Desktop e Antigravity (19 ferramentas)
  • O app FibX, no chat: em hosts que renderizam a UI de MCP Apps, como Claude Desktop, open_fibx mostra a carteira, saldos, política de assinatura e um formulário de troca com a rota Fibrous inline — o modelo abre, e você pressiona Simular e Trocar
  • Habilidades de Agente: Habilidades de IA baseadas em prompts via fibx-skills
  • Sua própria carteira: Emparelhe via WalletConnect e aproveite cada transação no seu celular
  • Carteiras de Servidor Privy: Assinatura no lado do servidor — o CLI recebe payloads de transação assinados ou assinaturas, não credenciais do app Privy ou chaves brutas
  • Importação de Chave Privada: Use uma carteira existente com armazenamento local criptografado AES-256-GCM
  • Política de assinatura local: Um arquivo que você possui — limite de valor nativo por cadeia, cadeias permitidas, destinos permitidos, expiração — aplicado antes de cada assinatura nos três caminhos (Privy adiciona sua própria política no lado do servidor por cima)
  • Verificações de Pré-execução: Fluxos de transação validam ou estimam a execução onde o RPC subjacente suporta
  • Modo Dry-Run: --simulate pré-visualiza operações de escrita sem transmitir; estimativas de gás são incluídas quando disponíveis
  • Saída JSON: Flag --json para scripts e pipelines
  • Instalação Zero-Dependência: Pacote de arquivo único via tsup — npx fibx roda quase instantaneamente

Cadeias Suportadas

CadeiaToken NativoAave V3
BaseETH
HyperEVMHYPE
MonadMON

Instalação

Execute diretamente com npx (sem necessidade de instalação):

npx fibx status

Ou instale globalmente:

npm install -g fibx

Requisitos

  • Node.js >= 18
  • Uma instância fibx-server em execução (necessária para operações com carteira Privy; não necessária para importações de chave privada)

Início Rápido — Primeira Troca em 3 Minutos

Passo 1: Obtenha uma Cotação de Preço (sem autenticação)

Experimente o FibX instantaneamente — sem cadastro, sem carteira, sem chaves:

npx fibx quote 0.01 ETH USDC              # Check price on Base
npx fibx quote 100 USDC DAI --chain base   # Compare pairs
npx fibx quote 0.5 MON USDC --chain monad  # Check Monad prices

Passo 2: Autentique-se (escolha um)

Opção A — Login por E-mail (Carteira de Servidor Privy, sem chaves para gerenciar):

npx fibx auth login you@email.com          # Sends OTP to your email
npx fibx auth verify you@email.com 123456  # Verify & create wallet

Opção B — Importar Chave Privada (use uma carteira existente):

npx fibx auth import                       # Paste your key (encrypted at rest)

Passo 3: Execute

npx fibx trade 0.01 ETH USDC               # Execute the swap
npx fibx balance                            # Check your balances

É isso. Três passos do zero até a primeira troca.

Uso

Escolhendo como o FibX assina

Execute fibx auth setup e ele perguntará. Os três caminhos diferem em um aspecto:

CaminhoChave mantida porRoda enquanto você está ausenteLimitado por
auth connectsua própria carteiranãovocê, no seu celular
auth loginPrivysimpolítica de assinatura da Privy
auth importesta máquinasima política local que você definiu

Manter sua própria carteira e ter o FibX agindo sem supervisão requer ERC-7715, que as carteiras ainda não expõem via WalletConnect. fibx auth setup explica as opções mais próximas.

Segurança: Ao usar auth import, sua chave privada é criptografada em repouso com AES-256-GCM. A chave de criptografia é gerada automaticamente por máquina e armazenada no diretório de configuração do SO (ex.: ~/.config/fibx-nodejs/encryption-key no Linux). Você também pode definir a variável de ambiente FIBX_SESSION_SECRET para ambientes CI/Docker.

Conecte sua própria carteira

npx fibx auth connect

Emparelha o FibX com uma carteira que você já possui — MetaMask, Rabby, Rainbow, Phantom — via WalletConnect. Um código QR aparece no terminal; escaneie com seu celular. Cada transação é então aprovada na sua carteira, então as chaves nunca saem dela.

A cadeia em que você negocia já deve estar na sua carteira, e ela é aprovada quando você emparelha. Se você tentar assinar em uma cadeia que a sessão não carrega, o FibX para antes de contatar a carteira e nomeia a cadeia: adicione-a na sua carteira e execute npx fibx auth connect novamente para que a nova cadeia seja incluída.

Com --json, a saída é NDJSON — um documento JSON por linha, não um documento para toda a execução: o URI de emparelhamento é impresso primeiro como {"uri":"wc:..."} para que um script possa agir sobre ele enquanto espera, e então o resultado é impresso como sua própria linha JSON compacta assim que a carteira aprova.

npx fibx auth logout encerra a conexão em ambos os lados: informa à sua carteira para descartar a sessão, então o FibX deixa de aparecer na lista de apps conectados, e remove as chaves de emparelhamento do disco junto com a sessão.

Um ID de projeto WalletConnect compartilhado acompanha o pacote publicado, então isso funciona sem configuração. Ele é público por necessidade — um CLI não tem origem para lista de permissões — então sua única exposição real é a cota consumida por terceiros. Se o emparelhamento começar a falhar por cota, crie um projeto gratuito em cloud.reown.com e defina FIBX_WC_PROJECT_ID para seu próprio ID.

auth login (OTP por e-mail) e auth import (chave privada) permanecem inalterados e disponíveis.

Política de assinatura

fibx policy limita o que o FibX pode assinar, além de qualquer caminho da tabela acima que detenha a chave — um limite no lado do cliente avaliado antes de cada transação de chave local, Privy ou WalletConnect:

npx fibx policy show                    # Print the active policy

npx fibx policy set base.maxValue 0.05
npx fibx policy set allowedChains base,monad
npx fibx policy set base.allowedDestinations 0xYourColdWallet,0xTheRouter
npx fibx policy set expiry 2026-12-31   # UTC midnight starting that day

npx fibx policy clear base.maxValue     # Remove one rule
npx fibx policy clear                   # Remove the whole policy (asks first)

Uma política local protegendo uma chave local é consultiva: qualquer coisa que possa ler a chave pode editar a política, então isso não vale nada contra malware. O que ela limita é o agente — um modelo que se comporta mal, ou uma injeção de prompt dizendo a ele para fazer algo.

Saiba o que cada regra limita, porque elas não são iguais:

  • maxValue limita o valor nativo de uma única transação — ETH na Base, HYPE na HyperEVM, MON na Monad. Ela não limita tokens. Uma transferência ERC-20 chega à política como uma chamada ao contrato do token carregando value: 0, então o valor é invisível para ela: base.maxValue 0.05 não impõe limite em fibx send 50000 USDC 0xsomewhere, no lado do token de uma troca, ou em um empréstimo Aave. Um limite de valor de token precisa de decimais e um registro de tokens, e não está nesta versão.
  • allowedDestinations é a regra que limita tokens, limitando para onde qualquer coisa pode ir. É a que deve ser definida se a preocupação é um agente movendo seus ativos para algum lugar. Observe que colocar o contrato de um token na lista de permissões para que uma troca possa aprová-lo também permite transferências desse token.
  • allowedChains e expiry fazem exatamente o que dizem. Uma política expirada ou não analisável recusa tudo em vez de permitir.

Opções Globais

OpçãoDescriçãoPadrão
-c, --chain <name>Cadeia alvo (base, hyperevm, monad)base
--jsonSaída de resultados como JSONfalse

Saldo

npx fibx balance
npx fibx balance --chain hyperevm

Portfólio

Visão consolidada do portfólio entre cadeias com avaliações em USD:

npx fibx portfolio           # Table output across all chains
npx fibx portfolio --json    # Structured JSON for scripting

Mostra todas as participações de tokens em Base, HyperEVM e Monad com valores em USD. Inclui posições DeFi (garantia/dívida Aave V3) e patrimônio líquido total do portfólio. Os preços dos tokens são obtidos ao vivo da Fibrous.

Enviar

npx fibx send 0.001 0xRecipient           # Send native token on Base (ETH)
npx fibx send 10 0xRecipient USDC         # Send ERC-20 on Base
npx fibx send 1 0xRecipient --chain monad # Send MON on Monad
npx fibx send 0.1 0xRecipient --simulate  # Preview without sending

Cotação

Obtenha preços de troca sem autenticação:

npx fibx quote 0.01 ETH USDC                  # Price check on Base
npx fibx quote 1 MON USDC --chain monad         # Check Monad prices
npx fibx quote 0.1 ETH USDC --json             # JSON output for scripts

Nenhuma carteira ou autenticação necessária. Use quote para explorar preços e depois trade para executar.

Trocar

npx fibx trade <amount> <from> <to>
npx fibx trade 0.0001 ETH USDC
npx fibx trade 20 USDC DAI
npx fibx trade 1 MON USDC --chain monad
npx fibx trade 0.1 ETH USDC --simulate   # Preview without broadcasting

Opções: --slippage <n> (padrão: 0,5%), --approve-max, --simulate, --json

Nota: O comando trade detecta automaticamente operações de Wrap (Nativo -> Envolvido) e Unwrap (Envolvido -> Nativo) e as executa diretamente via chamadas de contrato, ignorando o roteamento do agregador para economizar gás.

Status da Transação

npx fibx tx-status <hash>
npx fibx tx-status 0x123...abc --chain monad

Informações da Carteira

npx fibx address    # Print active wallet address
npx fibx wallets    # Show active wallet details

Aave V3 (Base)

npx fibx aave status               # Account health
npx fibx aave markets              # List all active reserves with APY & TVL
npx fibx aave supply 1 ETH         # Auto-wraps ETH -> WETH and supplies
npx fibx aave supply 100 USDC      # Supply ERC-20
npx fibx aave borrow 50 USDC       # Borrow
npx fibx aave repay 50 USDC        # Repay
npx fibx aave repay max ETH        # Auto-wraps ETH and repays full WETH debt
npx fibx aave withdraw max ETH     # Withdraws WETH and auto-unwraps to ETH
npx fibx aave supply 1 ETH --simulate  # Preview without broadcasting

Nota: supply, repay e withdraw suportam ETH <-> WETH wrapping/unwrapping automático na Base.

Configuração

Defina URLs RPC personalizadas para evitar limites de taxa em endpoints públicos:

npx fibx config set-rpc base https://mainnet.base.org
npx fibx config get-rpc base
npx fibx config reset-rpc base   # Reset single chain to default
npx fibx config reset-rpc        # Reset all chains to default
npx fibx config list

Recarga a quente: As alterações de configuração são detectadas automaticamente — sem necessidade de reiniciar o CLI ou o servidor MCP.

Integração com Agentes de IA

Servidor MCP

fibx inclui um servidor MCP integrado para editores de IA como Cursor, Claude Desktop e Antigravity. Veja MCP.md para configuração e ferramentas disponíveis.

npx fibx mcp-start

O servidor MCP expõe 19 ferramentas: o app FibX (open_fibx, list_tokens), consultas somente leitura, três ferramentas transacionais e gerenciamento de sessão e política. Todas as operações de escrita suportam uma pré-visualização simulate=true que não transmite; estimativas de gás são retornadas apenas quando disponíveis.

Em um host que renderiza a UI de MCP Apps — Claude Desktop hoje — open_fibx é o ponto de entrada: pergunte sobre sua carteira, um saldo, um preço ou uma troca e o app inteiro abre inline, pré-preenchido a partir da conversa. Ele não executa nada por conta própria; Simular e Trocar são botões que você pressiona. Em um host somente texto, a mesma chamada retorna um instantâneo JSON que o modelo pode resumir, e as ferramentas headless fazem o resto.

Habilidades de Agente

Para integração de agentes baseada em prompts (Claude Code, Cursor, etc.), veja o repositório fibx-skills.

Segurança

Deixar um agente de IA operar uma carteira requer controles fora do modelo. fibx combina políticas na camada de assinatura, validação no lado do servidor, dicas do cliente e pré-visualizações explícitas. Esses controles reduzem o risco, mas as credenciais do servidor, a configuração do cliente MCP e a política de implantação permanecem parte do limite de confiança:

CamadaO que ela faz
Política de assinatura PrivyA política padrão permite que redes configuradas sejam listadas, limita o token nativo value de cada transação e nega a exportação de chaves. A Privy avalia a política no momento da assinatura; as credenciais do fibx-server e qualquer política personalizada permanecem como limites críticos de confiança.
Esquemas do fibx-server/sign/* aceita apenas a forma exata de transação que a CLI produz — campos desconhecidos, criação de contratos e redes não atendidas são rejeitados antes de chegar à Privy.
Anotações de ferramentas MCPCada ferramenta transacional anuncia destructiveHint: true; clientes compatíveis podem usar essa dica para solicitar confirmação, dependendo do comportamento e da configuração do cliente.
Simulação--simulate pré-visualiza operações de escrita sem transmitir. Alguns caminhos também retornam uma estimativa de gás; outros retornam apenas metadados de operação.
Armazenamento local de chavesChaves privadas importadas são criptografadas em repouso com AES-256-GCM usando uma chave por máquina armazenada 0600 no diretório de configuração do sistema operacional.

Os limites da política de carteira são configurados por implantação — consulte a documentação da política de carteira do fibx-server.

Nota: as políticas são anexadas quando uma carteira é criada. Carteiras provisionadas antes da introdução das políticas continuam assinando sem elas até serem migradas.

Arquitetura

Este repositório é a CLI e o servidor MCP. Três repositórios irmãos completam a pilha:

RepositórioFunção
fibx (este repositório)CLI + servidor MCP stdio, enviado como um único pacote sem dependências
fibx-serverBackend Hono que faz proxy para a Privy — guarda o segredo do aplicativo para que a CLI nunca o tenha, e possui a política de assinatura da carteira
fibx-skillsHabilidades de agente baseadas em prompt para Claude Code, Cursor e outros agentes com suporte a habilidades
fibx-telegram-botBot do Telegram que aciona esta CLI via MCP, com um processo e caminhos de configuração separados por usuário ativo
src/
├── commands/           # CLI commands (auth, policy, trade, send, aave, config)
├── mcp/                # Modular MCP server
│   ├── server.ts       # Entry point + MCP_INSTRUCTIONS
│   ├── ui.ts           # The ui://fibx/app.html resource (the built widget, inlined)
│   ├── tools/          # Tool registrations (app, auth, wallet, trade, defi, policy)
│   └── handlers/       # Tool implementations
├── services/           # Business logic (chain, fibrous, auth, policy, walletconnect, defi, portfolio)
└── lib/                # Shared utilities (errors, fetch, format, crypto)
ui/
├── src/                # The FibX app widget — Preact, one document, no network
└── dev-host/           # A local MCP Apps host for the widget: fixtures, or a bridge to the real server

O widget é compilado pelo Vite em um único documento HTML e incorporado em dist/index.js pelo tsup, então o pacote publicado ainda é um único arquivo sem dependências em tempo de execução.

Desenvolvimento

pnpm install
pnpm dev          # run the CLI from source
pnpm test         # vitest unit tests
pnpm typecheck    # tsc --noEmit
pnpm lint         # eslint
pnpm format:check # prettier
pnpm build        # vite (the app widget) then tsup, to dist/
pnpm dev:ui       # the app widget in a local host, against fixtures — no wallet needed

pnpm dev:ui:bridge executa o mesmo host contra o servidor MCP real; uma troca lá é uma troca real.

Links Relacionados

Licença

MIT