Introduction

get.tool is a simple, reliable way to publish and distribute tools and scripts. With permanent URLs and built-in versioning, you can share your work without worrying about broken links or version conflicts.

Quickstart

Get started with get.tool in three simple steps:

1. Install the CLI

curl -sS https://get.tool.ab0t.com/p/registry-tools/meta/install.sh | bash

Or install via npm:

npm install -g @abot/get-tool

2. Authenticate

get-tool auth login

This will open a browser window to authenticate your CLI. You can also use an API token:

export GETTOOL_TOKEN="gt_your_token_here"

3. Publish your first tool

# Create a simple tool
echo 'console.log("Hello from my tool!")' > my-tool.js

# Publish it
get-tool publish my-tool ./my-tool.js

Your tool is now available at:

https://get.tool.ab0t.com/p/my-tool/@latest/my-tool.js

Installation

macOS / Linux

curl -sS https://get.tool.ab0t.com/p/registry-tools/meta/install.sh | bash

npm

npm install -g @abot/get-tool

Manual Download

Download the binary for your platform from the releases page.

Verify installation: Run get-tool --version to confirm the CLI is installed correctly.

Core Concepts

Tools

A tool is a collection of files published under a unique name. Each tool has its own URL namespace and version history.

Versions

Every publish creates a new version. Versions are immutable once published. Use semantic versioning (e.g., 1.0.0) or custom tags.

Tags

Tags are mutable pointers to versions. The @latest tag always points to the most recent version. You can create custom tags like @stable or @beta.

URLs

Every file has a permanent URL following this pattern:

/p/{tool}/@{version}/{file}
URL Pattern Description Mutable?
/p/my-tool/@1.0.0/file.js Specific version No
/p/my-tool/@latest/file.js Latest version Yes (pointer)
/p/my-tool/@stable/file.js Custom tag Yes (pointer)

CLI Reference

Commands

Command Description
get-tool auth login Authenticate with get.tool
get-tool auth logout Clear authentication
get-tool publish <name> <files> Publish a new version
get-tool tag <name> <tag> <version> Create or update a tag
get-tool list List your tools
get-tool info <name> Show tool details
get-tool delete <name> <version> Delete a version (if allowed)

Publishing Options

get-tool publish my-tool ./dist/ \
  --version 1.0.0 \
  --description "My awesome tool" \
  --readme ./README.md \
  --tag stable

Version immutability: Once a version is published, it cannot be modified or overwritten. Choose your version numbers carefully.

URL Structure

All tools follow a predictable URL structure:

# Files
https://get.tool.ab0t.com/p/{tool}/@{version}/{file}

# Metadata
https://get.tool.ab0t.com/p/{tool}/meta.json
https://get.tool.ab0t.com/p/{tool}/meta/readme.md
https://get.tool.ab0t.com/p/{tool}/meta/llm.txt

Integrity (SRI)

Every file includes a Subresource Integrity hash for verification:

<script
  src="https://get.tool.ab0t.com/p/my-tool/@1.0.0/script.js"
  integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K..."
  crossorigin="anonymous"
></script>

SRI hashes are available in the meta.json file for each version.

API Authentication

Authenticate API requests using a Bearer token:

curl -H "Authorization: Bearer gt_your_token_here" \
  https://get.tool.ab0t.com/api/v1/tools

Create API tokens in your dashboard.

CI/CD Integration

Automate publishing with your CI/CD pipeline:

GitHub Actions

name: Publish to get.tool

on:
  release:
    types: [published]

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install get-tool CLI
        run: curl -sS https://get.tool.ab0t.com/p/registry-tools/meta/install.sh | bash

      - name: Publish
        env:
          GETTOOL_TOKEN: ${{ secrets.GETTOOL_TOKEN }}
        run: |
          get-tool publish my-tool ./dist/ \
            --version ${{ github.event.release.tag_name }}