Roadmap Status
This page is a human-readable status summary. The detailed roadmap remains in docs/plan.md.
Works Now
- Buildable .NET solution.
- Core job/result models.
- Shared planner/executor path.
- Deterministic target resolution.
- Local run folder layout.
- Direct PsExec execution plumbing and guardrails.
- Raw WinRM transport for command/script execution, remote upload, artifacts, and supported credential providers.
- PSRP transport for command/script execution, streams, artifacts, and supported credential providers.
- Canonical
Admin\events.ndjsonand reducedAdmin\results.json. - Per-target
stdout.txt/stderr.txt. - Spectre.Console.Cli command tree registration.
- Live dashboard rendering model.
- Structured output modes on current paths.
- Inventory subset for current run paths.
dispatch apply <job.yml> --plan,dispatch apply <job.yml> --check, anddispatch apply <job.yml>for selected multi-task script-firstps, scalarcmd, and scalarexejobs, plus plan/check-onlycopytask rendering.dispatch push <source> --dest <remote-path>for single-file and recursive directory transfer over raw WinRM or PSRP, including--transport autoselection through inventory/config/default transport policy, optional replacement through--overwrite, target-local pre-replacement backup through--backup, explicit push-result SHA-256 enforcement/reporting through--checksum, single-file.ps1execute-after-copy through--execute, post-execute script removal through--cleanup, plus push--plan/--checkpreview.dispatch hosts listanddispatch hosts validatelocal inventory inspection.dispatch hosts testtransport endpoint probing for selected inventory targets.dispatch hosts graphlocal inventory group/child relationship inspection.dispatch hosts varslocal effective host metadata inspection.dispatch doctor --transport auto|psexec|psrp|winrm --output rich|table|json|ndjson|yamllocal prerequisite scoping, stable structured output, runtime/context/policy diagnostics, global Dispatch config parseability, host inventory schema availability, credential provider availability, run-history layout checks, and PsExec local policy/EULA diagnostics.- PowerShell module wrapper commands
Test-Dispatch,Get-DispatchVersion,Invoke-DispatchPowerShell,Invoke-DispatchCommand,Invoke-DispatchExecutable, andInvoke-DispatchJobover the canonical CLI, available through normal PowerShell module discovery/autoloading and including-CredentialNamereference selection plus protectedPSCredentialhandoff forprovider: pscredential. packaging/build-module.ps1assembles a local module folder with bundled self-containedbin\win-x64\dispatch.exe, validates module import/version resolution through that bundled executable, and can create a validatedartifacts\packages\Dispatch-<version>-win-x64.ziprelease convenience package with-CreateZip.packaging/install.ps1installs an already assembled module package intoCurrentUserorAllUsersPowerShell module scope, adds the installedbin\win-x64folder to PATH for directdispatchinvocation, and validates the installed manifest, bundled executable, module import, exported commands, version resolution, anddispatch --helpthrough PATH.packaging/install-from-source.ps1is the primary operator installer. It prints install phases to the terminal, checks Git and the .NET 8 SDK before build work, builds from an existing checkout or clones the GitHub repository for theirm | iexflow, replaces the same installed module version when rerun, installs both the directdispatchcommand and PowerShell module wrappers, schedules external cleanup for temporary source checkouts, and reports cleanup scheduling failures without failing an already validated install.dispatch init config|hosts|job|allstarter YAML scaffolding.- Logs commands over local run history.
- Credential references with prompt, DPAPI file, Windows Credential Manager, and Azure Key Vault behavior for PSRP and raw WinRM.
dispatch runexecution results, completeddispatch applyexecution for supportedps,cmd, andexetasks, completeddispatch pushtransfer/execute results, anddispatch hosts testendpoint-probe results return stable process exit codes for current result categories:0success,2host/execution failure,3probe/unreachable/timeout,4authentication/authorization,5transport unavailable,6cancelled, and10internal error. Usage/config/inventory/YAML/planning and local lifecycle/inspection command failures remain1.dispatch run --systemis policy-gated for PsExec LocalSystem execution and returns policy exit code7before planning or endpoint work when policy approval is missing or the selected transport does not support LocalSystem.- Omitted
--transportand--transport autocannot implicitly select PsExec unless fallback policy is approved withdispatch.allow_psexec_fallback: truein config or supported inventoryallow_psexec_fallback: true; explicit--transport psexecremains the CLI opt-in. Missing approval returns policy exit code7before planning or endpoint work. - Dispatch-owned rich/table output, structured JSON/NDJSON/YAML output, durable
Admin\events.ndjson, durableAdmin\results.json, optional per-targetresult.json, optionalAdmin\results.csv, and optionalAdmin\dispatch.logredact secret-looking values before writing.
Partial
pushsupports file and recursive directory transfer over raw WinRM or PSRP, including--transport autoselection through inventory/config/default transport policy,--backuppre-replacement backup,--checksumpush-result SHA-256 enforcement/reporting, single-file.ps1execute-after-copy through--execute, and post-execute script removal through--cleanup. Directory cleanup and PsExec push remain deferred unless their boundaries are explicitly reopened.hostscommand group has currentlist,validate,graph,vars, and transport-probetestover the supported v1 inventory subset.- Inventory support covers the v1 subset needed by current run paths.
- YAML task execution beyond
ps/cmd/exe, including realcopytransfer execution, remains planned. - Credential handoff is not complete for every entry point; PsExec explicit password handoff remains intentionally unsupported under the current no-plaintext PsExec boundary.
- Script secret handoff is separate from endpoint
--credential. The approved initial boundary is currentdispatch run ps ... --secret name=referenceplan/dry-run validation and redacted rendering of script-parameter bindings; real execution is blocked until the later safe provider-resolution and transport-parameter-binding slice. - Raw
stdout.txt, rawstderr.txt, and copied artifact content are script-authored output. Dispatch records and points to them, but scripts must avoid printing or writing secrets there unless a later roadmap item explicitly adds content rewriting for script-owned output. - Roadmap
8source install and local packaging is complete for v1: local package install, source install, direct PATH invocation, optional ZIP creation, package validation, and source cleanup status reporting are implemented.
Planned Next
- Implement script secret handoff in staged slices: plan/dry-run validation first, then safe transport-specific parameter binding.
Deferred Or Out Of Scope For V1
- Full Ansible compatibility.
- Permanent endpoint agent.
- MSI installer.
- Azure Artifacts publishing.
- Enterprise package feeds.
- Managed execution as default.
- Dispatch-owned Blob/media payload staging.
- Command-line script secret values in any form.