# fx

> Vercel's minimal open-source coding agent, through a custom model connection.

Source: https://www.lyber.ai/docs/agents/coding-agents/fx/ · Markdown: https://www.lyber.ai/docs/md/agents/coding-agents/fx.md

## Easy setup

Copy this prompt into fx itself or any coding agent you use, such as Claude Code, Codex or Cursor. It adds Lyber to fx's settings, keeps your key out of every file, and checks the connection without spending credit.

```text
Set up fx on this computer to use Lyber, an OpenAI-compatible API.

Lyber:
- Base URL: https://lyber-paid-acceptance-gateway-production.up.railway.app/v1
- Models: minimax-m3.1-flash-abliterated (default; 1,048,576-token context, 32,768-token output) and deepseek-v4.1-flash-1017-abliterated (1,048,576-token context, 262,144-token output)
- API key: in the LYBER_API_KEY environment variable. Never print it, never write it into a file, and never ask me to paste it into this chat.

Do this:
1. Open ~/.fx/settings.json. If it exists, copy it to ~/.fx/settings.json.bak first, then merge these settings into it and keep everything else. If it doesn't exist, create it with exactly this:

{
  "provider": "lyber",
  "providers": {
    "lyber": {
      "protocol": "openai-chat-completions",
      "base_url": "https://lyber-paid-acceptance-gateway-production.up.railway.app/v1",
      "auth": { "type": "bearer", "env": "LYBER_API_KEY" },
      "model_metadata": {
        "minimax-m3.1-flash-abliterated": { "context_window": 1048576, "max_output_tokens": 32768, "supports_tool_use": true },
        "deepseek-v4.1-flash-1017-abliterated": { "context_window": 1048576, "max_output_tokens": 32768, "supports_tool_use": true }
      }
    }
  },
  "models": { "lyber": "minimax-m3.1-flash-abliterated" }
}

2. If fx isn't installed, tell me to run: curl -fsSL https://fx.sh/setup.sh | bash
3. If LYBER_API_KEY isn't set in my shell, tell me to add export LYBER_API_KEY="…" to my shell profile myself and open a new terminal.
4. Check the key without spending credit. This should print 200:
curl -s -o /dev/null -w "%{http_code}\n" https://lyber-paid-acceptance-gateway-production.up.railway.app/v1/models -H "Authorization: Bearer $LYBER_API_KEY"
5. Tell me what you changed and how to start fx on Lyber: fx
Don't send a chat request through Lyber unless I ask.
```

## Manual setup

### 1. Install fx

```bash
curl -fsSL https://fx.sh/setup.sh | bash
```

### 2. Put your key in your environment

Add this to your shell profile (`~/.zshrc` or `~/.bashrc`) and open a new terminal.

```bash
export LYBER_API_KEY="lyber_prepaid_…"
```

### 3. Add Lyber to `~/.fx/settings.json`

Keep any settings already in the file; add these beside them.

```json
{
  "provider": "lyber",
  "providers": {
    "lyber": {
      "protocol": "openai-chat-completions",
      "base_url": "https://lyber-paid-acceptance-gateway-production.up.railway.app/v1",
      "auth": { "type": "bearer", "env": "LYBER_API_KEY" },
      "model_metadata": {
        "minimax-m3.1-flash-abliterated": { "context_window": 1048576, "max_output_tokens": 32768, "supports_tool_use": true },
        "deepseek-v4.1-flash-1017-abliterated": { "context_window": 1048576, "max_output_tokens": 32768, "supports_tool_use": true }
      }
    }
  },
  "models": { "lyber": "minimax-m3.1-flash-abliterated" }
}
```

### 4. Start fx

```bash
fx
```

## Notes

- `auth.env` makes fx read the key from `LYBER_API_KEY` on every request; it's never written down.
- Custom connections live only in `~/.fx/settings.json`. A project's `.fx.json` can't define or select one.
- `fx models` lists both models. Use DeepSeek for one run with `FX_MODEL=deepseek-v4.1-flash-1017-abliterated fx`.
- `fx status --json` shows the endpoint and model fx will use, without sending a request.
- The DeepSeek entry caps replies at 32,768 tokens to keep each request's credit hold small; raise `max_output_tokens` up to 262,144 if you need longer output.
- fx is experimental, so its settings can change between releases. Its manual is at [fx.sh/docs](https://fx.sh/docs/configure-fx/custom-model-connections).
