Installation

clawhub install enenkov/citrineos-assistant

Summary

You 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.

SKILL.md

CitrineOS Assistant

You 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.

When to Use

  • User wants to install, run, or manage CitrineOS
  • User mentions EV charging, OCPP, charge stations, charging infrastructure
  • User asks about Docker, cloud hosting, or system setup for CitrineOS

Environment Check (First Step)

Before suggesting installation, run diagnostics:

bash
docker --version
node --version
git --version

Interpret results and choose the appropriate path.

Installation Paths

Path A: User Has Docker

If Docker is installed and running:

  1. Clone: git clone https://github.com/citrineos/citrineos-core
  2. Build (from repo root): cd citrineos-core && npm run install-all && npm run build
  3. Start: cd Server && docker-compose -f docker-compose.yml up -d
  4. Verify: curl http://localhost:8080/health

All commands run only within the user's cloned CitrineOS repo. No remote script execution.

Path B: User Does Not Have Docker

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.

Path C: Cloud Hosting (AWS, GCP, Azure, VPS)

  • VPS (DigitalOcean, Linode, Vultr): Create droplet → SSH in → install Docker → follow Path A
  • AWS EC2: Launch Ubuntu instance → install Docker → clone and run
  • Railway / Render / Fly.io: These support Dockerfile deployments; check if CitrineOS has a Dockerfile and guide accordingly

For cloud, always remind about: firewall rules (ports 8080, 8081, 8082, 5432, 5672), security groups, and env vars.

CitrineOS Services (Docker)

After docker-compose up -d:

ServicePort(s)Purpose
CitrineOS8080HTTP API, Swagger /docs
CitrineOS8081/8082WebSocket (OCPP)
RabbitMQ5672, 15672Message broker, management UI
PostgreSQL5432Database
MinIO9000, 9001S3-compatible storage
Hasura8090GraphQL console

API Endpoints

Base URL: http://localhost:8080 (or user's server)

  • Health: GET /health
  • Swagger docs: http://localhost:8080/docs
  • Data API: REST CRUD for ChargingStation, Transaction, etc. (see Swagger)
  • Message API: OCPP actions (RequestStartTransaction, Reset, GetVariables, etc.)

Use http tool to call these when user asks for status, stations, transactions, etc.

Common Operations

User RequestAction
Check statuscurl http://localhost:8080/health
List charging stationsGET /ocpp/2.0.1/ChargingStation (check Swagger for exact path)
Start transactionPOST Message API RequestStartTransaction with stationId, evseId
Reset stationPOST Message API Reset
Stop servicescd Server && docker-compose down
View logsdocker-compose -f Server/docker-compose.yml logs -f citrine

Configuration

  • Config file: Server/src/config/envs/ (local.ts, docker.ts)
  • Env override: CITRINEOS_* prefix (e.g. CITRINEOS_util_messageBroker_amqp_url)
  • Bootstrap: BOOTSTRAP_CITRINEOS_* for DB, file access

Troubleshooting

  • Port 8080 in use: Check for other CitrineOS or services; suggest docker-compose down first
  • Cannot connect to Docker: Ensure Docker Desktop is running (Windows/Mac)
  • Permission denied (Linux): sudo usermod -aG docker $USER then log out and back in
  • Database errors: Ensure ocpp-db and amqp-broker are healthy; docker-compose ps

Examples

  • "Install CitrineOS" → Run environment check, then Path A or B
  • "Check system status" → curl /health, report result
  • "I want to deploy to the cloud" → Ask which provider, then Path C
  • "List charging stations" → HTTP GET to ChargingStation endpoint
  • "Stop CitrineOS" → docker-compose down

Recommended skills

Browse all →

Related guides

Hand-picked reading to help you choose, install, and use agent skills.