Skip to content

Contribute

Pipelet is source-first by design. Every module is in a public Git repository, every API surface is documented from the source itself, and the community is actively encouraged to fix bugs, file issues, and ship features.

The Pipelet monorepo splits into three layers:

ModuleWhat it does
ocpp-brokerMessage broker for OCPP 1.6 traffic — owns the WebSocket connections to chargers.
ocpp-serverREST API + business logic on top of the broker. 39 documented operations.
ocpp-chargersimOCPP charger simulator — testing and load-test tool.
ModuleWhat it does
cpms-headlessUnified REST gateway. The friendly entry point for integrators. 43 operations.
mcp-serverModel Context Protocol server. Exposes 30 tools to LLM agents.
automation-serviceWorkflow engine — consumes broker outbox events.
automation-studioTypeScript/React UI for managing automation workflows.
service-cardataVehicle data integration service.
service-energyEnergy management & metering.
service-monitoringObservability collection point.
ModuleWho it’s for
cpms-uiNetwork operators (Flask/Jinja).
admin-portalPipelet operators / support.
fleet-portalFleet managers (B2B).
cpms-driver-portalEV drivers (B2C).
homepageMarketing site (pipelet.com).
developer-portalThis site (developer.pipelet.com).
Terminal window
git clone https://github.com/pipelet/pipelet-platform.git
cd pipelet-platform

Each module has its own README.md with module-specific setup. Most Python services use pip install -r requirements.txt; most JS services use npm install.

The fastest way to get a working development environment is via Docker Compose — see Self-Hosting → Docker Compose Quickstart. For active development on a specific module, run that module from source against the rest of the stack in containers.

AspectConvention
Python styleblack formatted, ruff linted, mypy --strict for new code
JS/TS stylePrettier formatted, ESLint linted, strict TypeScript
Commit messagesConventional Commits (feat:, fix:, docs:, etc.)
Pull requestsOne feature per PR, link to an issue, include tests
Testspytest for Python, vitest for TS
DocumentationUpdate relevant *.md and developer-portal/src/content/docs/*.mdx in the same PR

Found a bug, want a feature, have a question? Open an issue in the relevant module’s repo:

Please include:

  • Pipelet version (run cpms-headless --version or check the Docker tag)
  • Steps to reproduce
  • Expected vs. actual behavior
  • Any relevant logs (with API keys redacted)
  1. Fork the relevant module repo.
  2. Create a feature branch off main: git checkout -b feat/short-description.
  3. Make your changes. Add or update tests.
  4. Run the linters and tests locally.
  5. Commit with a descriptive message.
  6. Push and open a PR against main of the upstream repo.
  7. Respond to review feedback. Squash if asked.

Pipelet maintainers aim to triage PRs within a week and merge straightforward fixes within two.

High-leverage contributions:

  • OCPP 2.0.1 coverage — the broker speaks 1.6 today; help fill in the gaps for 2.0.1.
  • Additional MCP tools — every CRUD endpoint in the gateway is a candidate for an MCP wrapper.
  • TypeScript SDK — auto-generated from the Headless OpenAPI spec.
  • Localization of UIs — driver portal and fleet portal are German-only today.
  • Documentation — every guide on this portal could use real-world screenshots and longer examples.

Be kind. Be patient. Assume good faith. Pipelet’s contributor community follows the Contributor Covenant — please read it before participating.

  • General: info@pipelet.com
  • Security disclosures: security@pipelet.com (please don’t open public issues for security bugs)
  • Real-time chat: Discord coming in Phase 3 — for now, GitHub Discussions on each repo.