feat: onboarding wizard -- guided first-run setup for new deployments #52

Closed
opened 2026-05-26 23:05:28 -07:00 by pyr0ball · 1 comment
Owner

New Turnstone deployments currently require manual YAML editing to define log sources, a pattern file, and the DB path. This creates friction for non-expert operators (support engineers, sysadmins unfamiliar with the stack) and makes enterprise pilots harder to set up quickly.

Onboarding wizard flow (3-step, shown only on first launch when no sources are configured):

  1. Detect environment -- auto-discover available log sources:

    • Scan for journald (/var/log/journal, journalctl availability)
    • Enumerate running Docker/Podman containers
    • Detect common app log directories (/var/log/nginx, /var/log/apache2, etc.)
    • Offer SSH-collected remote nodes (hostname + SSH test)
  2. Select and name sources -- checklist of discovered sources with friendly names; allow manual add

  3. Confirm and write -- preview the generated sources.yaml snippet, write it, trigger initial glean

Additional touches:

  • "Add source" button in SourcesView opens a condensed version of steps 1-2 for adding new sources post-setup
  • Skip wizard link (for users who prefer YAML directly)
  • Wizard state stored in the DB so it doesn't re-run after completion

Acceptance criteria:

  • Fresh deployment with no sources.yaml shows wizard on first navigation to Sources view
  • Wizard produces a valid sources.yaml that gleans successfully
  • Existing deployments are unaffected
New Turnstone deployments currently require manual YAML editing to define log sources, a pattern file, and the DB path. This creates friction for non-expert operators (support engineers, sysadmins unfamiliar with the stack) and makes enterprise pilots harder to set up quickly. **Onboarding wizard flow (3-step, shown only on first launch when no sources are configured):** 1. **Detect environment** -- auto-discover available log sources: - Scan for journald (`/var/log/journal`, `journalctl` availability) - Enumerate running Docker/Podman containers - Detect common app log directories (`/var/log/nginx`, `/var/log/apache2`, etc.) - Offer SSH-collected remote nodes (hostname + SSH test) 2. **Select and name sources** -- checklist of discovered sources with friendly names; allow manual add 3. **Confirm and write** -- preview the generated `sources.yaml` snippet, write it, trigger initial glean **Additional touches:** - "Add source" button in SourcesView opens a condensed version of steps 1-2 for adding new sources post-setup - Skip wizard link (for users who prefer YAML directly) - Wizard state stored in the DB so it doesn't re-run after completion **Acceptance criteria:** - Fresh deployment with no `sources.yaml` shows wizard on first navigation to Sources view - Wizard produces a valid `sources.yaml` that gleans successfully - Existing deployments are unaffected
pyr0ball added this to the beta milestone 2026-05-26 23:05:28 -07:00
pyr0ball added the
ux
enhancement
labels 2026-05-26 23:05:28 -07:00
Author
Owner

Implemented. Backend: app/services/discover.py (journald/Docker/file detection), app/services/nl_source.py (keyword+LLM interpretation), GET /api/setup/status + /discover, POST /api/setup/write + /interpret. Frontend: SetupWizard.vue (3-step Detect→Select→Confirm), wired into SourcesView (shows on first run when no sources.yaml; Add Source button reuses it post-setup). NL field with manual form fallback. 372 tests passing, build clean.

Implemented. Backend: app/services/discover.py (journald/Docker/file detection), app/services/nl_source.py (keyword+LLM interpretation), GET /api/setup/status + /discover, POST /api/setup/write + /interpret. Frontend: SetupWizard.vue (3-step Detect→Select→Confirm), wired into SourcesView (shows on first run when no sources.yaml; Add Source button reuses it post-setup). NL field with manual form fallback. 372 tests passing, build clean.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Circuit-Forge/turnstone#52
No description provided.