SkillAgentSearch skills...

Gobot

Popular binaries via npm. CLI and API.

Install / Use

/learn @benallfree/Gobot
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Gobot

The binary package manager for Node

Manage and run binaries via npm. CLI and API interfaces.

Table of Contents

Introduction

Gobot installs binary apps anywhere npm is available. It transparently downloads, installs, and runs binary apps (including semver ranges) for the current operating system and architecture.

Works on Windows, Linux, OS X.

Features

  • Run any version of official apps and many unofficial apps from github.
  • Binaries are intelligently downloaded and cached
  • New binary versions are automatically detected and downloaded
  • Efficient - downloads only what is needed

Inspired by esbuild and other packages that install binary dependencies

Quickstart

Run an official app from anywhere

npx gobot <app>

List of official apps

Try running an unofficial app using github user/repo

Gobot will examine releases from Github and attempt to decipher versions, platforms, and architectures.

gobot <user>/<repo> --help

Install gobot globally

npm i -g gobot
gobot pocketbase --help
gobot caddy --help
gobot act --help

Use a Gobot app programmatically

npm i gobot
import { gobot } from 'gobot'
const bot = await gobot(`pocketbase`)
const exitCode = await bot.run([`--help`])

Pass environment variables

In API mode, Gobot does not forward environment variables by default.

import { gobot } from 'gobot'
const bot = await gobot(`pocketbase`, {
  env: process.env,
})
const exitCode = await bot.run([`--help`])

Use a specific version of a Gobot app

const bot = await gobot(`pocketbase`, {
  version: `0.19.3`,
})
const exitCode = await bot.run([`--help`])

Access the child process

import { gobot } from 'gobot'
const bot = await gobot(`pocketbase`, {
  env: process.env,
})
const exitCode = await bot.run(
  [`--help`],
  { cwd: `./foo` }, // SpawnOptions
  (proc) => {
    // ChildProcess
    proc.stdout.on('exit', (code) => {
      console.log(`process has exited`)
    })
  },
)

Add an official app as a project dependency

npm i gobot-<app>[@version]

Gobot will automatically select the specific version of <app> you installed and it will stay locked according to your package.json constraints.

npm i gobot-pocketbase@0.19.3
import { gobot } from 'gobot'
const bot = await gobot(`pocketbase`)
const exitCode = await bot.run([`--help`])

CLI

Note: All Gobot options begin with --g- so as not to conflict with app option switches. Every unrecognized option is passed through to the app binary.

Global options

These options are available on every command:

| Name | Default | Discussion | | ---------------- | --------------- | ------------------------- | | --g-version | | output the version number | | --g-v | true | Show informational output | | --g-vv | false | Show even more output | | --g-vvv | false | Show even more output | | --g-cache-path | host specific | The cache path to use |

gobot <appName> [options]

Run a binary app. The app will be downloaded if it has not been downloaded yet. After that, you must run 'gobot update <appName>' to make Gobot look for new versions.

Options

| Name | Default | Discussion | | ----------------- | --------------- | --------------------------------------------------------------------------- | | --g-use-version | * | Run a specific binary version (format: x.y.z semver or x.y.* semver range) | | --g-os | host specific | Specify OS/Platform | | --g-arch | host specific | Specify OS/Platform |

gobot inspect [appName]

Display Gobot registry information. If [appName] is specified, Gobot will display release information. Otherwise, Gobot will display an overview of current registry information

gobot download <appName> [options]

Download versions of <appName>. Gobot will download and cache the specific platform, architecture, and versions you request, defaulting to downloading the latest version for the host platform and architecture.

Options

| Name | Default | Discussion | | ----------------- | --------------- | -------------------------------------------------------------------------------- | | --g-use-version | latest | Download a specific binary version (format: x.y.z semver or x.y.* semver range) | | --g-os | host specific | Specify OS/Platform | | --g-arch | host specific | Specify OS/Platform | | --g-force | false | Force re-downloading and replacing even if version already exists |

gobot export <appName><format>

Export app version information

gobot update <appName>

Pull the latest release history for <appName>, optionally.

gobot reset [appName]

Reset caches. If [appName] is specified, only that app's cache is reset. Otherwise, all caches are reset. Caches include release history and binary downloads. Use 'gobot inspect' to learn more about host-specific cache locations and contents.

API

Full API Docs

Official Gobot Apps

Gobot supports 53 apps using bin names. They also have npm helper packages to assist with version locking.

|            | <app> | What is it? | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | <img src="https://raw.githubusercontent.com/benallfree/gobot/v1.0.0-alpha.41/src/apps/act/logo-50x.webp"> | act | Run your GitHub Actions locally 🚀 | npm | | <img src="https://raw.githubusercontent.com/benallfree/gobot/v1.0.0-alpha.41/src/apps/AdGuardHome/logo-50x.webp"> | AdGuardHome | Network-wide ads & trackers blocking DNS server | npm | | <img src="https://raw.githubusercontent.com/benallfree/gobot/v1.0.0-alpha.41/src/apps/age/logo-50x.webp"> | age | A simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.

View on GitHub
GitHub Stars25
CategoryDevelopment
Updated10mo ago
Forks2

Languages

TypeScript

Security Score

67/100

Audited on Jun 1, 2025

No findings