Files
flow/docs/flows.md
2026-03-15 21:46:50 +02:00

2.5 KiB

Feature Inventory

Core Features

  • enter
    • SSH into a named environment target with optional tmux auto-attach
  • dev
    • create, exec into, attach to, list, stop, remove, and respawn development containers
  • dotfiles
    • clone the dotfiles repo, link/unlink/relink configs, undo link transactions, inspect status, sync modules, clean broken links, edit packages, and interact with repo state
  • bootstrap
    • run machine bootstrap profiles with packages, env validation, hostname/locale/shell setup, ssh-keygen, runcmd, config linking, and post-link hooks
  • package
    • install/list/remove binary packages defined in the manifest
  • sync
    • inspect git project health, fetch remotes, and summarize project state
  • completion
    • dynamic zsh completion generation and installation

Supported Flows

Access a host

  1. Resolve [user@]namespace@platform
  2. Expand platform host template or configured target override
  3. Optionally warn about missing remote terminfo
  4. Open SSH, optionally into tmux

Start a dev container

  1. Resolve runtime (docker or podman)
  2. Normalize image shorthand
  3. Apply labels and common host mounts
  4. Start the container
  5. flow dev connect attaches through tmux or falls back to direct exec

Manage dotfiles

  1. Clone dotfiles repo
  2. Optionally sync external module repos
  3. Resolve shared + profile packages
  4. Validate target conflicts
  5. Snapshot replaced targets
  6. Apply links transactionally
  7. Undo from persisted transaction state if needed

Bootstrap a machine

  1. Load and validate a profile
  2. Detect or select the package manager
  3. Check required environment variables
  4. Apply hostname/locale/shell prerequisites
  5. Install profile packages
  6. Run package hooks
  7. Generate SSH keys
  8. Run runcmd
  9. Link dotfiles for the profile
  10. Run post-link hooks

Command Surface Review

Keep

  • enter
  • dev
  • dotfiles
  • bootstrap
  • package
  • sync
  • completion

Keep But Treat As Convenience Aliases

  • dotfiles sync
    • effectively repo pull + modules sync
  • dotfiles relink
    • effectively unlink + link
  • sync summary
    • effectively sync check --no-fetch

Commands That Need Follow-Up Product Decisions

  • package remove
    • today it forgets install state but does not uninstall files; either rename it to forget or implement real uninstall semantics
  • dotfiles edit
    • current auto-commit/push behavior is powerful but risky; it may deserve an explicit confirm-or-dry-run mode before wider use