@learnrudi/cli 1.9.7 → 1.9.9

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,6 +1,6 @@
1
1
  # RUDI CLI
2
2
 
3
- Install and manage MCP stacks, runtimes, and AI agents.
3
+ Universal tool manager for MCP stacks, CLI tools, runtimes, and AI agents.
4
4
 
5
5
  ## Install
6
6
 
@@ -8,91 +8,163 @@ Install and manage MCP stacks, runtimes, and AI agents.
8
8
  npm i -g @learnrudi/cli
9
9
  ```
10
10
 
11
- Requires Node.js + npm. The npm postinstall step bootstraps `~/.rudi` and
12
- downloads the default runtimes.
11
+ Requires Node.js 18+. The postinstall step bootstraps `~/.rudi` and creates shims.
13
12
 
14
- ## Installation Flow (CLI + Studio)
13
+ ## Quick Start
15
14
 
16
- ### CLI (npm)
15
+ ```bash
16
+ # Install any npm CLI tool
17
+ rudi install npm:typescript
18
+ rudi install npm:@stripe/cli
19
+ rudi install npm:vercel
17
20
 
18
- 1. `npm i -g @learnrudi/cli` downloads the CLI package.
19
- 2. Postinstall creates `~/.rudi/` folders, downloads Node/Python runtimes,
20
- creates `~/.rudi/shims/rudi-mcp`, and initializes `~/.rudi/secrets.json`.
21
- 3. Run `rudi init` to create `~/.rudi/rudi.db`, write `settings.json`, and
22
- ensure essential binaries and shims are present.
21
+ # Install curated stacks and tools
22
+ rudi install slack
23
+ rudi install binary:ffmpeg
24
+ rudi install binary:supabase
23
25
 
24
- ### Studio (desktop app)
26
+ # All tools available via ~/.rudi/bins/
27
+ tsc --version
28
+ ffmpeg -version
29
+ supabase --version
25
30
 
26
- 1. Studio bundles the CLI and installs it to `~/.rudi/bins/rudi`.
27
- 2. On first launch, Studio runs `rudi init` unless `~/.rudi` is already
28
- initialized.
29
- 3. CLI and Studio share the same `~/.rudi` home, so stacks, runtimes, secrets,
30
- and the database stay in sync.
31
+ # Configure secrets for stacks
32
+ rudi secrets set SLACK_BOT_TOKEN "xoxb-your-token"
31
33
 
32
- If you already use Studio, you can skip the npm install unless you want the
33
- `rudi` command in your shell. If you already use the CLI, Studio will reuse the
34
- existing `~/.rudi` setup.
34
+ # Wire up your AI agents
35
+ rudi integrate all
36
+ ```
35
37
 
36
- ## Quick Start
38
+ ## Features
39
+
40
+ ### Universal Tool Installation
41
+
42
+ RUDI supports multiple installation paths:
37
43
 
38
44
  ```bash
39
- # Search available stacks
40
- rudi search --all
45
+ # Dynamic npm packages (any npm CLI)
46
+ rudi install npm:cowsay
47
+ rudi install npm:typescript
48
+ rudi install npm:@railway/cli
41
49
 
42
- # Install a stack
43
- rudi install slack
50
+ # Curated registry (stacks and binaries with docs)
51
+ rudi install slack # MCP stack
52
+ rudi install binary:ffmpeg # Upstream binary
53
+ rudi install binary:supabase # npm-based CLI
44
54
 
45
- # Configure secrets
46
- rudi secrets set SLACK_BOT_TOKEN "xoxb-your-token"
55
+ # All tools resolve through ~/.rudi/bins/
56
+ ```
47
57
 
48
- # Wire up your agents (Claude, Gemini, VS Code, etc.)
49
- rudi integrate all
58
+ ### Shim-First Architecture
59
+
60
+ Every installed tool gets a shim in `~/.rudi/bins/`:
61
+
62
+ ```bash
63
+ # Add to your shell profile (.bashrc, .zshrc)
64
+ export PATH="$HOME/.rudi/bins:$PATH"
65
+
66
+ # Then use tools directly
67
+ tsc --version # → ~/.rudi/bins/tsc
68
+ ffmpeg -version # → ~/.rudi/bins/ffmpeg
69
+ supabase --help # → ~/.rudi/bins/supabase
70
+ ```
71
+
72
+ ### Security by Default
73
+
74
+ npm packages run with `--ignore-scripts` by default:
75
+
76
+ ```bash
77
+ # Safe install (scripts skipped)
78
+ rudi install npm:some-package
50
79
 
51
- # Restart your agent to use the new stack
80
+ # If CLI fails, opt-in to scripts
81
+ rudi install npm:some-package --allow-scripts
52
82
  ```
53
83
 
54
84
  ## Commands
55
85
 
56
86
  ```bash
57
- rudi search <query> # Search for packages
58
- rudi search --all # List all packages
59
- rudi install <pkg> # Install a package
60
- rudi remove <pkg> # Remove a package
61
- rudi list [kind] # List installed (stacks, runtimes, binaries, agents)
62
- rudi secrets list # Show configured secrets
63
- rudi secrets set <key> # Set a secret
64
- rudi integrate <agent> # Wire stack to agent config
65
- rudi update [pkg] # Update packages
66
- rudi doctor # Check system health
87
+ # Search and install
88
+ rudi search <query> # Search for packages
89
+ rudi search --all # List all packages
90
+ rudi install <pkg> # Install a package
91
+ rudi install npm:<pkg> # Install any npm CLI
92
+ rudi remove <pkg> # Remove a package
93
+
94
+ # List and inspect
95
+ rudi list [kind] # List installed (stacks, binaries, agents)
96
+ rudi pkg <id> # Show package details and shim status
97
+ rudi shims list # List all shims
98
+ rudi shims check # Validate shim targets
99
+
100
+ # Secrets and integration
101
+ rudi secrets list # Show configured secrets
102
+ rudi secrets set <key> # Set a secret
103
+ rudi integrate <agent> # Wire stack to agent config
104
+
105
+ # Maintenance
106
+ rudi update [pkg] # Update packages
107
+ rudi doctor # Check system health
67
108
  ```
68
109
 
69
110
  ## How It Works
70
111
 
71
- 1. `rudi install slack` downloads the MCP server tarball from GitHub releases
112
+ ### Installing a Package
113
+
114
+ ```bash
115
+ rudi install npm:typescript
116
+ ```
117
+
118
+ 1. Resolves package from npm registry
119
+ 2. Creates install directory at `~/.rudi/binaries/npm/typescript/`
120
+ 3. Runs `npm install typescript --ignore-scripts`
121
+ 4. Discovers binaries from package.json (`tsc`, `tsserver`)
122
+ 5. Creates wrapper shims in `~/.rudi/bins/`
123
+ 6. Records ownership in shim registry
124
+
125
+ ### Installing an MCP Stack
126
+
127
+ ```bash
128
+ rudi install slack
129
+ ```
130
+
131
+ 1. Downloads stack tarball from registry
72
132
  2. Extracts to `~/.rudi/stacks/slack/`
73
- 3. Runs `npm install` to install dependencies
74
- 4. Shows which secrets need to be configured
133
+ 3. Runs `npm install` for dependencies
134
+ 4. Shows which secrets need configuration
135
+ 5. Ready for `rudi integrate` to wire to agents
75
136
 
76
- When an agent runs the stack:
77
- 1. Agent config points to `~/.rudi/shims/rudi-mcp`
78
- 2. Shim calls `rudi mcp slack`
79
- 3. RUDI loads secrets from `~/.rudi/secrets.json`
80
- 4. Injects secrets as environment variables
81
- 5. Runs the MCP server with bundled runtime
137
+ ### Running MCP Stacks
138
+
139
+ When an AI agent runs a stack:
140
+
141
+ 1. Agent config points to `~/.rudi/bins/rudi-mcp`
142
+ 2. RUDI loads secrets from `~/.rudi/secrets.json`
143
+ 3. Injects secrets as environment variables
144
+ 4. Runs the MCP server with bundled runtime
82
145
 
83
146
  ## Directory Structure
84
147
 
85
148
  ```
86
149
  ~/.rudi/
150
+ ├── bins/ # Shims for all tools (add to PATH)
87
151
  ├── stacks/ # Installed MCP stacks
152
+ ├── binaries/ # Installed CLI tools
153
+ │ ├── ffmpeg/ # Upstream binary
154
+ │ ├── supabase/ # npm-based CLI
155
+ │ └── npm/ # Dynamic npm packages
156
+ │ ├── typescript/
157
+ │ └── cowsay/
88
158
  ├── runtimes/ # Bundled Node.js, Python
89
- ├── tools/ # Binaries (ffmpeg, ripgrep, etc.)
90
- ├── shims/ # Shim scripts for agent configs
91
- ├── secrets.json # Encrypted secrets (0600 permissions)
159
+ ├── agents/ # AI agent CLIs
160
+ ├── secrets.json # Encrypted secrets
161
+ ├── shim-registry.json # Shim ownership tracking
92
162
  └── rudi.db # Local database
93
163
  ```
94
164
 
95
- ## Available Stacks
165
+ ## Available Packages
166
+
167
+ ### MCP Stacks
96
168
 
97
169
  | Stack | Description |
98
170
  |-------|-------------|
@@ -103,10 +175,30 @@ When an agent runs the stack:
103
175
  | openai | DALL-E, Whisper, TTS, Sora |
104
176
  | postgres | PostgreSQL database queries |
105
177
  | video-editor | ffmpeg-based video editing |
106
- | content-extractor | YouTube, Reddit, TikTok, articles |
107
178
  | github | Issues, PRs, repos, actions |
108
179
  | stripe | Payments, subscriptions, invoices |
109
180
 
181
+ ### Binaries
182
+
183
+ | Binary | Description |
184
+ |--------|-------------|
185
+ | ffmpeg | Video/audio processing |
186
+ | ripgrep | Fast search |
187
+ | supabase | Supabase CLI |
188
+ | vercel | Vercel CLI |
189
+ | uv | Fast Python package manager |
190
+
191
+ ### Dynamic npm
192
+
193
+ Any npm package with a `bin` field works:
194
+
195
+ ```bash
196
+ rudi install npm:typescript # tsc, tsserver
197
+ rudi install npm:cowsay # cowsay, cowthink
198
+ rudi install npm:@stripe/cli # stripe
199
+ rudi install npm:netlify-cli # netlify
200
+ ```
201
+
110
202
  ## Links
111
203
 
112
204
  - Website: https://learnrudi.com