Jacky includes a local WebSocket server that allows external applications, scripts, or home-automation systems (like Home Assistant) to trigger actions on Jacky. You can command Jacky to speak, show animations, trigger system notifications, set timers, run configured routines, switch skins, walk around the screen, query status, or pipe text through the full LLM agent pipeline.
Because WebSocket connections can be initiated from other programs running on your computer, Jacky implements a robust security model to protect your system:
Localhost Binding only: The server binds strictly to 127.0.0.1 (localhost). It is not reachable from other devices on your local network unless you explicitly proxy it.
Origin Checking: To prevent malicious websites you visit from making cross-origin WebSocket calls to your local Jacky instance, the server rejects any connection containing a browser Origin header. Only native clients, command-line tools, and backend scripts are permitted.
Token Authentication: Every client must authenticate using the shared secret token via HMAC comparison. Unauthenticated connections are closed immediately.
Action Allowlist: You choose which commands are active. High-risk actions like ask (which can call tools, search the web, or open applications) and run_routine are opt-in and disabled by default.
Message Size Limits: Inbound messages are capped at 8 KB to prevent memory exhaustion.
Rate Limiting: Clients are rate-limited using a token-bucket algorithm (burst capacity of 10 actions, refilling over a rolling 10-second window). Excess messages receive a rate_limited error response.
Triggers a visual animation/state change for Jacky. The pet automatically reverts to its normal state after 3 seconds. See Skins & Animations for the full list of available states.
Walks Jacky a relative distance in pixels from its current position. Valid directions: left, right, up, down, top (alias of up), bottom (alias of down).
Pipes input directly through Jacky's full agent pipeline (equivalent to typing in the question box or speaking to the pet). It handles keyword routines, intent classification, and tool execution (like opening applications, running shell commands, screen navigation, or searching the web).
Payload:
{ "action": "ask", "text": "Check the weather in Tokyo and tell me if I need an umbrella."}
Success Response:
{ "ok": true, "action": "ask", "reply": "It's currently raining in Tokyo with a temperature of 18°C. Yes, definitely take an umbrella!"}
Warning
Because the ask action can execute tools on your computer, it inherits all granular permission checks configured in Settings.
For simple shell scripts or curl invocations, you can authenticate and execute an action in a single step using URL query parameters. When a connection is opened with query parameters, the server executes the action immediately and remains open.