$_tuish

Introduction

Monetize your CLI tools in minutes, not months

Monetize Your CLI in Minutes

Stop building payment infrastructure. Start shipping paid features.

Tuish handles licensing and payments for terminal apps so you can focus on your product. Connect your Stripe account, drop in our SDK, and start accepting payments today.

const result = await tuish.checkLicense();

if (result.valid) {
  runPremiumFeatures();
} else {
  await tuish.purchaseInBrowser(); // Opens Stripe Checkout
}

The Problem

Building a paid CLI tool means solving problems that aren't your core product:

  • How do users purchase without a web UI?
  • How do you verify licenses offline?
  • How do you prevent license sharing?
  • How do you handle Stripe webhooks, license generation, and key management?

You could spend weeks building this infrastructure, or you could use Tuish.

How It Works

1. User runs your CLI
2. SDK checks for valid license (offline, cryptographic)
3. No license? → Open browser checkout or purchase in-terminal
4. Stripe processes payment → Tuish generates license
5. License stored locally → Works offline forever

You keep control. Payments go directly to your Stripe account. Tuish takes a small platform fee, handles the infrastructure, and gets out of your way.

Why Tuish?

What You GetWhy It Matters
5-minute integrationnpm install, configure, ship
Offline-first licensesEd25519 signatures verify without network calls
Your Stripe accountDirect charges, your dashboard, your customer relationships
Multi-language SDKsTypeScript, Go, Rust, Python — same API everywhere
No vendor lock-inLicenses are signed JWTs you can verify yourself

Quick Start

npm install @tuish/sdk
import { Tuish } from '@tuish/sdk';

const tuish = new Tuish({
  productId: 'prod_xxx',
  publicKey: 'MCowBQYDK...',
});

const { valid } = await tuish.checkLicense();

if (!valid) {
  await tuish.purchaseInBrowser();
}
go get github.com/tuish/sdk-go
import tuish "github.com/tuish/sdk-go"

sdk, _ := tuish.New(tuish.Config{
    ProductID: "prod_xxx",
    PublicKey: "MCowBQYDK...",
})

result, _ := sdk.CheckLicense(ctx)

if !result.Valid {
    sdk.PurchaseInBrowser(ctx)
}
cargo add tuish
use tuish::Tuish;

let tuish = Tuish::builder()
    .product_id("prod_xxx")
    .public_key("MCowBQYDK...")
    .build()?;

let result = tuish.check_license();

if !result.valid {
    tuish.purchase_in_browser().await?;
}
pip install tuish
from tuish import Tuish

client = Tuish(
    product_id="prod_xxx",
    public_key="MCowBQYDK...",
)

result = client.check_license()

if not result.valid:
    client.purchase_in_browser()

Get Started

  1. Getting Started — Install the SDK and verify your first license
  2. Complete Integration — Connect Stripe, create products, accept payments
  3. Choose Your Flow — Browser checkout vs. terminal purchase