simon-helper
v0.4.1
Published
Local daemon for simondoes.ai — holds API keys on your machine, proxies LLM calls.
Maintainers
Readme
simon-helper
The local daemon for simondoes.ai. Holds your API keys on your machine; the Simon cloud never sees them. Proxies LLM calls locally and posts results back to the cloud UI.
Install
curl -fsSL https://simondoes.ai/install.sh | bashThat script installs Node 20+, installs this package globally, prompts for
your Simon API token + your Anthropic + OpenAI keys, and registers the
device with the cloud. On macOS it installs a launchd agent so the helper
runs at login; on Linux it installs a systemd --user unit.
Once the package is published to npm you can also run it without a global install:
npx simon-helper login <your-simon-api-token>
npx simon-helper key set anthropic sk-ant-...
npx simon-helper startManual usage
npm install -g simon-helper
simon-helper login <your-simon-api-token>
simon-helper key set anthropic sk-ant-...
simon-helper key set openai sk-...
simon-helper register
simon-helper startGet your API token at https://simondoes.ai/app/settings/helper.
Reliability
The daemon polls the cloud every 2 seconds while healthy. When the cloud
is unreachable it backs off exponentially (with jitter) up to 60 seconds
between attempts, then snaps back to fast polling on the first success.
State transitions are logged as single lines (connection lost ... /
back online after Ns ...) so a long outage does not flood the log.
If the API token is revoked (HTTP 401), the helper logs how to fix it —
regenerate a token at https://simondoes.ai/app/settings/helper, then run
simon-helper login <token> — and waits at the 60s cap instead of
hot-looping. The new token is picked up without restarting the daemon.
Security
Keys live in ~/.simon/keys.json with 0600 perms, owned by your user.
Nothing in this package ever transmits the raw key to the Simon cloud.
The cloud sends job specs (model, messages, params); the helper makes the actual provider call with the local key and posts back the response.
Per-agent integrations
Some agents need extra one-time wiring on this machine. The cloud will not be able to drive them until you complete this setup.
3D-Websites — Blender MCP
The 3d-websites agent produces premium brand sites with 3D anchors by
directing Cursor + Blender via MCP. To enable it:
- Install Blender (5.x or newer) from https://www.blender.org/download.
- Install the BlenderMCP add-on. It needs to live at:
simon-helper drops it there automatically on install; if missing, download from the BlenderMCP project and place it manually.~/Library/Application Support/Blender/<ver>/scripts/addons/blender_mcp_addon.py # macOS ~/.config/blender/<ver>/scripts/addons/blender_mcp_addon.py # Linux - Wire the MCP server in your Claude / Cursor MCP config:
(Add to both"blender": { "command": "/opt/homebrew/bin/uvx", "args": ["blender-mcp"] }~/.cursor/mcp.jsonand~/.claude.jsonso both surfaces see it.) - Each Blender launch (the toggles persist across sessions, the server does not):
- Open Blender → Edit → Preferences → Add-ons → search
MCP→ enable Blender MCP (one-time). - In a 3D Viewport, press N → click the BlenderMCP tab in the sidebar.
- ☑ Use assets from Poly Haven — free, no key needed.
- ☑ Use Hyper3D Rodin 3D model generation — click Set Free Trial API Key for a starter key, or paste your own.
- ☑ Use assets from Sketchfab — paste API token from https://sketchfab.com/settings/password (free accounts include API access).
- Click Connect to MCP server at the bottom. The button label flips to Disconnect from MCP server and shows
Running on port 9876.
- Open Blender → Edit → Preferences → Add-ons → search
- Keep Blender open for the duration of any 3d-websites job. The MCP "server" is a TCP listener inside the Blender process; closing Blender kills it. If a job fails with
"Could not connect to Blender", click Connect to MCP server again.
Smoke-test from any Claude/Cursor session (all four should succeed):
mcp__blender__get_polyhaven_status → "PolyHaven integration is enabled and ready to use."
mcp__blender__get_sketchfab_status → "Sketchfab integration is enabled and ready to use. Logged in as: <you>"
mcp__blender__get_hyper3d_status → "Hyper3D Rodin integration is enabled and ready to use."
mcp__blender__get_scene_info → JSON scene dump (default scene = Cube + Light + Camera)Commands
| Command | What it does |
|---|---|
| simon-helper start | Run the daemon — polls for jobs |
| simon-helper login <token> | Save the Simon API token |
| simon-helper register | Register this device with the cloud |
| simon-helper key set anthropic <sk> | Save Anthropic API key |
| simon-helper key set openai <sk> | Save OpenAI API key |
| simon-helper status | Print current config + key presence |
License
MIT
