Installation
Prerequisites
Section titled “Prerequisites”| Requirement | Version | Why |
|---|---|---|
| Go | 1.26 or later | Required by go.mod. |
| Git | 2.36 or later | Checkpoints, recovery and finish verification need a complete, readable local repository with at least one commit. |
| Node and npm | ^22.22.2 || ^24.15.0 || >=26.0.0 |
Build the dashboard in web/. The installed binary does not need Node. |
| Python | 3.9 or later | Contributor notice checks only. |
macOS and Linux are the local execution targets. Windows builds remain experimental, with native runtime and harness behavior unverified.
Build from source
Section titled “Build from source”Run from the Agent Majlis source checkout:
make build-majlisexport PATH="$PWD/bin:$PATH"majlis versionThis builds the dashboard assets, then compiles bin/majlis with them embedded. make build-go builds a CLI-only development binary using any dashboard assets already present. majlis doctor reports whether the dashboard is embedded; majlis ui refuses when it is unavailable. Rebuild the binary after changing dashboard assets.
The module path remains agent-majlis. No remote go install path is claimed.
Start local coordination
Section titled “Start local coordination”majlis daemonStartup silently provisions a generated local operator and worker-enrollment grant, maintains user-level integrations for detected harnesses and prints its endpoint, integration status and private dashboard link. Run your harness normally; no project initialization or manual session registration is needed for the automatic route. See the quickstart and harness connection guide for each connection’s limits.
Auto-enrolled scopes use audited warn policy. Starting the daemon does not approve a harness tool or grant native enforcement capabilities. Explicit enforcement changes require an operator action and reason.
For authenticated loopback TCP instead of the default macOS/Linux Unix socket:
majlis daemon --listen 127.0.0.1:0Clients discover the published port when the default socket is absent; explicit endpoint environment variables retain precedence.
Run as a service
Section titled “Run as a service”majlis service install --preview-onlymajlis service installmajlis service statusmajlis service uninstallThe installer uses launchd, systemd or a Windows scheduled task. install --replace deliberately stops and replaces a foreign installation. Uninstall requires ownership.
Integration maintenance and removal
Section titled “Integration maintenance and removal”majlis daemon --no-integrations disables startup integration maintenance. majlis uninstall removes unchanged owned integrations and the managed service, preserving foreign settings and uncertain edits. It does not delete project work or coordination state. A running daemon retains its reported startup integration state; the next daemon start reinstalls integrations unless started with --no-integrations.
Local state
Section titled “Local state”State defaults to ~/.majlis/: one database with WAL files, payloads, credentials, session files, journals and hook-gap metadata. Unix directories are private (0700), and sensitive files and the socket are 0600.
Use a local filesystem. Known network-mounted database locations are rejected. MAJLIS_STATE_DIR or a command’s --state-dir selects another root; a custom Unix root must be owned by the daemon user with mode 0700 before use. Every entry point must use the same root.
One daemon serves one OS user on one machine. Majlis provides no security boundary between processes running as that user.
Windows
Section titled “Windows”Windows defaults to authenticated loopback TCP and requires manual PowerShell harness installation. Native ownership, permission-bit, link-count, boot, PID and peer-UID verification have documented gaps. majlis doctor reports them. Cross-compilation does not establish Windows runtime or harness compatibility.
Check the installation
Section titled “Check the installation”majlis doctorAdd --json for structured output. A detected harness version is diagnostic information; no exact harness version is currently verified as supported.