Skip to content

Phase 57: Local server multi-backend permissions concept #1

Open

Description

@hotzenplotz5

Correction

This issue is about the local server architecture, not about doing repository work locally.

Phase 57 starts with one central VDR-Suite server in the local or private network. That server manages multiple VDR backends and enforces backend-specific permissions.

Local server target

  • Central VDR-Suite server
    • vdr-suite-daemon
    • REST API
    • backend registry
    • local access policy
    • later Web frontend
  • VDR backend A
    • managed through VDR-Suite
    • read-write from the VDR-Suite view
  • VDR backend B
    • managed through VDR-Suite
    • read-only from the VDR-Suite view

Clients should use VDR-Suite as the central access point. VDR-Suite is the policy gatekeeper.

In scope for Phase 57

  • local/private server deployment model
  • multiple locally or privately reachable VDR backends
  • backend identity
  • backend display name and location metadata
  • backend access mode: read-only or read-write
  • backend capability state
  • server-side write blocking for read-only backends
  • frontend-ready JSON for backend selection and access state

Out of scope for this issue

  • public remote access
  • reverse proxy deployment
  • VPN or tunnel deployment
  • OIDC, LDAP, passkeys or full identity provider integration
  • full Web UI implementation
  • streaming implementation

Required source review before implementation

Inspect existing code and docs for:

  • BackendNode
  • BackendRegistry
  • BackendRegistryService
  • capability model
  • existing permission and policy concepts
  • read-only recording-action policy
  • timer action policy
  • SearchTimer write gates
  • REST controllers exposing backend or capability state

Do not design Phase 57 from scratch if existing objects already cover part of the model.

Project rules for Phase 57

  • Inspect the real repository state before changing code.
  • Do not introduce classes before checking existing architecture.
  • Do not introduce methods before checking existing interfaces.
  • Do not bypass adapter boundaries.
  • Keep backend-specific code behind backend adapters.
  • Keep domain objects backend-neutral.
  • Prefer capability checks before exposing backend-specific behavior.
  • Prefer small architecture steps over large rewrites.
  • Documentation is part of done for architecture work.
  • New documentation must be linked and reachable.
  • GitHub Actions must be green before a phase/reset block is complete.

Additional working rules agreed in chat:

  • nano only for manual edits.
  • no here-doc commands.
  • complete files or patch scripts, not partial snippets.
  • prefer short Python patch commands for local edits.
  • run focused tests before commit.
  • show git diff before commit when relevant.
  • commit, push, verify git status and CI.

Phase 57 first cut

Phase 57.1:

Backend Identity + Local Server Permission Model

Expected first implementation target:

  • central server knows configured backends
  • each backend has stable ID, display name, location and adapter config
  • each backend has local access mode
  • API returns frontend-ready backend access state
  • write operations are blocked server-side on read-only backends
  • no public remote-access scope is mixed into this cut

Definition of done for this issue

  • local server architecture is agreed
  • existing backend/capability/policy code is reviewed
  • Phase 57.1 implementation boundary is agreed
  • public remote-access scope stays out of Phase 57.1
  • docs and phase marker tests stay green
  • focused VDR/backend tests are selected before code changes

Activity

  1. changed the title [-]Phase 57: Local architecture scan for multi-backend permissions[/-] [+]Phase 57: Local server multi-backend permissions concept[/+] on Jun 30, 2026
  2. hotzenplotz5 commented on Jun 30, 2026

    @hotzenplotz5
    OwnerAuthor

    Phase 57 source-level architecture scan

    This scan is about the local/private server model, not about public remote access.

    Existing foundations already present

    • BackendNode already models a backend with backendId, backendName, backendType, connection, capabilities, enabled and online.
    • BackendRegistry already supports adding, looking up, listing and updating backend capabilities.
    • BackendRegistryService wraps registry access and already has a default backend lookup.
    • BackendRegistryJsonSerializer and BackendRegistryController already expose backend lists and default backend state as JSON.
    • VdrCapabilitySet already exists and has a read-only snapshot capability preset.
    • Recording actions already have a backend policy model with read-only and mutation policies.
    • Recording action execution already has a policy-aware execute path that blocks when safety policy denies execution.
    • SearchTimer workflow already has backend write allowlist and backend write permission gates.
    • Timer actions have backend IDs in requests and adapter-registry dispatch, but no central read-only policy gate is visible yet.

    Main gap for Phase 57.1

    The project has several local policy pieces, but no single local-server backend access model yet.

    Phase 57.1 should not invent a new architecture from scratch. It should extend the existing backend registry model with a stable frontend-ready local access state.

    Recommended Phase 57.1 cut

    Backend Identity + Local Server Permission Model

    Implement the smallest central model needed by the local VDR-Suite server:

    • backend display/location metadata
    • backend local access mode: read-only or read-write
    • frontend-ready JSON fields for access state
    • server-side read-only enforcement derived from backend state
    • no Internet, no reverse proxy, no external identity provider, no Web UI

    Likely implementation path

    1. Extend BackendNode with local-server access metadata.
    2. Add a small domain type or enum for backend access mode only if existing string/bool fields are insufficient.
    3. Extend BackendRegistryJsonSerializer and BackendRegistryController tests so /api/backends can show read-only/read-write state.
    4. Add a shared local backend access policy service only after checking whether existing recording and SearchTimer policy gates can consume the registry state directly.
    5. Add timer-action read-only blocking because timer actions currently appear to dispatch by backend ID but not by central backend write policy.

    Important rule

    Frontend may display permissions later, but VDR-Suite must enforce them server-side.

    A read-only backend must block write operations even when an API is called directly.

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

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions