Install
JinClaw is not the OpenClaw npm package; it is this repository's stack (Next.js + Node cloud API + Python daemon). If you are familiar with docs.openclaw.ai/install, think of the steps below as the equivalent clone → configure → run → verify flow for JinClaw.
System requirements
- Node.js 18+ (20+ recommended) for
server/andfrontend/ - Python 3.12+ with project venv at repo root for the daemon (
uvicorn) - MongoDB Atlas (or compatible URI) for the cloud control plane — set
MONGODB_URIinserver/.env - Windows, macOS, or Linux — native Windows supported; WSL2 is fine for Linux tooling
Recommended: clone and run the dev stack
From the repository root, install JS dependencies once, then start all three processes (daemon, cloud API, dashboard).
cd path\to\jinclaw
# Python venv at repo root (once)
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e ".[dev]"
cd server && npm install && cd ..
cd frontend && npm install && cd ..
# One command opens 3 terminals (daemon + API + Next)
.\start-dev.ps1Cloud API (server/)
Copy server/.env.example to server/.env and set at minimum:
MONGODB_URI— Atlas connection stringJWT_SECRET— long random string for signing sessionsENCRYPTION_KEY— for vault crypto (see server docs / Hostinger env)APP_URLS— comma-separated browser origins, e.g.https://jinclaw.online,https://www.jinclaw.online,http://localhost:3000
Default port is 8080 unless you set PORT.
JinClaw Connector (lightweight local bridge)
For a browser-first experience you use the cloud dashboard immediately after signup. To attach your machine for filesystem, terminal, browser automation, and on-device vector memory, install the JinClaw Connector — a small Node process, not a full desktop application. It registers as a device and heartbeats to api.jinclaw.online.
# From repo: connector/
set JINCLAW_API_URL=https://api.jinclaw.online
set JINCLAW_TOKEN=<paste JWT from browser session / devtools Application storage>
node jinclaw-connector.mjsState file: ~/.jinclaw/connector-state.json (deviceId). See connector/README.md for architecture and roadmap (mTLS, task pull, local execution APIs).
Local daemon (daemon/)
The daemon owns operational data on disk. It listens on 127.0.0.1:18789 by default (JINCLAW_DAEMON_PORT). CORS allows https://jinclaw.online, https://www.jinclaw.online, and http://localhost:3000 by default.
Windows autostart: see daemon/scripts/install-windows-autostart.ps1 and daemon/README.md in the repo.
Verify the install
- Cloud API:
GET http://localhost:8080/healthreturns{ "status": "ok" } - Daemon:
GET http://127.0.0.1:18789/local/health - Dashboard: open
http://localhost:3000— register/login hit the cloud API; chat/leads/tasks target the daemon when configured in the UI.
Production deploy (domain)
On a VPS (e.g. Hostinger), use docker/docker-compose.production.yml. Set APP_URLS=https://jinclaw.online,https://www.jinclaw.online in server/.env and build the web image with NEXT_PUBLIC_API_URL=https://api.jinclaw.online. Terminate TLS at nginx — see deploy/nginx.conf.example for upstreams to ports 3000 (web) and 8080 (API), including a /socket.io/ block for live logs.
From repo root: docker compose -f docker/docker-compose.production.yml --env-file server/.env up -d --build
Hostinger shared hosting (hPanel): deploy the marketing + dashboard as a static export to jinclaw.online (folder frontend/out after NEXT_OUTPUT=export + NEXT_PUBLIC_API_URL=https://api.jinclaw.online), and deploy the Node API with JavaScript hosting on api.jinclaw.online (source zip: server/ without node_modules — includes server.js for Hostinger's node server.js entry). Run scripts/package-hostinger.ps1 to rebuild zips under .hostinger-build/, then use Hostinger MCP hosting_deployStaticWebsite / hosting_deployJsApplication. Set API env vars (MongoDB, JWT, encryption) in hPanel for the Node app.
Integrations & roadmap
The marketing site lists the same categories of tools as modern agent OS products (chat apps, models, mail, dev tools). Connector depth varies by channel: today you ship workflows through the daemon API, dashboard, and your own workers. Treat WhatsApp-class channels as integration targets you wire with keys and outbound webhooks — not magic toggles until those modules land in-repo.
Troubleshooting
- CORS errors: add your exact browser origin to
APP_URLS(comma-separated). - Login always fails: confirm
NEXT_PUBLIC_API_URLon the frontend matches where the API runs. - Daemon 404: run uvicorn with working directory = repo root so
daemon.appresolves.
Next: production deploy splits jinclaw.online (static/Next) and api.jinclaw.online (Node). Keep secrets in the host environment — never commit .env.