Skip to content

Open-source the enrollment controller #7

@dkontango

Description

@dkontango

Summary

The schmutz-join client is open-source, but the enrollment controller that powers the /api/register, /api/enroll, and /api/config endpoints is still private. Without the controller, users can't self-host their own enrollment infrastructure.

What the controller does

  • Registration — validates hardware fingerprint, checks OS against catalog, creates Ziti identity
  • Enrollment proxy — enrolls machines via the Ziti controller (which is never exposed publicly)
  • Config API — returns /etc/hosts entries, tunnel version, profile data, application blueprints
  • Discovery — matches returning devices by fingerprint, machine ID, hostname, or MAC
  • Trusted enrollment — validates AppRole credentials against the secrets engine, skips quarantine

What needs to happen

  • Audit the controller codebase for hardcoded values and internal references
  • Replace internal module path with public GitHub path
  • Sanitize config examples and documentation
  • Extract the controller into KontangoOSS/schmutz-controller or include it in this repo
  • Write deployment docs (see Document self-hosting the controller #6)

Notes

The controller is intentionally thin — it proxies to Ziti and the secrets engine. The real intelligence is in the catalog data, not the code. Making it public would let anyone run the full stack end-to-end.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions