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 foreverYou 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 Get | Why It Matters |
|---|---|
| 5-minute integration | npm install, configure, ship |
| Offline-first licenses | Ed25519 signatures verify without network calls |
| Your Stripe account | Direct charges, your dashboard, your customer relationships |
| Multi-language SDKs | TypeScript, Go, Rust, Python — same API everywhere |
| No vendor lock-in | Licenses are signed JWTs you can verify yourself |
Quick Start
npm install @tuish/sdkimport { 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-goimport 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 tuishuse 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 tuishfrom 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
- Getting Started — Install the SDK and verify your first license
- Complete Integration — Connect Stripe, create products, accept payments
- Choose Your Flow — Browser checkout vs. terminal purchase