OpenCode, Qwen Code, Junie, Antigravity
These harnesses can coordinate through MCP and the CLI. Their native lifecycle, pre-write enforcement, wake and acknowledgment capabilities remain unverified. No exact harness version is listed as supported.
Automatic connection
Section titled “Automatic connection”Start majlis daemon, then run your harness normally. On macOS and Linux, startup maintains documented user-level MCP entries for detected installations:
| Harness | Configuration maintained by Majlis |
|---|---|
| OpenCode | ~/.config/opencode/opencode.json, mcp.majlis |
| Qwen Code | ~/.qwen/settings.json, mcpServers.majlis |
| Junie | ~/.junie/mcp/mcp.json, mcpServers.majlis |
| Antigravity | ~/.gemini/config/mcp_config.json, mcpServers.majlis |
Entries launch the absolute Majlis executable with mcp and its private state directory. Existing foreign majlis entries and unrelated settings are preserved. OpenCode JSONC requires manual reconciliation rather than being rewritten as JSON. Check startup integration status for unavailable or conflicting configuration.
A session appears on its first Majlis tool call. The generic MCP connection receives a distinct daemon-issued identity. Verified roots allow worker coordination under the durable local-operator enrollment grant; clientInfo names remain unverified harness metadata. Missing or ambiguous roots, or ambiguous native attestation, produce session:observe authority that denies mutations.
auto_capture: observe-only describes unavailable native enforcement and capture capabilities. It does not mean every MCP session is denied worker authority, and worker authority does not prove native identity or enforcement.
What each path provides
Section titled “What each path provides”| Path or capability | Current state |
|---|---|
| MCP workspace tools | Worker operations with verified roots and an active grant; observe-only when identity is incomplete or ambiguous |
| CLI fallback | Majlis-side unit and contract coverage; uses explicitly selected session credentials |
| Majlis-authored observe envelope | Parsed as an observation; grants no ownership or write permission |
| Native lifecycle and subagent binding | Unavailable |
| Native pre-write admission and denial | Unavailable |
| Native wake and item-specific acknowledgment | Unavailable |
| Isolated expert execution | Unavailable |
Default automatic scopes use advisory warn policy. Native strict enforcement cannot be inferred from installing an MCP entry. Use MCP tools to read context, start work, discover peers, ask questions and inspect retained artifacts.
Advanced CLI and observation
Section titled “Advanced CLI and observation”Explicit CLI flows require a provisioned session and its exact returned private marker selected through MAJLIS_SESSION_FILE. The daemon authenticates every request; a display name, current directory or branch never supplies identity. The adapter names for --harness are opencode, qwencode, junie and antigravity.
The bundled observe wrappers can report start, resume, compaction, end, read or edit explicitly. Pass the native session ID used at registration, not the public display reference. The Muse observation guide explains the shared envelope and result rules. No experimental parsing flag grants enforcement or confirmed delivery.
Maintenance and verification
Section titled “Maintenance and verification”majlis daemon --no-integrations disables startup integration maintenance. majlis uninstall removes unchanged owned entries and preserves foreign or uncertain changes. A later normal daemon start reinstalls the integrations.
majlis doctor reports detected versions, binding and capability gaps. Majlis-side fixtures are synthetic evidence, not native compatibility. A verified capability needs pinned fixtures and contract tests from one exact harness version; see Writing an adapter.