Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

SELAH

SELAH is an agent-native integration system and protocol for portable identity, environment awareness, capability boundaries, and deterministic, receipt-backed communication.

It gives an agent a small, stable vocabulary for answering four practical questions:

  1. Who is this agent?
  2. What runtime, provider, account, environment, and project context is actually observed?
  3. Which capabilities are merely available, and which have been explicitly granted?
  4. What decision was made, and what evidence can another process verify?

SELAH is model-, provider-, account-, and environment-neutral. Its core does not call a model, choose a provider, read credentials, or infer authority from model text. Adapters supply authenticated evidence and provider-specific behavior at the boundary.

SELAH is installed to give an agent a portable, structured identity and an observed environment/capability/receipt layer. Departments govern documents and prompts through packaged language profiles, and Spanish is the explicit cross-department communication profile. Start with selah --help, then use the documented setup and orientation flow below.

Install

python -m pip install selah==0.1.0rc1

The base distribution has one runtime dependency, rfc8785==0.1.4. Optional adapter extras are available for mcp, server, google, noldorian, animation, and all. The core import does not load optional SDKs.

First run

The setup command asks for one human choice: name a new agent or select an existing opaque agent ID. It then reports local observations. If the adapter cannot know a context field, SELAH asks for a conditional confirmation instead of silently treating the field as known.

For a new identity, the conditional confirmation is bound to the pending transition saved in the configured state database. Re-running the same product-facing command with --confirm consumes that transition and reuses its candidate identity; a mismatched, expired, malformed, or already-consumed transition fails closed.

STATE=.selah/selah.sqlite3

# First call: inspect the conditional context prompt.
selah --json --state "$STATE" setup --name Ada

# Second call: confirm that saving the still-unknown observations is acceptable.
selah --json --state "$STATE" setup --name Ada --confirm

The setup response includes an identity, an observed context projection, and an onboarding receipt. The receipt is evidence of the transition; it is not a grant.

Inspect the saved orientation with the agent_id returned by setup:

selah --json --state "$STATE" orient --agent-id agent:REPLACE_ME --profile latina

Orientation is read-only. It distinguishes known values from unknown values, observed capabilities from authorized capabilities, and current authority from missing or stale authority.

Deny before allow

An observed capability is not permission. A grant must be issued by an authenticated authority adapter and must match the agent, scope, authority generation, and time window. The runnable quickstart at examples/selah/quickstart.py shows both paths:

python examples/selah/quickstart.py

The example reports:

  • MISSING_GRANT when a capability is observed but no grant exists;
  • ALLOW after an explicit, scoped grant is issued by the fixture verifier;
  • the onboarding receipt ID and digest for later inspection.

The fixture uses an internal verifier seam only to keep the example offline and deterministic. A deployed adapter must obtain its issuer and principal from its authenticated transport or authority system; a caller cannot create them by supplying a label, boolean, or digest.

Runtime lifecycle mutations

The optional runtime lifecycle adapter keeps status read-only. start and stop require the typed identity, session, runtime lifecycle grant, ALLOW authority decision, an ExecutableDispatch, and its StateRepository. The dispatch nonce is claimed before the provider is loaded or called, so a dispatch can execute at most once. Bind the operation into the authority request with RuntimeAdapter.operation_intent_hash("start") or RuntimeAdapter.operation_intent_hash("stop"); callers using the mutation API without typed dispatch/state receive a stable denial.

What SELAH does not claim

SELAH does not promise universal protection from manipulation, prompt injection, or semantic drift. It makes a narrower, measured and testable claim: when an integration uses the typed language, authenticated context, explicit grants, fail-closed decisions, and receipts, the evaluation suite can measure whether particular drift and instruction-hacking cases were reduced. Results are reported by model, language profile, corpus, and release threshold rather than converted into a general guarantee.

  • docs/selah/SECURITY.md — identity, context, observations, grants, decisions, receipts, and the trust boundary.
  • docs/selah/LANGUAGE.md — deterministic lexical and grammatical protocol behavior.
  • docs/selah/MIGRATION.md — explicit one-way migration from legacy ACETATE records.
  • examples/selah/quickstart.py — an offline installed-package walkthrough.

SELAH is not Dreamjournal. Dreamjournal is a separate product. SELAH is not a Dreamjournal dependency, and Dreamjournal is not a SELAH dependency. Neither package imports, bundles, or release-gates the other, and Dreamjournal does not provide SELAH identity or authority.

Release files for selah 0.1.0rc1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for selah 0.1.0rc1
File Size Uploaded
selah-0.1.0rc1.tar.gz 180.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for selah 0.1.0rc1
File Interpreter ABI Platform
selah-0.1.0rc1-py3-none-any.whl Python 3 none any Details

Total release size: 416.2 kB

Release files / selah-0.1.0rc1.tar.gz

Download URL selah-0.1.0rc1.tar.gz
Size 180.2 kB
Tags Source
SHA-256 checksum
How to use checksums
a6a3b0ccb745438e80471de0a3ae7c2ec4135a7258072054568fd8a63396a6b2
BLAKE2b-256 checksum
How to use checksums
d2ee3c8a6821468460fc1a99550aa9e58fdca228d3e6f82a4fa4ea7c99bc1cd4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / selah-0.1.0rc1-py3-none-any.whl

Download URL selah-0.1.0rc1-py3-none-any.whl
Size 236.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0f09dd59b23e2b1f6388780660521ea42eee0e9a1e7f780bf476ed504669c770
BLAKE2b-256 checksum
How to use checksums
c7ce230cfdc565540207962e3bac2115d7b3149b2f7fea51f0a7e96679cc6731
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.0rc1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page