Skip to main content
GenieACS is a battle-tested TR-069 Auto Configuration Server (ACS) built to manage hundreds of thousands — and potentially millions — of CPE devices such as routers, modems, and gateways. It uses a declarative, fault-tolerant provisioning engine to automate complex device configuration at scale.

Quick Start

Get GenieACS running in minutes with npm and MongoDB

Installation Guide

Production deployment with systemd on Linux

Provisions

Write JavaScript scripts to configure devices declaratively

NBI REST API

Integrate external systems via the Northbound Interface

What is GenieACS?

GenieACS implements the CWMP (TR-069) protocol, enabling your network operations center to remotely:
  • Read and write any parameter in a device’s TR-069 data model
  • Push firmware upgrades and configuration files
  • Trigger reboots and factory resets
  • Monitor device state and connectivity
  • Automate complex provisioning workflows with JavaScript

Architecture overview

GenieACS consists of four independent services that share a single MongoDB database:

CWMP (port 7547)

The TR-069 protocol server. CPE devices connect here to report state and receive configuration instructions.

NBI (port 7557)

The Northbound Interface REST API for OSS/BSS systems, scripts, and automation to manage devices programmatically.

FS (port 7567)

The file server. Delivers firmware images and configuration files to CPE devices during download operations.

UI (port 3000)

The web interface for administrators to browse devices, manage configuration, and trigger operations.

Key features

  • Declarative provisioning — Write intent-based scripts; GenieACS determines the minimal set of TR-069 RPCs needed
  • Fault-tolerant sessions — Sessions survive TCP disconnects and resume seamlessly
  • Virtual parameters — Expose computed or derived values as if they were real device parameters
  • Extension system — Call privileged Node.js scripts from sandboxed provision code
  • Expression-based access control — Fine-grained RBAC with dynamic filter expressions
  • Scales to millions — Multi-process architecture with MongoDB-backed distributed locking
1

Install prerequisites

2

Install GenieACS

Run sudo npm install -g genieacs to install from npm
3

Configure and start services

Set environment variables and start the four GenieACS services
4

Access the web UI

Open http://localhost:3000 and complete the initialization wizard
GenieACS v1.3 is the current development branch. For production deployments, see installation for recommended configuration including TLS and JWT secrets.