Frequently Asked Questions
Technical details about how Node Proxy works.
Getting Started
Why Node Proxy?
Node Proxy turns hardware you already own into self-hosted infrastructure — a production server for your email, photos, and websites. Our edge proxy is the public-facing layer that handles HTTPS termination, MX routing, DDoS protection, caching, and rate limiting, so your home IP never appears in DNS records, email headers, or HTTP responses. AI inference runs on our hosted, private, OpenAI-compatible endpoint rather than on your hardware.
The pitch is ownership over rent: you bought the hardware (a Mac Mini for OpenClaw, a NAS, an old laptop) — stop paying separately for cloud storage and mailbox hosting for workloads it can already run, and get hosted AI inference bundled in instead of a separate provider bill. Every plan, including Free, includes a Node Proxy copilot that's integrated with the device and can manage your email, photos, and websites for you.
How do I get started?
- Run the base installer from the Node Proxy environment you want to join:
- Linux/macOS/WSL2:
curl -fsSL https://<current-environment-host>/install.sh | sh - Windows PowerShell:
iwr -useb https://<current-environment-host>/install.ps1 | iex
- Linux/macOS/WSL2:
- Run
nodeproxy upafter install. On non-production environments liketestorstaging, usenodeproxy --namespace <env> up. - Approve the device in the browser when prompted.
- After approval, managed mail is enabled automatically unless you used
nodeproxy up --enable-mail=false. Use the local control plane on that device for the mail password and autoconfig, plus optional Immich, WordPress, or the localhost OpenAI / OpenClaw setup.
If you want the machine-readable workflow and exact endpoints first, start from /mcp-agent-api.
What is the install command?
Use the installer endpoint for the environment you're on:
- Linux/macOS/WSL2:
curl -fsSL https://<current-environment-host>/install.sh | sh - Windows PowerShell:
iwr -useb https://<current-environment-host>/install.ps1 | iex
The follow-up registration step is separate: nodeproxy up on production, or nodeproxy --namespace <env> up on non-production environments.
How do I connect OpenClaw?
There are two supported paths:
- Same device / localhost: after install and approval, merge the generated config into
~/.openclaw/openclaw.jsonso OpenClaw uses the Node Proxy localhost OpenAI-compatible endpoint on that machine. The local web control plane exposes a ready-to-copy config, and the same JSON is available from/localapi/v0/copilot/config. - Hosted / approved device path: after approval, fetch
/v1/agent/configs/openclawfrom the current environment and merge that JSON into~/.openclaw/openclaw.json. That config uses the private hosted inference gateway plus the synced account key.
If you want OpenClaw heartbeat behavior, the generated config already includes a heartbeat block.
How do I use the AI for coding?
Node Proxy bundles the open-source Qwen 3.6 35B A3B model and exposes it through an OpenAI-compatible API for use in coding agents and editors. Pick the path that matches your tool:
- OpenClaw. Fetch
/v1/agent/configs/openclawand merge it into~/.openclaw/openclaw.json. The config sets the fast variant (Qwen/Qwen3.6-35B-A3B-fast) as the primary model and the non-fast variant (Qwen/Qwen3.6-35B-A3B) as the heartbeat for periodic background reasoning. - OpenCode. Fetch
/v1/agent/configs/opencodeand merge it into your OpenCode config (typically~/.config/opencode/config.json). It points at the local Node Proxy OpenAI endpoint with the synced account key. - Qwen Code. Fetch
/v1/agent/configs/qwen-codeand merge it into~/.qwen/settings.json. Same endpoint and key, just shaped for Qwen Code. - Cursor, VSCode + Continue, Cline, or any OpenAI-compatible client. Set the client's "OpenAI base URL" to the local Node Proxy endpoint shown on the local control plane (for example
http://127.0.0.1:18080/v1), use your synced agent API key, and pickQwen/Qwen3.6-35B-A3B-fastfor low-latency completions orQwen/Qwen3.6-35B-A3Bfor deeper reasoning.
The endpoint speaks standard POST /v1/chat/completions and GET /v1/models, with streaming, tool calling, and structured outputs. Node Proxy copilot use is bundled and not token-billed; general hosted-inference use is metered against your plan's token allowance.
AI & Copilot
What does the copilot do for me on Node Proxy?
Node Proxy has two copilot surfaces with different permissions:
- Account Admin Copilot. Runs in the hosted account admin console and sees account-level context:
/mcp-agent-api, public docs, dashboard status, devices, service assignments, billing overview, invoices, and API-key metadata. It is for account work such as reserving managed email addresses, reserving addresses on already configured custom domains, reserving public WordPress and Immich URLs, managing account API keys, and previewing namespace changes before confirmation. - Device Copilot. Runs on the local web control plane for a specific approved machine. It can use localhost MCP and local API tools for that machine's services: email, Immich, WordPress, local OpenAI-compatible config, local history, and device-specific setup.
The account copilot should not read mailbox contents, edit WordPress content, manage Immich assets, set up DNS, change billing or payment terms, or approve device-local high-risk actions. Those belong on the device surface or the regular admin UI. Destructive or high-risk actions require explicit confirmation or local web control plane approval. Copilot use is bundled on every plan and is not token-billed.
Why are there separate account and device copilots?
The account copilot is for cloud/account routing and administrative state. The device copilot is for local services and personal data. Splitting them keeps device data on the device-control surface and avoids giving a hosted account chat broad local authority.
What's the difference between fast mode and non-fast mode?
The same Qwen 3.6 35B A3B model is served in two variants:
Qwen/Qwen3.6-35B-A3B-fast— non-thinking, low-latency. Use this as the primary model for OpenClaw, OpenCode, or interactive editors where responsiveness and tool-call cadence matter.Qwen/Qwen3.6-35B-A3B— thinking, deeper reasoning. Use this for OpenClaw's heartbeat, background triage, and any task where reasoning quality matters more than speed.
Most clients pin the fast variant as the default and reach for the non-fast variant only when extra thinking is worth the extra latency. OpenClaw drives its heartbeat schedule from HEARTBEAT.md; the generated /v1/agent/configs/openclaw config wires the non-fast variant into that block automatically.
How is the hosted inference API different from the bundled copilot?
Two separate lanes powered by the same self-hosted model:
- Bundled Node Proxy copilot. Free on every plan, runs over a dedicated lane that's not token-billed. Used by the homepage chat, the device's local copilot, and Node Proxy MCP/CLI surfaces. Optimized for Node Proxy tasks but capable of general use.
- General hosted inference. A private, OpenAI-compatible inference API (
/v1/chat/completionsand/v1/models) you can point your own apps, agents, and editors at. Token-billed against split input/output allowances: 200K input + 50K output tokens/mo on Free, 2M input + 500K output tokens/mo included on Pro, then separate input and output overage pricing if you explicitly enable usage-based scaling with a monthly cap.
Only the metering and rate-limiting differ between the two.
Does the copilot help filter spam and phishing?
Yes. Every inbound email passes through the edge proxy for protocol-level checks (SPF/DKIM/DMARC, ARC chain validation, MIME structure) and rspamd-style spam scoring before being delivered to the device. The copilot then layers AI analysis on the result, looking at:
- Authentication & headers — SPF/DKIM/DMARC failures, ARC chain breaks, malformed MIME structures.
- Sender anomalies — freemail impersonation, From/envelope mismatch, display-name spoofing.
- Content signals — suspicious links, executable attachments (
.exe,.js,.docm), urgent or manipulative language. - Spam scoring — SpamAssassin-style weighted scoring across all factors with a per-message risk summary.
The copilot surfaces a header-and-attachment risk summary alongside each message, so an agent can prioritize, quarantine, or auto-reply with full context.
Private Email
How does my device become a mail server?
When you install Node Proxy, your device runs a full embedded mail server stack. This includes local IMAP and SMTP servers bound to your machine, plus a local Maildir for storage. Your device isn't just a client — it's the actual mail server.
The public internet never talks to your device directly. Instead, our edge proxy is what the world sees (via MX records). It handles the hard parts of public SMTP — port 25 traffic, SPF/DKIM/DMARC verification, spam scoring, and DDoS protection. Once a message is accepted, it's pushed directly to your device over an encrypted WireGuard tunnel.
Can I use a normal email client like Thunderbird or Apple Mail?
Yes. Your device runs standard IMAP and SMTP submission servers on localhost. Open the local control plane on that machine, or call /localapi/v0/mail/client-config, to get the host, ports, mailbox username, password, and autoconfig URL. Then point any client — Thunderbird, Apple Mail, Outlook — at 127.0.0.1.
How do IMAP and SMTP credentials work?
Your local mail clients and local agents use password-based auth. Node Proxy generates a local mail password for the mailbox and enforces it on both IMAP and SMTP submission. The local control plane and /localapi/v0/mail/client-config expose the current username/password pair and autoconfig data.
Between the edge proxy and your device, mail still stays on the private WireGuard path. The public internet never authenticates directly to your laptop's SMTP submission port.
What happens when my laptop moves to a different network?
Your mail server follows you. MagicDNS means the edge proxy can always find your device — at home, in a coffee shop, or on a mobile hotspot — without needing to update DNS records. The WireGuard tunnel reconnects automatically when your network changes.
Can my AI agent read and respond to emails?
Yes. Because the mail server runs locally, your agent can access the mailbox through the local mail APIs or through standard IMAP/SMTP using the same local mail password. No OAuth tokens or third-party mailbox API are required. Your agent talks directly to your mailbox on your machine.
Can I use Node Proxy as a heartbeat model for OpenClaw?
Yes. The local OpenAI-compatible endpoint on your device can serve as a dedicated heartbeat model in OpenClaw. Set the non-fast model variant (Qwen/Qwen3.6-35B-A3B) as the heartbeat model — it runs periodic background checks like inbox triage, calendar alerts, and proactive notifications where reasoning quality matters more than latency. The generated OpenClaw config from /v1/agent/configs/openclaw already includes a heartbeat block.
Where is my email actually stored?
Your primary mailbox storage is a local Maildir on your hardware. If your device is offline, the edge can hold an age-encrypted copy of accepted inbound mail for the offline hold window on your plan. The private key stays on your device, so queued mail is not stored as readable plaintext on Node Proxy servers. After successful delivery, the held encrypted copy is removed.
How can my agent send and reply to email?
The local mail API on each device exposes everything an agent needs without going through OAuth or a third-party mailbox provider:
POST /localapi/v0/mail/send— send a new message via the local SMTP submission flow.POST /localapi/v0/mail/messages/{id}/reply— reply to a specific message by canonical mailbox_id.GET /localapi/v0/mail/messages— list messages with optional search and folder filters.GET /localapi/v0/mail/messages/{id}— read one message with extracted bodies, attachment open/reveal actions, and a header+attachment risk summary.POST /localapi/v0/mail/messages/{id}/mark— mark a message read or unread.DELETE /localapi/v0/mail/messages/{id}— delete a message.GET /localapi/v0/mail/recentandGET /localapi/v0/mail/stream(SSE) — read or follow inbound mail events for proactive triage.
Auth uses the localhost token plus the synced agent API key. Plain IMAP/SMTP also works if your agent prefers protocol-level access — same local mail password as a desktop client.
Photos
How do I publish photos with Immich?
Immich runs on your hardware while a public Immich URL is minted on the edge. The flow:
- Enable Immich on the device:
POST /localapi/v0/immich/enable. The local control plane and/localapi/v0/nodeproxy/statusreflect Immich state. - Assign a public URL to the device:
POST /v1/immich-urls. List or remove URLs viaGET|DELETE /v1/immich-urls. - Manage albums and shared links via the local Immich API:
GET /localapi/v0/immich/albums,POST /localapi/v0/immich/albums/update,GET /localapi/v0/immich/shared-links,POST /localapi/v0/immich/shared-links/update. Shared links can have expiry, password, slug, metadata visibility, and download/upload permissions. - Tune the public-share image cache via
POST /v1/immich-urls/{device_id}/cache-manifestandPOST /v1/immich-urls/{device_id}/cache-refresh.
Free includes 1 GB/mo of public photo URL bandwidth; Pro includes 50 GB/mo, with optional $0.20/GB overage after usage-based scaling is enabled with a monthly cap. Storage is unlimited because the photos live on your hardware. The Immich mobile app handles automatic backup over the same secure tunnel.
Website Publishing
How do I publish a WordPress site?
WordPress runs on your device while the edge proxy fronts public traffic with HTTPS termination, caching, rate limits, and DDoS protection. The flow:
- Enable WordPress on the device:
POST /localapi/v0/wordpress/enable. Stop or uninstall later withPOST /localapi/v0/wordpress/disableorPOST /localapi/v0/wordpress/delete. - Reserve a public website route:
POST /v1/website-routes. Update hostname, lifecycle status, admin mode, or cache manifest paths viaPATCH /v1/website-routes/{id}. List or delete routes viaGET|DELETE /v1/website-routes. - Manage caching:
POST /v1/website-routes/{id}/cache-manifestto declare the authoritative HTML cache manifest, andPOST /v1/website-routes/{id}/cache-refreshto purge a host or path set. - Edit content from an agent or the copilot via the local WordPress API — pages, front-page selection, page content, and
wp-contentfilesystem CRUD.
Free: 1 managed hostname, 3 cached HTML paths, 1 GB/mo bandwidth. Pro: 1 hostname, 50 cached paths, 25 GB/mo, with optional $0.20/GB overage after usage-based scaling is enabled with a monthly cap. Custom domains are an add-on (see "How do I bring my own domain?").
Custom Domains
How do I bring my own domain?
Custom domains are a Pro add-on at $5/domain/mo and bundle email and website publishing on that domain.
For mail BYOD:
- Verify ownership via a TXT record:
POST /v1/custom-domains/verify-ownership. - Prepare SES identity and the required DNS records:
POST /v1/custom-domains/prepare. - Inspect current DNS state before changing routing:
POST /v1/dns/scan. Apply fallback MX routing if you want Node Proxy in front:POST /v1/dns/fallback. - Manage routes:
GET|POST|PATCH /v1/email-routes. - Attach mailboxes on the domain at
$2/address/mo:POST /v1/byod-addresses. List or remove viaGET|DELETE /v1/byod-addresses.
For website publishing on a custom domain, register the route via POST /v1/website-routes with your hostname; the same $5/domain/mo covers HTTPS termination, caching, and rate limiting at the edge. You can also reserve a vanity address on the Node Proxy domain (name@mail.nodeproxy.ai) at $2/address/mo without bringing a domain.
Architecture
What does the Node Proxy client actually install?
A lightweight daemon that connects your machine to our edge via an encrypted WireGuard tunnel. Once running, your hardware can receive email, serve websites, host photos, and expose APIs — all without opening ports or configuring DNS. The client handles the local protocol servers (IMAP, SMTP, HTTP) and the secure tunnel back to the edge.
What does the edge proxy do?
The edge proxy is the public-facing layer. It handles TLS termination, HTTPS, SMTP, DDoS protection, caching, and rate limiting. It's the front door that the internet talks to — then it relays traffic securely to your device over the WireGuard tunnel. Your home IP stays hidden.
Is my home IP address exposed?
No. All public traffic goes through the edge proxy. Your device connects outbound to the WireGuard mesh — it never accepts inbound connections from the public internet. Your home IP is never visible in DNS records, email headers, or HTTP responses.
What can the Node Proxy agent / MCP API do?
Node Proxy exposes two API surfaces that an agent (or the MCP server) can drive:
- Cloud agent API (
/v1/agent/*). Reserve and remove managed mailboxes (/v1/managed-addresses), attach mailboxes on a domain you own (/v1/byod-addresses), publish public Immich URLs (/v1/immich-urls), publish website routes for WordPress (/v1/website-routes), prepare custom domains (/v1/custom-domains/prepare), manage account API keys (/v1/agent/api-keys), and fetch ready-to-copy coding-agent configs (/v1/agent/configs/qwen-code,/v1/agent/configs/opencode,/v1/agent/configs/openclaw). - Local API on each device (
/localapi/v0/*). Read device status (/localapi/v0/nodeproxy/status), get IMAP/SMTP credentials (/localapi/v0/mail/client-config), read/send/reply to mail (/localapi/v0/mail/...), enable and manage Immich (/localapi/v0/immich/...), and enable and manage WordPress publishing including filesystem and page edits (/localapi/v0/wordpress/...).
A live, machine-readable catalog of every endpoint with exact methods, paths, and request shapes is available at /mcp-agent-api. The hosted MCP server wraps the same surface for agents that prefer MCP tools instead of raw HTTP.
Billing & Payments
How is billing handled?
Free accounts are free. Paid plans are billed monthly through Stripe, which is also our processor for any usage-based overage charges (for example, hosted inference API tokens beyond your plan's included allowance). You'll only see overages if you've explicitly enabled usage-based scaling and set a monthly cap.
Where do I see invoices and update my payment method?
The Billing page in the admin console shows your current plan, included allowances, current-period usage, and past invoices. Updating your card, switching plans, or canceling all happen through the Stripe-hosted billing portal we link to from that page.
Does Node Proxy store my credit card?
No. All payment information is handled by Stripe, which is PCI DSS certified. We never see or store your full card number, CVC, or bank credentials — we only keep the Stripe customer and subscription identifiers needed to look up your plan and invoices. See the Privacy Policy for the full list of what we store.
What can the account copilot do with billing?
The account admin copilot can read billing context — your plan, current-period usage, included allowances, and invoice metadata — to help answer questions like "how much have I used this month?" or "what plan am I on?" It cannot change billing or payment terms; plan changes, payment-method updates, and cancellations always go through the Stripe billing portal so you confirm them yourself.
Security
How is traffic encrypted?
Every connection between the edge and your device uses WireGuard encryption with ACLs enforced at every node. Unauthorized machines never receive peer keys and can't even complete a handshake. Separately, the local IMAP and SMTP submission services on your device require the daemon-generated mail password.
Is my email encrypted at rest?
Yes. We use a zero-access encryption model for all inbound email. The edge proxy terminates the public SMTP connection, performs spam scanning, and then immediately encrypts the message payload using age (X25519) before it is ever written to the temporary edge spool.
The private key required to decrypt your mail is generated on—and never leaves—your physical device (the Connector). This means that even if the edge proxy or storage layer were compromised, your spooled mail cannot be read by anyone, including us. When your device pulls the mail over the WireGuard tunnel, it decrypts the message locally using its private key before presenting it to your email client.
How does this compare to Proton Mail?
Like Proton Mail, we offer zero-access storage, but our architectural approach is different:
- True Device-Only Keys: Proton stores your private key encrypted on their servers. Node Proxy never stores your private key. It exists only on your local hardware.
- Modern Cryptography: Proton uses legacy OpenPGP. We use
age(ChaCha20-Poly1305), which is significantly simpler, faster, and lacks the legacy cruft of PGP, reducing the potential attack surface. - Boundary Focus: We focus entirely on securing the "last mile" between the public internet and your private network rather than building a proprietary ecosystem.
Can Node Proxy read my data?
The edge proxy has to process some traffic in transit to route it, enforce policy, and run mail authentication and spam checks. For inbound mail, the message is visible to the edge during SMTP acceptance and scanning, then the accepted payload is encrypted with your device's age public key before any offline spool write. If your device is offline, Node Proxy holds that encrypted copy until reconnect and removes it after delivery; the private key stays on your device. Your long-term email, photos, and files live on your hardware. See the Privacy Policy for details.
Have a question not covered here? Reach out at support@nodeproxy.ai.