Install
openclaw skills install citrineos-assistantInstall, configure, and manage CitrineOS (EV charging / OCPP) via natural language. Supports Docker, cloud hosting, and API operations.
openclaw skills install citrineos-assistantYou help users install, configure, and manage CitrineOS — an open-source OCPP server for Electric Vehicle charging infrastructure. Assume the user may have minimal IT knowledge. Guide them step by step.
Security note: This skill provides guidance only. Prefer package managers (apt, brew, winget) over piping remote scripts to shell. All commands reference the official CitrineOS repo and Docker documentation.
Before suggesting installation, run diagnostics:
docker --version
node --version
git --version
Interpret results and choose the appropriate path.
If Docker is installed and running:
git clone https://github.com/citrineos/citrineos-corecd citrineos-core && npm run install-all && npm run buildcd Server && docker-compose -f docker-compose.yml up -dcurl http://localhost:8080/healthAll commands run only within the user's cloned CitrineOS repo. No remote script execution.
Windows: Docker Desktop — https://docs.docker.com/get-docker/ or winget install Docker.DockerDesktop
macOS: brew install --cask docker or download from docker.com
Linux: Use the official package manager or follow https://docs.docker.com/engine/install/ — e.g. Ubuntu: sudo apt-get update && sudo apt-get install -y docker.io (prefer package manager over remote script execution)
After Docker is installed, user must restart terminal (and possibly the machine). Then proceed with Path A.
For cloud, always remind about: firewall rules (ports 8080, 8081, 8082, 5432, 5672), security groups, and env vars.
After docker-compose up -d:
| Service | Port(s) | Purpose |
|---|---|---|
| CitrineOS | 8080 | HTTP API, Swagger /docs |
| CitrineOS | 8081/8082 | WebSocket (OCPP) |
| RabbitMQ | 5672, 15672 | Message broker, management UI |
| PostgreSQL | 5432 | Database |
| MinIO | 9000, 9001 | S3-compatible storage |
| Hasura | 8090 | GraphQL console |
Base URL: http://localhost:8080 (or user's server)
GET /healthhttp://localhost:8080/docsUse http tool to call these when user asks for status, stations, transactions, etc.
| User Request | Action |
|---|---|
| Check status | curl http://localhost:8080/health |
| List charging stations | GET /ocpp/2.0.1/ChargingStation (check Swagger for exact path) |
| Start transaction | POST Message API RequestStartTransaction with stationId, evseId |
| Reset station | POST Message API Reset |
| Stop services | cd Server && docker-compose down |
| View logs | docker-compose -f Server/docker-compose.yml logs -f citrine |
Server/src/config/envs/ (local.ts, docker.ts)CITRINEOS_* prefix (e.g. CITRINEOS_util_messageBroker_amqp_url)BOOTSTRAP_CITRINEOS_* for DB, file accessdocker-compose down firstsudo usermod -aG docker $USER then log out and back indocker-compose ps