Skip to content
/ sprout Public template

Minimal starter for Go CLI apps with an optional daemon, changelog‑driven GitHub Actions CI/CD, and self‑updating installs

License

Notifications You must be signed in to change notification settings

Data-Corruption/sprout

Repository files navigation

🌱 Sprout

Build Status License Go Report Card

The minimal, self-updating Go CLI starter kit.

Sprout provides a unified architecture for building production-ready command-line tools and system services. It eliminates the boilerplate of setting up robust CLI applications, offering a solid foundation that scales from simple scripts to complex daemons.

Workflow

Edit Project Create Release Publish Install Update
Edit Push Publish Install Update
Develop your application Create release via changelog entry Review & publish generated release Install with a single line command Simple click-to-update notification

Features

  • Modern CLI Interface: Built on urfave/cli/v3 for a standard, portable user experience.
  • Self-Updating: Integrated daily version checks and single-command updates.
  • Daemon Mode: Optional systemd-managed background service capability.
  • Atomic State: Shared LMDB database for reliable configuration/state across Daemon and CLI processes.
  • CI/CD Ready: Automated, changelog-driven release pipeline via GitHub Actions.
  • Cross-Platform: Easy installation and support for Linux and Windows (WSL).

Architecture

Sprout is designed around the principle of unified dependency injection, ensuring that your application state is consistent and easily testable. For a deep dive into the system design, see ARCHITECTURE.md.

Get Started

License

Apache 2.0 - See LICENSE.md for details.


🩵 xoxo :3 <- that last bit is a cat, his name is sebastian and he is ultra fancy. Like, i'm not kidding, more than you initially imagined while reading that. Pinky up, drinks tea... you have no idea. Crazy.