sella-cli 0.6.2 → 0.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,51 +1,211 @@
1
- # sella-cli
1
+ <p align="center">
2
+ <a href="https://sellag.vercel.app"><img src="https://sellag.vercel.app/sellalogo.png" alt="Sella" width="320" /></a>
3
+ </p>
2
4
 
3
- Terminal onboarding for [Sella](https://sellag.vercel.app) — the marketplace where agents buy datasets,
4
- models, and machine-payable APIs.
5
+ <h1 align="center">sella-cli</h1>
6
+
7
+ <p align="center">
8
+ <b>Your AI agent can buy the data and APIs it needs. On its own, paid per call, in USDC.<br/>
9
+ This CLI connects it in one command.</b>
10
+ </p>
11
+
12
+ <p align="center">
13
+ <a href="https://www.npmjs.com/package/sella-cli"><img src="https://img.shields.io/npm/v/sella-cli?color=E84B2A&label=npm" alt="npm version" /></a>
14
+ <a href="https://www.npmjs.com/package/sella-cli"><img src="https://img.shields.io/npm/dm/sella-cli?color=555" alt="npm downloads" /></a>
15
+ <a href="https://www.npmjs.com/package/sella-cli"><img src="https://img.shields.io/node/v/sella-cli?color=339933&label=node" alt="node version" /></a>
16
+ <a href="https://github.com/010100100100011101010100/ogsella/issues"><img src="https://img.shields.io/npm/l/sella-cli?color=blue" alt="license" /></a>
17
+ </p>
18
+
19
+ <p align="center">
20
+ <a href="https://sellag.vercel.app">Website</a> ·
21
+ <a href="https://sella.mintlify.app">Docs</a> ·
22
+ <a href="https://sellag.vercel.app/marketplace">Marketplace</a> ·
23
+ <a href="https://github.com/010100100100011101010100/ogsella/issues">Report a bug</a>
24
+ </p>
25
+
26
+ ---
27
+
28
+ ## Connect your agent in about 30 seconds
5
29
 
6
30
  ```bash
7
31
  npx sella-cli
8
32
  ```
9
33
 
10
- That single command is the whole onboarding: with no stored credentials and a human at the
11
- terminal, the guided wizard starts by itself (`init` is the explicit spelling). It previews the
12
- marketplace, detects your agent clients (Claude Code, Claude Desktop, Cursor, Windsurf, VS Code,
13
- Cline), installs the Sella MCP server into each, pairs the machine (arrow-key choice of setup code
14
- or email + 6-digit code), wires your key into the client configs, and finishes with a live
15
- `doctor` verification. Installed users get the `sella` binary; `npm install` also prints a
16
- one-line pointer after install (silent in CI and non-TTY runs — installs are never interrupted).
34
+ That one command is the whole setup. The wizard:
35
+
36
+ 1. **Detects your agent clients**: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code, Cline.
37
+ 2. **Installs the Sella MCP server** into each one. Writes are idempotent and your other MCP servers are preserved.
38
+ 3. **Pairs the machine**: paste a setup code from the dashboard, or use your email and a 6-digit code.
39
+ 4. **Proves it works** with a live `sella doctor` run at the end.
40
+
41
+ <p align="center">
42
+ <img src="https://sellag.vercel.app/readme/cli-init.svg" alt="npx sella-cli: the wizard detects clients, installs the Sella MCP server, pairs the machine, and verifies with 6/6 checks" width="740" />
43
+ </p>
44
+
45
+ When it finishes, your agent can search a live marketplace and pay for what it finds, per call, in USDC. You set the budget. You can revoke the key anytime.
46
+
47
+ ## Why this exists
48
+
49
+ An agent can only use what a human wired up for it in advance. The moment it needs one more API mid-task, it stops and waits for you. Then you do this, again:
50
+
51
+ <p align="center">
52
+ <img src="https://media.giphy.com/media/JIX9t2j0ZTN9S/giphy.gif" alt="A cat typing frantically on a laptop" width="360" /><br/>
53
+ <sub><i>You, wiring up the seventh API key this month.</i></sub>
54
+ </p>
55
+
56
+ | The traditional way | With Sella |
57
+ |---|---|
58
+ | Find the API. Make an account. Add a card. Copy the key. Paste it into a config. Restart the client. Repeat for every provider. | Your agent searches the marketplace, pays per call in USDC, and keeps working. No account per provider, no key to paste. |
59
+ | Integration time: an evening, per API. | `npx sella-cli`, once. |
60
+ | The agent waits for you. | You set a budget and walk away. |
61
+
62
+ ## Try it free, right now (no account)
63
+
64
+ The sandbox searches the real marketplace. No signup, rate-limited:
65
+
66
+ ```bash
67
+ npx sella-cli sandbox "web search"
68
+ ```
69
+
70
+ <p align="center">
71
+ <img src="https://sellag.vercel.app/readme/cli-sandbox.svg" alt="sella sandbox returns live marketplace results: Exa, Tavily and more, with no account" width="740" />
72
+ </p>
73
+
74
+ What's in there: a catalogue of 1,100+ machine-payable API providers, plus first-party datasets, workflows, and Sella Native products such as Cradle. Free previews let your agent check quality before it pays.
75
+
76
+ ## What you get
77
+
78
+ - **One-command onboarding**, so you never hand-edit an MCP config again.
79
+ - **Pay-per-call in USDC**: fractions of a cent for most calls, multi-chain, with budgets you set and keys you can revoke.
80
+ - **A marketplace built for agents**: every listing is discoverable and payable over MCP + x402, so your agent buys mid-task instead of stalling.
81
+ - **Publishing from a CSV**, so you can sell your own data without opening a browser.
82
+ - **Agent-grade output**: every command supports `--json`, `--yes`, and env vars, with meaningful exit codes. Your CI can run it. Your agent can run it.
17
83
 
18
84
  ## Commands
19
85
 
20
86
  | Command | What it does |
21
87
  |---|---|
22
- | `sella init` | Guided wizard: detect clients install the Sella MCP server pair verify (auto-runs on bare `sella` when unpaired) |
23
- | `sella sandbox <query>` | Try Sella with **no signup** — search the live marketplace (rate-limited) |
24
- | `sella pair` | Pair this machine only (`--setup-code <code>` / `SELLA_SETUP_CODE`, or `--email` + OTP) |
25
- | `sella clients` | List detected clients (`--install` to write configs, `--client a,b` to filter, `--dry-run`) |
26
- | `sella doctor` | Verify the install: endpoint, credentials, auth, wallets, x402 pay-quote each failure names its fix |
27
- | `sella status` | Show your API key + AgentWallet funding/balances, with each chain marked **live** vs **deposit-only** |
28
- | `sella fund` | Per-chain USDC deposit addresses + funding page (QR + fiat on-ramp), labelled live vs deposit-only |
29
- | `sella mcp` | Run as a local **stdio MCP server** that proxies Sella with your stored key for clients that can't use a remote MCP endpoint |
30
- | `sella publish init <file.csv>` | Scaffold `sella-dataset.json` + a structural pre-check of the CSV |
31
- | `sella publish push` | Publish the dataset via the same route the web dashboard uses — a CSV → live listing without a browser |
32
-
33
- `status`/`fund` read the live chain registry (`GET {backend}/api/payments/chains`) to label each
34
- wallet **live · spendable** vs **deposit-only · settle pending**, so the CLI tracks the multi-chain
35
- rollout automatically — no per-chain update needed. If the backend is unreachable they still list
36
- your wallets, just without the label.
37
-
38
- ## Contract (every command)
39
-
40
- - `--json` exactly one JSON document on stdout; errors on stderr; meaningful exit codes.
41
- - `--yes` / env vars for every prompt — agents run this CLI too; nothing may hang on a TTY (the
42
- wizard renders as plain sequential lines off-TTY and never auto-starts in `--yes`/`--json` runs).
43
- - `NO_COLOR` / `--no-color` honored; no spinner-only feedback; color never carries meaning alone.
44
- - Config writes are idempotent, preserve other servers, and leave a one-time `.sella-backup`.
45
- - `SELLA_MCP_URL` overrides the endpoint (self-hosted / staging).
88
+ | `sella init` | The guided wizard: detect clients, install the Sella MCP server, pair, verify. Also runs on a bare `sella` when no credentials exist yet. |
89
+ | `sella sandbox <query>` | Search the live marketplace with no account. Rate-limited. |
90
+ | `sella pair` | Pair this machine only. Use `--setup-code <code>`, the `SELLA_SETUP_CODE` env var, or `--email` plus a 6-digit code. |
91
+ | `sella clients` | List detected agent clients. `--install` writes configs, `--client a,b` filters, `--dry-run` previews. |
92
+ | `sella doctor` | Six live checks, from endpoint reachability to a real x402 pay quote. Every failure names its fix. |
93
+ | `sella status` | Your API key and agent wallet balances, each chain labelled live or deposit-only. |
94
+ | `sella fund` | Per-chain USDC deposit addresses, plus the funding page with QR codes and a fiat on-ramp. |
95
+ | `sella mcp` | Run a local stdio MCP server that proxies Sella with your stored key, for clients that cannot use a remote endpoint. |
96
+ | `sella publish init <file.csv>` | Scaffold `sella-dataset.json` and pre-check the CSV structure. |
97
+ | `sella publish push` | Publish the dataset through the same route the web dashboard uses. |
98
+
99
+ Run `sella --help` for every flag.
100
+
101
+ ## Examples
102
+
103
+ ### Small: search the marketplace (10 seconds, free)
104
+
105
+ ```bash
106
+ npx sella-cli sandbox "flight prices"
107
+ ```
108
+
109
+ Real listings, real prices, no account.
110
+
111
+ ### Medium: connect Claude Code and let the agent do the buying
112
+
113
+ ```bash
114
+ npx sella-cli # detect, install, pair, verify
115
+ ```
116
+
117
+ Then ask your agent:
118
+
119
+ > Search Sella for a web search API and tell me what it costs per call.
120
+
121
+ The agent answers using the Sella MCP tools (`search_datasets`, `list_market_apis`, `try_dataset`, and friends) with the key this CLI stored for it. When you fund the agent wallet, it can buy what it found.
122
+
123
+ ### Real-world: publish a CSV and get paid in USDC
124
+
125
+ ```bash
126
+ sella publish init leads.csv # scaffolds sella-dataset.json + structural pre-check
127
+ # edit title, description, price in sella-dataset.json
128
+ sella publish push # same route the web dashboard uses
129
+ ```
130
+
131
+ Your CSV becomes a listing. Once it clears review it is live for every MCP agent to find, preview, and buy. You are paid per access.
132
+
133
+ ### Ready-made agent tasks
134
+
135
+ The [RFI gallery](https://sellag.vercel.app/rfi) is a list of ready-to-send prompts for your newly connected agent:
136
+
137
+ - [Validate a startup idea for $25](https://sellag.vercel.app/rfi?uc=twenty-five-dollar-study)
138
+ - [Get a daily morning brief](https://sellag.vercel.app/rfi?uc=morning-brief)
139
+ - [Test Sella without spending anything](https://sellag.vercel.app/rfi?uc=zero-dollar-demo)
140
+
141
+ ## Something broke?
142
+
143
+ <p align="center">
144
+ <img src="https://media.giphy.com/media/13HgwGsXF0aiGY/giphy.gif" alt="Moss from The IT Crowd typing calmly while a fire burns beside him" width="360" /><br/>
145
+ <sub><i>Debugging by vibes.</i></sub>
146
+ </p>
147
+
148
+ Don't. Run the doctor:
149
+
150
+ ```bash
151
+ sella doctor
152
+ ```
153
+
154
+ <p align="center">
155
+ <img src="https://sellag.vercel.app/readme/cli-doctor.svg" alt="sella doctor: six checks pass, from MCP endpoint reachability to a live x402 pay quote" width="740" />
156
+ </p>
157
+
158
+ Each failed check prints what happened and the exact fix, in plain language. If it still looks wrong after that, [open an issue](https://github.com/010100100100011101010100/ogsella/issues) and paste the `sella doctor --json` output.
159
+
160
+ ## Built for agents and CI, not just your terminal
161
+
162
+ - `--json` prints exactly one JSON document on stdout. Errors go to stderr. Exit codes mean something.
163
+ - `--yes` and env vars cover every prompt. Nothing hangs waiting for a TTY.
164
+ - `NO_COLOR` and `--no-color` are honored. Color never carries meaning alone.
165
+ - Config writes are idempotent, preserve your other MCP servers, and leave a one-time `.sella-backup`.
166
+ - `SELLA_MCP_URL` points the CLI at staging or a self-hosted Sella.
167
+
168
+ ```bash
169
+ # Headless pairing in CI
170
+ SELLA_SETUP_CODE=SELLA-XXXX-XXXX-XXXX-XXXX npx sella-cli init --yes --json
171
+ ```
46
172
 
47
173
  ## Security
48
174
 
49
- Install links and configs written before pairing carry **no secrets** Sella's bootstrap MCP tools
50
- (`sella_setup_claim`, `sella_auth_*`) are callable without a token, so the agent pairs itself and
51
- stores its own credentials. Never paste API keys into URLs or shell history.
175
+ - Configs written before pairing contain **no secrets**. Sella's bootstrap MCP tools are callable without a token, so the agent pairs itself and stores its own credentials.
176
+ - Your API key lands in the OS keychain, or in a `0600` file with `--no-keychain`.
177
+ - You set the budget. You can revoke a key from the dashboard at any time.
178
+ - Never paste API keys into URLs or shell history.
179
+
180
+ ## FAQ
181
+
182
+ **Is this crypto hype?**
183
+ No. Payments settle in USDC, a dollar-pegged stablecoin, and most calls cost fractions of a cent. It works with the agent clients you already use.
184
+
185
+ **Do I have to rebuild my stack?**
186
+ No. It is one MCP server entry in a config you already have, and this CLI writes it for you. Try the sandbox before you even sign up.
187
+
188
+ **Is my money safe?**
189
+ You fund a dedicated agent wallet, you set the budget, and you can revoke access anytime. Keys are stored encrypted.
190
+
191
+ **I don't like terminals.**
192
+ Sella has two other ways in: your agent can onboard itself over MCP with your email and a one-time code, or you sign up on the web and paste a setup code to your agent. This CLI is the third path, for people who live in a shell.
193
+
194
+ ## Links
195
+
196
+ | | |
197
+ |---|---|
198
+ | Website | https://sellag.vercel.app |
199
+ | Docs | https://sella.mintlify.app |
200
+ | Marketplace | https://sellag.vercel.app/marketplace |
201
+ | Agent task ideas | https://sellag.vercel.app/rfi |
202
+ | npm | https://www.npmjs.com/package/sella-cli |
203
+ | Issues | https://github.com/010100100100011101010100/ogsella/issues |
204
+
205
+ ## Found a bug?
206
+
207
+ Found a bug? Have an idea? [Open an issue](https://github.com/010100100100011101010100/ogsella/issues). We read every one.
208
+
209
+ ## License
210
+
211
+ MIT
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ import { capabilityLabel } from './chains.js';
12
12
  import { defaultIo, Printer } from './output.js';
13
13
  import { Ui } from './ui.js';
14
14
  const DEFAULT_MCP_URL = 'https://sellag.vercel.app/api/mcp';
15
- const VERSION = '0.6.2';
15
+ const VERSION = '0.6.5';
16
16
  function parseFlags(argv) {
17
17
  const flags = {
18
18
  json: false, yes: false, noColor: false, dryRun: false, noKeychain: false,
@@ -82,6 +82,11 @@ Environment:
82
82
  SELLA_MCP_URL Override the MCP endpoint (default ${DEFAULT_MCP_URL})
83
83
  SELLA_SETUP_CODE Setup code for headless/CI pairing
84
84
  SELLA_NO_KEYCHAIN Set to 1 to force file storage for the API key
85
+
86
+ Links:
87
+ Website https://sellag.vercel.app
88
+ Docs https://sella.mintlify.app
89
+ Issues https://github.com/010100100100011101010100/ogsella/issues
85
90
  `;
86
91
  function selectClientIds(flags, detected) {
87
92
  if (flags.clients) {
@@ -295,6 +300,16 @@ async function cmdInit(ctx, flags, printer) {
295
300
  lines.push('AgentWallet pending (backend not configured) — re-run `sella pair` later.');
296
301
  }
297
302
  ui.note('Sella is connected', lines, flags.dryRun ? 'plain' : awStatus === 'unavailable' ? 'warn' : 'ok');
303
+ // RFI: ready-to-send prompts for real agent tasks — the "now what?" answer.
304
+ const rfi = `${origin}/rfi`;
305
+ ui.bar();
306
+ ui.step('Ideas to try with your agent (each is a ready-to-send prompt):');
307
+ ui.rows([
308
+ { tag: 'invest', text: `Validate a startup idea for $25 — ${rfi}?uc=twenty-five-dollar-study`, tone: 'brand' },
309
+ { tag: 'daily', text: `Get a daily morning brief — ${rfi}?uc=morning-brief`, tone: 'ok' },
310
+ { tag: 'free', text: `Test Sella without spending — ${rfi}?uc=zero-dollar-demo`, tone: 'dim' },
311
+ ]);
312
+ ui.detail(`Browse all ideas: ${rfi}`);
298
313
  const took = Math.max(1, Math.round((Date.now() - startedAt) / 1000));
299
314
  ui.outro(flags.dryRun ? 'Dry run complete — nothing was written.' : `Done in ${took}s — your agents can now buy on Sella.`);
300
315
  }
@@ -311,6 +326,9 @@ export async function runCli(argv, io = defaultIo(), env = defaultEnv()) {
311
326
  const command = flags.positional[0];
312
327
  if (flags.version) {
313
328
  io.stdout(VERSION);
329
+ // TTY-only: scripts capturing `sella --version` must still get a bare semver.
330
+ if (io.isTTY)
331
+ io.stdout('docs: https://sella.mintlify.app · issues: https://github.com/010100100100011101010100/ogsella/issues');
314
332
  return 0;
315
333
  }
316
334
  if (flags.help) {
package/dist/ui.js CHANGED
@@ -54,7 +54,26 @@ export class Ui {
54
54
  this.out(`${this.dim('┌')} ${this.paint('1', title)}${meta ? ` ${this.dim(meta)}` : ''}`);
55
55
  this.bar();
56
56
  }
57
- /** Branded header panel the first thing the wizard paints. */
57
+ /** Slant-style SELLA wordmark (slashes + underscores, matrix-green fade) wide TTYs only. */
58
+ wordmarkArt() {
59
+ if (!this.pretty || (process.stdout.columns || 80) < 48)
60
+ return null;
61
+ const glyphs = {
62
+ S: [' _____', ' / ___/', ' \\__ \\ ', ' ___/ / ', '/____/ '],
63
+ E: [' ______', ' / ____/', ' / __/ ', ' / /___ ', '/_____/ '],
64
+ L: [' __ ', ' / / ', ' / / ', ' / /___ ', '/_____/ '],
65
+ A: [' ___ ', ' / |', ' / /| |', ' / ___ |', '/_/ |_|'],
66
+ };
67
+ const rows = [];
68
+ for (let r = 0; r < 5; r += 1) {
69
+ const raw = ['S', 'E', 'L', 'L', 'A'].map((ch) => glyphs[ch][r]).join('');
70
+ // Matrix fade: bright green on top, deep green at the base — decoration only.
71
+ const code = r < 3 ? '92' : '32';
72
+ rows.push(' ' + this.paint(code, raw));
73
+ }
74
+ return rows;
75
+ }
76
+ /** Branded header: line-art wordmark + info panel — the first thing the wizard paints. */
58
77
  banner(subtitle, meta) {
59
78
  if (this.quiet)
60
79
  return;
@@ -62,12 +81,17 @@ export class Ui {
62
81
  this.out(`SELLA — ${subtitle} (${meta})`);
63
82
  return;
64
83
  }
65
- const wordmark = 'S E L L A';
84
+ this.out('');
85
+ const art = this.wordmarkArt();
86
+ if (art)
87
+ for (const row of art)
88
+ this.out(row);
89
+ const wordmark = art ? '' : 'S E L L A';
66
90
  const inner = Math.min(this.width() - 2, Math.max(wordmark.length, subtitle.length, meta.length) + 6);
67
91
  const pad = (raw, painted = raw) => `${this.accent('│')} ${painted}${' '.repeat(Math.max(0, inner - raw.length - 2))}${this.accent('│')}`;
68
- this.out('');
69
92
  this.out(this.accent('╭' + '─'.repeat(inner) + '╮'));
70
- this.out(pad(wordmark, this.paint('1;36', wordmark)));
93
+ if (wordmark)
94
+ this.out(pad(wordmark, this.paint('1;36', wordmark)));
71
95
  this.out(pad(subtitle, this.paint('1', subtitle)));
72
96
  this.out(pad(meta, this.dim(meta)));
73
97
  this.out(this.accent('╰' + '─'.repeat(inner) + '╯'));
package/package.json CHANGED
@@ -1,9 +1,28 @@
1
1
  {
2
2
  "name": "sella-cli",
3
- "version": "0.6.2",
4
- "description": "Sella onboarding CLI install Sella into your agent clients, pair, verify, fund, publish. (`npx sella-cli init`)",
3
+ "version": "0.6.5",
4
+ "description": "Connect your AI agent to Sella, the marketplace where agents buy data and APIs, in one command: npx sella-cli. Installs the Sella MCP server into Claude Code, Cursor and more, then pairs, verifies, funds, and publishes.",
5
+ "keywords": [
6
+ "cli",
7
+ "mcp",
8
+ "model-context-protocol",
9
+ "ai-agents",
10
+ "agentic-commerce",
11
+ "x402",
12
+ "usdc",
13
+ "micropayments",
14
+ "pay-per-call",
15
+ "data-marketplace",
16
+ "api-marketplace",
17
+ "datasets",
18
+ "claude",
19
+ "cursor",
20
+ "developer-tools",
21
+ "onboarding"
22
+ ],
5
23
  "license": "MIT",
6
24
  "homepage": "https://sellag.vercel.app",
25
+ "bugs": { "url": "https://github.com/010100100100011101010100/ogsella/issues" },
7
26
  "repository": { "type": "git", "url": "https://github.com/010100100100011101010100/ogsella", "directory": "cli" },
8
27
  "type": "module",
9
28
  "bin": { "sella": "./dist/index.js" },