fx setup
Connect fx, the Vercel Labs agent, to Pushary with one command, so fx can send you notifications and ask you questions on your phone.
Pushary connects to fx through MCP (Model Context Protocol, the standard way AI apps call outside tools). One setup command gives fx's agent Pushary's tools and turns off fx's own terminal question tool. fx's agent then sends you notifications and asks its questions on your phone, or in the Mac notch while Pushary Isle runs.
npx pushary@latest setup --agents fxfx has no hooks that other tools can register. So Pushary cannot answer fx's own approval prompts, and it cannot stop an fx tool call. fx's agent asks through Pushary when it decides to, which makes fx a cooperative agent. Supported agents explains which agents Pushary can enforce.
Set up fx
The CLI needs Node.js 20.17+, 22.13+ or 23.5+. If this computer has no Pushary key yet, setup signs you in and saves one.
Run fx once
Setup skips fx when ~/.fx does not exist, so start fx at least once first. fx does not run on Windows, and setup skips it there.
Run setup
Run the command above. Or run npx pushary@latest setup and pick fx in the list. Setup ticks fx for you when it finds fx's own files in ~/.fx: settings.json, sessions or history.jsonl.
When it works, setup prints Turning off fx's terminal question tool, so its questions go through Pushary.
Reload fx
Restart fx, or run /mcp reload in a running session.
Check it
npx pushary@latest doctorDoctor prints fx: Pushary MCP server configured and fx: questions go through Pushary. Then ask fx's agent to send you a test question. It shows on your phone, marked as fx.
Set up fx with the Mac app
The Pushary Mac app (Pushary Isle) sets up fx without Node or the CLI. With Set up new agents automatically on, it connects fx when it finds fx's files in ~/.fx. fx is also listed under Agents in Settings. Its switch connects or disconnects fx, and Repair puts back anything that is missing.
The Mac app writes the same three files setup writes. Its pushary server in ~/.fx/mcp.json runs ~/.pushary/bin/pushary-mcp, which starts the Mac app's signed helper. The helper uses the key this Mac signed in with, so no key is written to fx's files. If the Pushary CLI already set up fx, the Mac app keeps the CLI's pushary server as it is.
Questions fx's agent asks through Pushary reach the Mac notch, marked as fx, and your phone. As with setup, restart fx or run /mcp reload after the Mac app connects it.
What setup changes in ~/.fx
Setup installs the Pushary CLI globally, then changes three files:
| File | What setup adds |
|---|---|
~/.fx/mcp.json | A pushary server. It runs pushary-mcp, a local bridge that forwards fx's MCP calls to Pushary, with operation_timeout_ms set to 75000 (longer than the 55 seconds a question can block) |
~/.fx/settings.json | Two permission rules. "mcp_pushary_*": "allow" lets fx run Pushary's tools without asking. "ask_user_question": "deny" turns off fx's own terminal question tool, so its agent asks through Pushary |
~/.fx/AGENTS.md | A block between <!-- BEGIN PUSHARY ... --> and <!-- END PUSHARY -->. It tells fx's agent when to ask through Pushary and how to load Pushary's tools |
Setup adds both rules after your own rules. If you already have a rule for mcp_pushary_* or ask_user_question, setup keeps yours and tells you.
No key is written to fx's files. The bridge reads your key from PUSHARY_API_KEY when it is set, and from ~/.pushary/config.json otherwise. When you switch to a new key, fx picks it up from there, so you do not run fx setup again.
Pushary's tools in fx
fx names them:
| Tool | What it does |
|---|---|
mcp_pushary_send_notification | Send a push notification, with optional rich context |
mcp_pushary_schedule_reminder | Schedule, list or cancel a personal reminder that survives fx exiting |
mcp_pushary_ask_user | Ask a question: yes/no, multiple choice, or free text |
mcp_pushary_wait_for_answer | Wait for your answer |
mcp_pushary_cancel_question | Cancel a pending question |
mcp_pushary_propose_scope | Propose the boundary of a run for you to approve |
fx does not load these tools at the start of a turn. Its agent loads each one by exact name with mcp_select_tool, for example {"name": "mcp_pushary_ask_user"}. The block in ~/.fx/AGENTS.md tells it to.
For example, ask fx “Remind me in 30 minutes to check the deploy.” fx loads mcp_pushary_schedule_reminder, saves the reminder on Pushary, and confirms its time. Calendar times need your timezone. One-time reminders support the next 30 days; delivery can be about a minute late. Your connected phone receives it even when fx is closed. Pushary respects stop/mute and current account access. This does not run future fx tasks.
What Pushary cannot do in fx
- fx's approval prompts stay in the terminal. fx cannot hand them to another tool. Only questions fx's agent asks through
mcp_pushary_ask_userreach your phone. - Full-access mode keeps fx's question tool on. fx's full-access mode (
yolo,full-accessorfull access, set in settings, in a workspace, or withFX_PERMISSION_MODE) ignores permission rules. So theask_user_questionrule does nothing there, and the agent is only told to ask through Pushary. Setup anddoctortell you when this applies. Leave full-access mode with/permissionsto route questions for certain. - Workspace rules replace the global ones. An fx workspace with its own
permissionrules ignores the rules setup added. Setup tells you how many there are. Add"mcp_pushary_*": "allow"and"ask_user_question": "deny"to each one.
When setup leaves fx's files alone
Setup does not edit ~/.fx/mcp.json or ~/.fx/settings.json when fx itself would reject the file or refuse to edit it. That covers:
- comments, a trailing comma or a byte-order mark
- a repeated key
- servers under a key fx does not read
- a file larger than fx reads (1 MiB for
mcp.json, 64 KiB forsettings.json)
It also leaves settings.json alone when fx would ignore it, for example because of an unknown permission action or permission mode.
Setup names the file and the reason. Fix the file, then retry only fx:
npx pushary@latest setup --agents fxIf ~/.fx/AGENTS.md is a symlink to a file outside ~/.fx, fx ignores it. Setup writes no instructions there and tells you to replace the link with a file.
Why can fx's questions still stop in the terminal?
Run npx pushary@latest doctor. It checks the pushary server in ~/.fx/mcp.json and that its bridge is installed. It warns when Pushary's tools are not auto-allowed, and when fx's questions can still stop in the terminal. The usual causes are full-access mode, a workspace with its own rules, or your own ask_user_question rule. Doctor names which one.
Remove Pushary from fx
npx pushary@latest disconnect fxThis removes the pushary server, the mcp_pushary_* rule setup added, the ask_user_question rule (only if setup added it and you have not changed it since), and the block in ~/.fx/AGENTS.md. In the Mac app, turning fx off under Agents in Settings removes the same things.
npx pushary@latest clean removes Pushary from every agent, fx included. See the CLI reference.
Next steps
Set up your phone
Install the Pushary app and turn on notifications so fx's questions reach you.
How questions and answers work
Question types, timeouts, and what happens when nobody answers.
CLI reference
Every setup, doctor, disconnect and clean flag.