An unofficial .NET companion for SidePulse, with a Spectre.Console terminal interface.
Status: 0.1.0-beta.2 candidate. Feature parity and hardware validation are still in progress.
The command is spn. See single-file beta notes
and per-user installation/PATH.
Start with Getting started for build, USB, phone delivery and Copilot CLI instructions.
SidePulse.NET brings the SidePulse workflow to Windows, macOS and Linux: pair a phone or connect a USB device, enable an agent integration, and see when an agent is working, waiting for input or finished.
- Persistent interactive session, repeatable Send state, action palette, script-command copy/export and plain/quiet/JSON output.
- Copilot CLI, Codex, Claude Code, Kiro CLI V3 hooks and an OpenCode plugin with shared status aggregation.
- Writable USB/SD LED output, iPhone linking and native protected credentials.
- Dot/Pro animation simulation, custom editor, upstream patterns and state profiles.
- Host lifecycle, bounded logs, diagnostics and phone aliases.
- Six self-contained platform/architecture packages and verified-update commands.
The baseline is C# / .NET 10 LTS, Spectre.Console and Spectre.Console.Cli. Windows, macOS and Linux are supported by the preview; see the platform matrix for native credential requirements and architecture-specific validation. No release has been published yet.
Hardware/firmware, real provider sessions and the public release/update flow still need acceptance evidence. A live dashboard, device aliases, explicit Python migration, remote relay and read-only transports remain planned. See the architecture and QA review and open issues.
Read the published project wiki. The editable source of truth lives in docs/wiki.
- Product concept
- Architecture
- Terminal experience
- Upstream compatibility inventory
- Copilot integration
- Roadmap and acceptance criteria
- Repository and automation setup
- Security policy and observed/desired repository settings
This project ports selected functionality from inteliwear/sidepulse, created by Peter Kuhar / InteliWEAR, and the SidePulse hardware. It is independently maintained and is not an official InteliWEAR product.
The reference baseline is upstream commit
ffb1d3c2f3eed3b7e80e32d7876a7e1d67bd5dfb,
checked on 2026-10-23. Upstream is MIT licensed. See NOTICE.md and
the retained upstream license.
Status LED profiles and protocol behavior are adapted from this baseline; see the provenance notice.
dotnet build -c Release
dotnet test -c Release
dotnet run --project src/SidePulse.Cli -- dashboardThe solution contains a portable core, a Spectre.Console CLI and behavioral tests.
Command groups include devices, state, write, dashboard, host, agents,
link, animations, profiles, about, docs and update. Use --help for
subcommands and --dry-run where supported before changing files or sending a program.
The command name spn coexists with the existing Python port.
QR pairing and protected token storage use DPAPI on Windows, Keychain on macOS and Secret Service on Linux. Login-startup registration, firmware-verified simulator parity, remaining upstream integrations and signed installers remain planned. The wiki's concept pages describe the intended complete product; the getting-started page records what is implemented now.
CI builds and tests Windows, Linux and macOS; CI publishes self-contained x64 and ARM64 preview archives for all three platforms. Wiki publishing uses the built-in Actions token. A weekly upstream check opens or updates a review issue when the original repository changes. See automation setup.
Documentation checks:
python scripts/check_docs.py
python -m unittest discover -s scripts/tests -vContributions: CONTRIBUTING.md. License: MIT.
spn agents install codex --dry-run
spn agents install codex
spn agents install claude
spn agents install kiro
spn agents install copilot
spn agents install opencode
spn host start --phone default
spn host status
spn host stopSee agent integrations for provider capabilities, configuration backups and trust requirements, and host management for logs and foreground use. Additional providers remain planned.
spn animations preview cyan-roll --both
spn animations edit --file custom.LED --model dot
spn animations validate custom.LED --quiet
spn animations import personal --file custom.LED --model dot
spn animations apply personal --model dot --phone default --brightness 40
spn profiles set personal --state Working --pattern cyan-roll --brightness 40
spn host start --phone default --profile personal --model dot
spn about credits
spn about licenses --fullRun with no arguments in a terminal for arrow-key menus and guided setup. Review
shows the single-line command for copying into scripts. Redirected input/output,
--no-interactive, --quiet and --json never open menus. Errors use stderr and
nonzero exit codes. Preview is entirely Spectre.Console and supports pause,
frame stepping and restart; terminal colors/timing approximate the firmware.
See animations and
scripting and menus. docs --offline reads
bundled documentation; about provides manufacturer/upstream/project links and
licensed dependency credits. Browser opening requires --open.
spn update check
spn update install --prerelease --dry-run
spn host stop
spn update install --prerelease
spn update statusThe updater selects a published GitHub release for the current OS/architecture,
verifies SHA-256, stages the complete distribution and replaces it after the CLI
exits. A backup and startup probe support rollback. Use self-contained packages
with an installation manifest; older previews need one manual upgrade. Stop the
host first and confirm installed before restarting it. See
updating and recovery. Adding the release workflow does not
publish a release. A matching version tag or manual Prepare release run on main
builds and verifies six archives, then creates an unpublished release draft.
Publishing the reviewed draft is a separate explicit release action.