DEV Community

Ștefănescu Liviu
Ștefănescu Liviu

Posted on

LoopTroop 0.5.x is complete: the CLI and installer release

LoopTroop 0.5.x is complete: the CLI and installer release

LoopTroop 0.5.x is now complete at v0.5.9.

This is the release series where LoopTroop became installable software. It gained a CLI, a background service, one-line installers, package channels, standalone executable builds, and a release process that checks the files it publishes.

The series started with v0.5.0 and ended with v0.5.9.

LoopTroop is still early alpha. This release is about making it easier to install, run, and verify, not about declaring it production-ready.

The CLI

The main change in v0.5.0 was the looptroop command.

It includes:

looptroop setup
looptroop start
looptroop stop
looptroop restart
looptroop status
looptroop open
looptroop logs
looptroop doctor
looptroop clean
Enter fullscreen mode Exit fullscreen mode

start runs LoopTroop as a background service, so it keeps running after the shell closes. open starts the service when needed and opens the local dashboard with a signed-in link.

setup guides the first run. status reports the daemon state. doctor checks the runtime, configuration directory, database schemas, port, OpenCode, GitHub authentication, and installation channel. It also has a JSON mode for scripts.

clean finds abandoned worktrees, stale locks, and OpenCode processes that LoopTroop started. Listing is the default. Applying cleanup requires an explicit flag.

The goal was to make the normal path look like ordinary software:

install
start
open
work
Enter fullscreen mode Exit fullscreen mode

Installers became part of the product

The 0.5.x work did not stop at adding a command. It also added several ways to install it.

The one-line installer works on macOS, Linux, WSL, and Windows PowerShell.

On macOS, Linux, or WSL:

curl -fsSL https://www.looptroop.ovh/install | sh
looptroop open
Enter fullscreen mode Exit fullscreen mode

On Windows PowerShell:

irm https://www.looptroop.ovh/install.ps1 | iex
looptroop open
Enter fullscreen mode Exit fullscreen mode

The installer resolves a release that contains the required files, checks the download against the published checksum, and refuses to install a file that does not match. It does not ask for sudo.

The installer uses npm, so the npm installation path remains available:

npm install -g looptroop
looptroop open
Enter fullscreen mode Exit fullscreen mode

The 0.5.x series also added release support for Homebrew, Scoop, Chocolatey, WinGet, Docker, and standalone executable builds. The current availability of each channel is documented on the Installation page.

Standalone executables

v0.5.2 added standalone executable builds for macOS on Apple silicon, Linux on x64 and arm64, and Windows on x64.

The executable carries its own Node runtime. Once installed, it does not need Node in order to run LoopTroop.

The one-line installer can install the executable instead of the npm package. The upgrade path is transactional:

  1. Verify the downloaded archive.
  2. Stop the running daemon.
  3. Replace the executable by rename.
  4. Check that the new executable reports the requested version.
  5. Restore the previous executable if the new one fails.
  6. Start the daemon again if it was running before the upgrade.

The installer itself still needs Node because the installer is a Node program. The standalone file removes Node as a runtime requirement for LoopTroop after installation.

A smaller production package

The release also changed what the production package contains.

The server became an embeddable runtime that does not start work merely because another module imports it. The production build bundles the server and ships compiled output. The production server serves the interface itself, so there is no separate web server to configure.

The runtime also moved from the native better-sqlite3 package to Node's built-in node:sqlite. That removed the last compiled dependency from the runtime and removed one of the common causes of installation failures.

The result was a much smaller global installation, from roughly three hundred packages to sixteen.

The release process was rebuilt

Publishing a CLI is different from running a development server locally. A successful release has to prove that the package can be installed, started, upgraded, and removed on the platforms people use.

The 0.5.x release process now:

  • Builds the package and release artifacts.
  • Records checksums for published files.
  • Publishes the exact built files to the supported channels.
  • Adds signed build provenance to release assets.
  • Builds and checks standalone executables.
  • Builds container images for Linux x64 and arm64.
  • Installs published releases on clean machines.
  • Starts the daemon and checks its health.
  • Tests the interface and authenticated API paths.
  • Stops and uninstalls the release again.

The workflow is resumable. It reads the state of the tag, GitHub release, package registry, and container registries before continuing. A release is only considered finished after the published files have been compared with the files produced by the build.

The final release in the series, v0.5.9, also fixed packaging and install checks for npm 12 and repaired an edge case where a slow daemon could become impossible to stop.

What the installation looks like now

For a Unix-like system:

curl -fsSL https://www.looptroop.ovh/install | sh
looptroop open
Enter fullscreen mode Exit fullscreen mode

For Windows PowerShell:

irm https://www.looptroop.ovh/install.ps1 | iex
looptroop open
Enter fullscreen mode Exit fullscreen mode

For npm:

npm install -g looptroop
looptroop open
Enter fullscreen mode Exit fullscreen mode

open starts LoopTroop in the background when it is not already running, then opens the dashboard. Use looptroop start if you want the service without opening a browser.

After that, configure a model provider through OpenCode, attach a local repository with a GitHub origin, and create a ticket.

LoopTroop does not install OpenCode. It needs OpenCode with at least one configured provider. Git and GitHub CLI are also required for the pull request step, although some installation channels provide them as dependencies.

A note about safety

LoopTroop runs OpenCode with broad local permissions because it is designed for long-running, unattended coding work. Git worktrees isolate changes to the attached repository, but they do not sandbox the agent process from the rest of the machine.

Use a disposable VM, cloud development machine, or another sandboxed environment when trying it.

The result

The 0.5.x series changed LoopTroop from something you mainly cloned and ran as a development stack into something you can install, start, inspect, upgrade, and remove.

v0.5.x is complete at v0.5.9.

Code: github.com/looptroop-ai/LoopTroop

Installation guide: looptroop.ovh/docs/installation

Top comments (0)