Skip to content
Lenso
English
Esc
navigateopen⌘Jpreview
On this page

Lenso Console

Connect an exact System, load Module Surfaces, and inspect direct operational status.

Lenso Console is the independently installed operator-facing System Plane for one Lenso System. Its Shell, API, Worker, Auth domain, Registry, and Store run separately from the business Services it observes.

Console has a deliberately narrow role: connect, report status, load exact Module Surfaces, and invoke typed target-owned operations. It does not create, deploy, adopt, delete, release, upgrade, roll back, or reconcile production workloads.

Connect the local target

From an already composed Host directory, start the complete connected local path:

cd ./support-desk
lenso dev up --console-root ../lenso-console

The command starts the Host, auto-start Provider Services, and Console; creates loopback-only signed enrollment material; reconciles Module-owned UI artifacts; and connects the exact topology before reporting the System ready.

For a separately prepared connection bundle, use the same public idempotent entrypoint:

LENSO_CONSOLE_TOKEN='<operator-session-token>' \
  lenso console connect \
  --console-url http://127.0.0.1:3030 \
  --bundle .lenso/console-connect.json

Use --token-file with a private regular file for non-interactive operation. The bundle binds signed enrollment receipts, an optional exact Console Composition artifact effect, and the digest-bound System Connection request.

Underlying enrollment contract

The Support Desk local acceptance submits its signed bilateral exchange to:

POST /api/console/v1/enrollment-receipts

The body contains only {offer, receipt, baseUrl} and the route requires console.system.connect. Console validates both signatures against its server-only allowlisted Ed25519 trust configuration before storing the exact Enrollment Grant and Receipt. In this supported slice, baseUrl must be a loopback target. The CLI-owned lenso-local-control-adapter is bound as workload-control:<system> and does not use business enrollment; every other topology Service requires an active signed enrollment.

This endpoint is not remote or production self-service enrollment. A remote production target still requires the approved mTLS and certificate-pinning transport seam.

Underlying System connection

The public connection boundary is:

POST /api/console/v1/system/connect

The authenticated request contains one exact lenso.system.v2 topology, its SHA-256 digest, and a Management Binding for the same System. Console validates that services, modules, workloads, adapters, permissions, and policy all agree before storing the connection.

Whole-System reads require console.system.read; connection requires console.system.connect. Service-scoped grants cannot authorize either route.

An unsigned registry write is never a connection shortcut. Connect validates the exact active enrollment, Management Binding, and advertised Core contract.

Read status

GET /api/console/v1/system

The response and Services page show direct state for each object:

State Meaning
connected The exact contract, digest, binding, and live target agree.
unavailable The declared target cannot currently be observed; the reason identifies the failing boundary.
incompatible A protocol, schema, artifact, or capability does not match.
unmanaged An observed or enrolled object is outside the current topology and Management Binding.

Console does not synthesize a second app-wide score. A Service can be connected while one Module or Adapter has its own actionable state.

Module Surfaces

A Module-owned UI is an immutable console_ui_esm artifact in the same Module Release as its manifest. Console validates the artifact digest, generated lenso.console-module.v1 manifest, protocol range, entries, styles, Module identity, and exact System receipt before loading it in the Shell.

The Surface uses the public @lenso/console-module-api and @lenso/console-ui packages with the injected typed Host API. For business records it calls a generated client through the same-origin Surface Gateway. The server rechecks the authenticated Console actor, Module identity, artifact digest, Module Release digest, contract digest, and allowed operation ID from the Surface Grant on every request.

Service bearer tokens and Adapter credentials stay on the server. Browser code never receives them and never connects directly to a business Service.

Continue with Module Console UI for artifact authoring or Business APIs and Console Surfaces for operation design.

Workload Control

Workload routes are same-origin Console Service endpoints below:

/api/console/v1/systems/{systemId}/workloads

The connected topology must name stable Workload references and bind a typed lenso.workload-control.v1 Adapter. Console derives the actor, sends only the declared action, persists the asynchronous Operation Record, and polls the operation identity to a terminal state.

Local Adapters may support Suspend/Resume or Stop/Start. An unreachable Adapter produces unknown observation state with no revision. Mutations fail closed; they are not queued, rerouted, or guessed from process state. The active Adapter and Console Workload cannot target themselves through this path.

Access control

An installed Console Service has no default credentials. Bootstrap its first password user and audited Operator role from the external installation authority:

lenso console operator bootstrap \
  --console-root ../lenso-console \
  --console-url http://127.0.0.1:3030 \
  --identifier admin@example.com

Interactive terminals prompt without echoing the password. Automation must use --password-stdin or a private regular file through --password-file. Do not put Service bearer tokens in a browser build.

For authentication capability boundaries, read Auth Capabilities.

Operational boundary

  • Console reports connected application state; it does not own application composition.
  • Business writes go through declared Business APIs and Surface Grants.
  • Typed management operations execute in their owning Service or Adapter.
  • Production release and deployment remain external to Console.
  • Console outage does not stop Autonomous Service business execution.

Last updated on August 13, 2026

Was this page helpful?