Skip to content

feat(keystone): add Keystone identity and Sentinel authorization - #300

Open
PKTH-Jx wants to merge 8 commits into
syswonder:devfrom
PKTH-Jx:feat/keystone-sentinel
Open

PKTH-Jx wants to merge 8 commits into
syswonder:devfrom
PKTH-Jx:feat/keystone-sentinel

Conversation

@PKTH-Jx

@PKTH-Jx PKTH-Jx commented Oct 25, 2026

Copy link
Copy Markdown

Summary

This branch adds Keystone-backed identity and Sentinel capability-call policy to the Liaison → Pilot → Executor path. Liaison, Pilot, and Executor can each enforce authentication independently, while rbnx supports Keystone boot, login, saved sessions, and authenticated chat and task submission.

This work builds on the initial Keystone and Sentinel implementations from #205 and #175.

What changed

  • Add a SQLite-backed Keystone service with Argon2 password hashes, revocable sessions, roles, account administration, per-user voice guards, and first-boot administrator setup.
  • Authenticate Liaison text, push-to-talk voice, and hands-free requests; require explicit sessions for hands-free control and validate Voiceprint against the signed-in account when enabled.
  • Validate Pilot SubmitTask requests and forward the credential through plans, steering, cancellation, and plan-control calls. Executor revalidates it before execution and clears credentials from public Plan events.
  • Add independent require_keystone settings for Liaison, Pilot, and Executor, with CLI > environment > manifest > YAML/default precedence. All default to false.
  • Add Sentinel evaluation before every capability dispatch. Rules support contract wildcards, users, roles, time windows, typed arguments, and trusted robot context. Malformed arguments or unavailable candidate state fail closed.
  • Add persistent Sentinel rule management through authenticated ListRules and ReplaceRules contracts, restricted to Keystone administrators.
  • Register Keystone and Sentinel as boot-managed system components and add capability contracts, Webots manifests, and the end-to-end test script.

Compatibility

require_keystone is a new per-component option and defaults to false. Each component resolves it independently using CLI > environment > manifest > YAML/default. Keystone gRPC has no TLS, so remote deployments require a trusted network or encrypted tunnel

Validation

  • Workspace format, build, and Clippy passed.
  • Keystone and Sentinel tests passed: 27 tests.
  • Targeted Executor, Pilot, Liaison, and rbnx configuration tests passed.
  • The full cross-process script bash scripts/test_sentinel_keystone.sh passed.

Authenticate Liaison text, voice, and control requests through Keystone.
Pass session tokens through hands-free and voice capture flows, apply
Keystone voice policy, and start Keystone through rbnx boot.

Assisted-by: Codex:gpt-5.6
Provide a standalone policy core before connecting Sentinel to Executor
and Atlas. Add typed rule validation, priority-based capability-call
decisions, and rule management contracts.

Assisted-by: Codex:gpt-5.6
Sentinel needs authenticated identity and trusted robot state at the
Executor boundary before a provider receives a call.

Propagate validated Keystone sessions through Liaison and Pilot. Load
persistent rules, collect trusted state, enforce decisions before dispatch,
expose rule management capabilities, and add the Webots policy example.

Assisted-by: Codex:gpt-5.6
Bind Keystone to loopback by default, keep Sentinel management
loopback-only, and preflight both Executor listen addresses before
spawn. Require a Keystone session for Execute and plan-control RPCs
when Liaison enables Keystone, and move Sentinel seed initialization
out of config resolution.
@github-actions github-actions Bot added type:feature New feature (feat:) comp:executor system/executor comp:pilot system/pilot comp:liaison system/liaison comp:sentinel system/sentinel comp:keystone system/keystone comp:rbnx tools/rbnx comp:capabilities capabilities/ contracts comp:docs docs/ and READMEs labels Oct 25, 2026
Pilot now validates Keystone sessions before planning and forwards the
credential through plan, steer, and cancellation requests so Executor can
enforce its own policy.

Liaison, Pilot, and Executor now resolve require_keystone independently from
CLI, environment, or manifest settings with the same precedence. Liaison's
Keystone endpoint is now only a connection fallback.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp:capabilities capabilities/ contracts comp:docs docs/ and READMEs comp:executor system/executor comp:keystone system/keystone comp:liaison system/liaison comp:pilot system/pilot comp:rbnx tools/rbnx comp:sentinel system/sentinel type:feature New feature (feat:)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant