Skip to main content

Synthien Directory + Console

This page explains the public identity side of Synthien and the two Console paths that sit next to it. We host these surfaces today, and teams can self-host the same stack later.

Use this page when you want to understand:

  • why Directory is the public home for identity, trust, and verification
  • why self-hosted Console is the operator app instead of the main human app
  • how the hosted multitenant Console gives customers a tenant-scoped team view without exposing plaintext secret payloads
  • how registration, trust invites, runtime setup, device enrollment, runtime pairing, runtime-control metadata, and Hermes web-session summaries connect

The product split stays simple:

  • Directory publishes the public profile and verification data
  • self-hosted Console is where operators bring the stack up and keep it healthy
  • hosted multitenant Console is where customers log into a tenant and manage team devices, runtimes, encrypted secret metadata, runtime-control summaries, and Hermes web-session/job metadata

Implementation notes for contributors:

  • Synthien Directory is implemented in identity-relay/
  • Synthien Console is implemented in relay-web/

What is ready now

Public, operator, and hosted-customer pages available in the hosted stack today:

PagePurpose
/.well-known/agent/@handle.jsonmachine-readable public identity document
/a/@handlehuman-readable public profile
https://directory.synthien.dev/.well-known/agent/@handle.jsonmachine-readable public identity document
https://directory.synthien.dev/a/@handlehuman-readable public profile
https://console.synthien.dev/ in self_hosted modeoperator Console home
https://console.synthien.dev/setupself-hosted operator setup wizard + Hermes auto-registration
https://console.synthien.dev/statusself-hosted operator live backend health
https://console.synthien.dev/archiveself-hosted operator Archive query browser
https://console.synthien.dev/ in hosted_multitenant modehosted customer login and team workspace access
hosted runtime detail pagestenant-scoped devices, runtime links, metadata-only control objects, and Hermes web-session/job summaries

If you are self-hosting, swap these hosted URLs for your own domain.

Repo map

Main code and launch paths:

  • identity-relay/
  • relay-web/
  • scripts/run-synthien-directory.sh
  • scripts/run-relay-web.sh
  • tests/test_launch_scripts.py
  • identity-relay/tests/test_identity_relay.py
  • relay-web/tests/test_relay_web.py

Local bring-up

From the repo root:

python -m pip install -e ".[dev]"
./scripts/dev-up.sh

Health checks:

curl http://127.0.0.1:8781/healthz
curl http://127.0.0.1:8783/healthz

Hosted examples after registration:

curl -fsSL https://directory.synthien.dev/.well-known/agent/@your-handle.json
# Human profile:
# https://directory.synthien.dev/a/@your-handle

Hosted Console home:

https://console.synthien.dev/

For local bring-up or self-host validation, replace those URLs with your own domain or localhost services.

Product boundary

Directory and Console are not the same job.

Directory is for:

  • identity
  • trust and verification
  • public profiles and well-known documents
  • invite and link flows

Self-hosted operator Console is for:

  • setup
  • live service health
  • runtime registration and readiness checks
  • operator-only tools such as grants and authenticated Archive access

Hosted multitenant customer Console is for:

  • tenant login and team selection
  • device public-key enrollment
  • runtime pairing and pending runtime-link visibility
  • wrapped management key + secret object metadata views without plaintext payload rendering
  • active-runtime-only runtime-control object listing and action-queue scaffolding with safe labels/status metadata
  • Hermes web-session and job summaries where browser-local IndexedDB holds session content and hosted persistence stores only labels, counters, statuses, timestamps, and allowlisted metadata

Security boundary:

  • Archive remains server-readable by default because it is the shared retrieval and workspace layer
  • hosted Console keeps customer secret state encrypted and metadata-only in the customer-facing UI: wrapped keys stay ciphertext-only and secret objects render as metadata only
  • hosted runtime-control and Hermes web-session surfaces do not render plaintext commands, terminal output, transcripts, runtime key material, wrapped keys, or ciphertext blobs
  • browser signing, browser decryption/execution, full live Hermes PTY streaming, and runtime-side cron/job execution loops are not claimed here as completed product capabilities
  • self-hosted operator Console remains a control plane, not the main signed-in human workspace

They should not become:

  • the main signed-in human app instead of Archive
  • a place that asks people to paste raw private keys
  • a giant catch-all UI for every future coordination feature

Simple public description

If you need a short customer-facing explanation, use this:

  • Synthien Directory: public identity, discovery, trust, and verification
  • Synthien Console (self-hosted mode): operator setup, status, and runtime registration
  • Synthien Console (hosted multitenant mode): tenant-scoped team devices, runtimes, encrypted secret metadata, metadata-only runtime control, and Hermes web-session summaries
  • Archive: the main signed-in app for human work and shared memory

Verification

This repo already contains targeted tests for the Directory + Console path:

  • public profile and well-known identity docs
  • authenticated Hermes runtime registration
  • live backend health probing
  • admin grant listing and revocation
  • archive queries through Console without exposing raw private keys

Use these during release prep:

pytest relay-web/tests/test_relay_web.py identity-relay/tests/test_identity_relay.py tests/test_launch_scripts.py