llmkit-cli 0.1.0__tar.gz → 0.1.2__tar.gz

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.
Files changed (28) hide show
  1. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/PKG-INFO +93 -72
  2. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/README.md +89 -67
  3. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/llmkit_cli.egg-info/PKG-INFO +93 -72
  4. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/pyproject.toml +4 -5
  5. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/agent_cmd.py +0 -0
  6. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/check.py +0 -0
  7. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/cli.py +0 -0
  8. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/env.py +0 -0
  9. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/git.py +0 -0
  10. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/git_cmds.py +0 -0
  11. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/init.py +0 -0
  12. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/llmkit_cli.egg-info/SOURCES.txt +0 -0
  13. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/llmkit_cli.egg-info/dependency_links.txt +0 -0
  14. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/llmkit_cli.egg-info/entry_points.txt +0 -0
  15. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/llmkit_cli.egg-info/requires.txt +0 -0
  16. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/llmkit_cli.egg-info/top_level.txt +0 -0
  17. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/lock.py +0 -0
  18. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/providers/__init__.py +0 -0
  19. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/providers/anthropic.py +0 -0
  20. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/providers/deepseek.py +0 -0
  21. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/providers/groq.py +0 -0
  22. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/providers/local.py +0 -0
  23. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/providers/mistral.py +0 -0
  24. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/providers/openai.py +0 -0
  25. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/providers/together.py +0 -0
  26. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/providers/utils.py +0 -0
  27. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/setup.cfg +0 -0
  28. {llmkit_cli-0.1.0 → llmkit_cli-0.1.2}/tests/test_llmkit.py +0 -0
@@ -1,13 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: llmkit-cli
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Run any LLM with one config file. No framework lock-in.
5
- License: MIT
6
- Project-URL: Homepage, https://github.com/abinzagr/llmkit
7
- Project-URL: Repository, https://github.com/abinzagr/llmkit
5
+ License-Expression: MIT
6
+ Project-URL: Homepage, https://github.com/abinz-aiml/llmkit
7
+ Project-URL: Repository, https://github.com/abinz-aiml/llmkit
8
8
  Keywords: llm,ai,openai,anthropic,groq,cli
9
9
  Classifier: Programming Language :: Python :: 3
10
- Classifier: License :: OSI Approved :: MIT License
11
10
  Classifier: Operating System :: OS Independent
12
11
  Requires-Python: >=3.10
13
12
  Description-Content-Type: text/markdown
@@ -27,12 +26,24 @@ Requires-Dist: mcp; extra == "all"
27
26
 
28
27
  Run any LLM — local or via API — with one config file. No framework lock-in. Works on Windows, Mac, Linux.
29
28
 
29
+ ```bash
30
+ pip install llmkit-cli
31
+ ```
32
+
30
33
  ```bash
31
34
  llmkit run "explain this codebase in one sentence"
32
35
  ```
33
36
 
37
+ Switch between OpenAI, Anthropic, Groq, Mistral, DeepSeek, Together, and local Ollama models by changing **one line** in `llm.yaml`. No code changes. No redeploy.
38
+
34
39
  ## Install
35
40
 
41
+ **Recommended (PyPI):**
42
+ ```bash
43
+ pip install llmkit-cli
44
+ ```
45
+
46
+ **Or clone and run the platform installer:**
36
47
  ```bash
37
48
  # Linux
38
49
  bash install.sh
@@ -44,19 +55,21 @@ bash install.mac.sh
44
55
  ./install.ps1
45
56
  ```
46
57
 
47
- Each script installs deps, sets up Ollama if needed, and adds `llmkit` to your PATH.
58
+ **VS Code extension:** install `vscode-llmkit` to run prompts and commands from the editor status bar.
48
59
 
49
60
  ## Configure
50
61
 
51
- Edit `llm.yaml` (or run `llmkit init` for a guided setup):
62
+ Create `llm.yaml` in your project (or run `llmkit init` for a guided setup):
52
63
 
53
64
  ```yaml
54
65
  provider: groq # local | openai | anthropic | groq | together | deepseek | mistral
55
66
  model: llama-3.3-70b-versatile
56
- mode: chat
57
67
  ```
58
68
 
59
- For API providers, copy `.env.example` to `.env` and add your key.
69
+ For API providers, add your key to `.env`:
70
+ ```
71
+ GROQ_API_KEY=your_key_here
72
+ ```
60
73
 
61
74
  ## Commands
62
75
 
@@ -64,7 +77,7 @@ For API providers, copy `.env.example` to `.env` and add your key.
64
77
  # One-shot prompt
65
78
  llmkit run "explain this codebase in one sentence"
66
79
 
67
- # Validate config + check provider reachability
80
+ # Validate config and check provider reachability
68
81
  llmkit check
69
82
 
70
83
  # Interactive wizard to create llm.yaml
@@ -73,6 +86,9 @@ llmkit init
73
86
  # Pin current model to llm.lock (commit this file)
74
87
  llmkit lock
75
88
 
89
+ # Manage API keys in .env
90
+ llmkit env
91
+
76
92
  # Generate a commit message from staged changes
77
93
  llmkit commit
78
94
 
@@ -92,50 +108,45 @@ llmkit agent --plan "add pagination to the API"
92
108
  llmkit agent --approve "run the test suite and fix any failures"
93
109
  ```
94
110
 
95
- ## Examples
96
-
97
- ```bash
98
- # Chat
99
- python examples/chat.py
100
- node examples/chat.js # all providers including Anthropic
101
-
102
- # Streaming
103
- python examples/stream.py
104
- node examples/stream.js # all providers including Anthropic
111
+ ## Switch providers
105
112
 
106
- # Function calling / tools
107
- python examples/tools.py
113
+ Change one line in `llm.yaml`, run `llmkit check`, done:
108
114
 
109
- # Vision (image input)
110
- python examples/vision.py
115
+ ```yaml
116
+ # was: provider: groq
117
+ provider: anthropic
118
+ model: claude-3-5-haiku-20241022
119
+ ```
111
120
 
112
- # Multi-round conversation
113
- python examples/multiround.py
121
+ No code changes. No redeploy. Works in CI too.
114
122
 
115
- # Embeddings + cosine similarity
116
- python examples/embed.py
123
+ ## Fallback
117
124
 
118
- # Coding agent
119
- python examples/agent.py
125
+ If the primary provider fails, llmkit cascades to the next:
120
126
 
121
- # MCP agent (connects to MCP servers defined in llm.yaml)
122
- python examples/mcp_agent.py
127
+ ```yaml
128
+ provider: groq
129
+ model: llama-3.3-70b-versatile
130
+ fallback:
131
+ - provider: openai
132
+ model: gpt-4o-mini
133
+ - provider: anthropic
134
+ model: claude-3-5-haiku-20241022
123
135
  ```
124
136
 
125
- ## Local models (via Ollama)
137
+ ## Budget
126
138
 
127
- | Model | Config |
128
- |---|---|
129
- | Llama 4 | `model: llama4` |
130
- | Qwen 3 | `model: qwen3` |
131
- | DeepSeek R1 | `model: deepseek-r1` |
132
- | Mistral | `model: mistral` |
133
- | Phi-4 | `model: phi4` |
134
- | Gemma 3 | `model: gemma3` |
139
+ Cap token usage per run:
140
+
141
+ ```yaml
142
+ budget:
143
+ max_tokens_per_run: 10000
144
+ warn_at: 8000
145
+ ```
135
146
 
136
147
  ## API providers
137
148
 
138
- | Provider | Env key | Fast cheap model |
149
+ | Provider | Env key | Fast model |
139
150
  |---|---|---|
140
151
  | OpenAI | `OPENAI_API_KEY` | `gpt-4o-mini` |
141
152
  | Anthropic | `ANTHROPIC_API_KEY` | `claude-3-5-haiku-20241022` |
@@ -144,50 +155,60 @@ python examples/mcp_agent.py
144
155
  | DeepSeek | `DEEPSEEK_API_KEY` | `deepseek-chat` |
145
156
  | Mistral | `MISTRAL_API_KEY` | `mistral-small-latest` |
146
157
 
147
- ## 5-minute team setup
148
-
149
- ```bash
150
- # 1 — clone
151
- git clone https://github.com/your-org/llmkit
152
- cd llmkit
153
-
154
- # 2 — install deps + register llmkit command
155
- bash install.sh # Mac: bash install.mac.sh | Windows: ./install.ps1
156
-
157
- # 3 — set one API key (Groq free tier works)
158
- echo "GROQ_API_KEY=your_key_here" > .env
159
-
160
- # 4 — verify everything is wired up
161
- llmkit check
158
+ ## Local models (via Ollama)
162
159
 
163
- # 5 — run your first prompt
164
- llmkit run "explain this codebase in one sentence"
160
+ ```yaml
161
+ provider: local
162
+ model: llama4 # or qwen3, deepseek-r1, mistral, phi4, gemma3
165
163
  ```
166
164
 
167
- No server. No IDE extension. No code to write. Switch providers by editing one line in `llm.yaml`.
168
-
169
165
  ## llm.lock
170
166
 
171
- Run `llmkit lock` to pin your model runtime. Commit `llm.lock` alongside your code:
167
+ Run `llmkit lock` to pin your model runtime. Commit `llm.lock` alongside your code — same idea as `package-lock.json`:
172
168
 
173
169
  ```yaml
174
- # Auto-generated — commit this file to pin your model runtime
175
170
  locked_at: "2026-06-26T12:00:00Z"
176
171
  provider: groq
177
172
  model: llama-3.3-70b-versatile
178
- mode: chat
179
173
  ```
180
174
 
181
- Same idea as `package-lock.json` reproducible environments, no surprise model swaps between teammates.
175
+ ## 5-minute team setup
182
176
 
183
- ## Switch providers
177
+ ```bash
178
+ # 1 — install
179
+ pip install llmkit-cli
184
180
 
185
- Change one line in `llm.yaml`, run `llmkit check`, done:
181
+ # 2 — set one API key (Groq free tier works)
182
+ echo "GROQ_API_KEY=your_key_here" > .env
186
183
 
187
- ```yaml
188
- # was: provider: groq
189
- provider: anthropic
190
- model: claude-3-5-haiku-20241022
184
+ # 3 — create config
185
+ llmkit init
186
+
187
+ # 4 — verify
188
+ llmkit check
189
+
190
+ # 5 — run
191
+ llmkit run "explain this codebase in one sentence"
191
192
  ```
192
193
 
193
- No code changes. No redeploy. Works in CI too.
194
+ No server. No IDE plugin required. No code to write.
195
+
196
+ ## Examples
197
+
198
+ ```bash
199
+ python examples/chat.py
200
+ python examples/stream.py
201
+ python examples/tools.py # function calling
202
+ python examples/multiround.py # multi-round conversation
203
+ python examples/embed.py # embeddings + cosine similarity
204
+ python examples/agent.py # coding agent
205
+ python examples/mcp_agent.py # MCP agent
206
+
207
+ node examples/chat.js # JS — all providers
208
+ node examples/stream.js # JS — streaming
209
+ ```
210
+
211
+ ## Links
212
+
213
+ - PyPI: https://pypi.org/project/llmkit-cli/
214
+ - GitHub: https://github.com/abinz-aiml/llmkit
@@ -2,12 +2,24 @@
2
2
 
3
3
  Run any LLM — local or via API — with one config file. No framework lock-in. Works on Windows, Mac, Linux.
4
4
 
5
+ ```bash
6
+ pip install llmkit-cli
7
+ ```
8
+
5
9
  ```bash
6
10
  llmkit run "explain this codebase in one sentence"
7
11
  ```
8
12
 
13
+ Switch between OpenAI, Anthropic, Groq, Mistral, DeepSeek, Together, and local Ollama models by changing **one line** in `llm.yaml`. No code changes. No redeploy.
14
+
9
15
  ## Install
10
16
 
17
+ **Recommended (PyPI):**
18
+ ```bash
19
+ pip install llmkit-cli
20
+ ```
21
+
22
+ **Or clone and run the platform installer:**
11
23
  ```bash
12
24
  # Linux
13
25
  bash install.sh
@@ -19,19 +31,21 @@ bash install.mac.sh
19
31
  ./install.ps1
20
32
  ```
21
33
 
22
- Each script installs deps, sets up Ollama if needed, and adds `llmkit` to your PATH.
34
+ **VS Code extension:** install `vscode-llmkit` to run prompts and commands from the editor status bar.
23
35
 
24
36
  ## Configure
25
37
 
26
- Edit `llm.yaml` (or run `llmkit init` for a guided setup):
38
+ Create `llm.yaml` in your project (or run `llmkit init` for a guided setup):
27
39
 
28
40
  ```yaml
29
41
  provider: groq # local | openai | anthropic | groq | together | deepseek | mistral
30
42
  model: llama-3.3-70b-versatile
31
- mode: chat
32
43
  ```
33
44
 
34
- For API providers, copy `.env.example` to `.env` and add your key.
45
+ For API providers, add your key to `.env`:
46
+ ```
47
+ GROQ_API_KEY=your_key_here
48
+ ```
35
49
 
36
50
  ## Commands
37
51
 
@@ -39,7 +53,7 @@ For API providers, copy `.env.example` to `.env` and add your key.
39
53
  # One-shot prompt
40
54
  llmkit run "explain this codebase in one sentence"
41
55
 
42
- # Validate config + check provider reachability
56
+ # Validate config and check provider reachability
43
57
  llmkit check
44
58
 
45
59
  # Interactive wizard to create llm.yaml
@@ -48,6 +62,9 @@ llmkit init
48
62
  # Pin current model to llm.lock (commit this file)
49
63
  llmkit lock
50
64
 
65
+ # Manage API keys in .env
66
+ llmkit env
67
+
51
68
  # Generate a commit message from staged changes
52
69
  llmkit commit
53
70
 
@@ -67,50 +84,45 @@ llmkit agent --plan "add pagination to the API"
67
84
  llmkit agent --approve "run the test suite and fix any failures"
68
85
  ```
69
86
 
70
- ## Examples
71
-
72
- ```bash
73
- # Chat
74
- python examples/chat.py
75
- node examples/chat.js # all providers including Anthropic
76
-
77
- # Streaming
78
- python examples/stream.py
79
- node examples/stream.js # all providers including Anthropic
87
+ ## Switch providers
80
88
 
81
- # Function calling / tools
82
- python examples/tools.py
89
+ Change one line in `llm.yaml`, run `llmkit check`, done:
83
90
 
84
- # Vision (image input)
85
- python examples/vision.py
91
+ ```yaml
92
+ # was: provider: groq
93
+ provider: anthropic
94
+ model: claude-3-5-haiku-20241022
95
+ ```
86
96
 
87
- # Multi-round conversation
88
- python examples/multiround.py
97
+ No code changes. No redeploy. Works in CI too.
89
98
 
90
- # Embeddings + cosine similarity
91
- python examples/embed.py
99
+ ## Fallback
92
100
 
93
- # Coding agent
94
- python examples/agent.py
101
+ If the primary provider fails, llmkit cascades to the next:
95
102
 
96
- # MCP agent (connects to MCP servers defined in llm.yaml)
97
- python examples/mcp_agent.py
103
+ ```yaml
104
+ provider: groq
105
+ model: llama-3.3-70b-versatile
106
+ fallback:
107
+ - provider: openai
108
+ model: gpt-4o-mini
109
+ - provider: anthropic
110
+ model: claude-3-5-haiku-20241022
98
111
  ```
99
112
 
100
- ## Local models (via Ollama)
113
+ ## Budget
101
114
 
102
- | Model | Config |
103
- |---|---|
104
- | Llama 4 | `model: llama4` |
105
- | Qwen 3 | `model: qwen3` |
106
- | DeepSeek R1 | `model: deepseek-r1` |
107
- | Mistral | `model: mistral` |
108
- | Phi-4 | `model: phi4` |
109
- | Gemma 3 | `model: gemma3` |
115
+ Cap token usage per run:
116
+
117
+ ```yaml
118
+ budget:
119
+ max_tokens_per_run: 10000
120
+ warn_at: 8000
121
+ ```
110
122
 
111
123
  ## API providers
112
124
 
113
- | Provider | Env key | Fast cheap model |
125
+ | Provider | Env key | Fast model |
114
126
  |---|---|---|
115
127
  | OpenAI | `OPENAI_API_KEY` | `gpt-4o-mini` |
116
128
  | Anthropic | `ANTHROPIC_API_KEY` | `claude-3-5-haiku-20241022` |
@@ -119,50 +131,60 @@ python examples/mcp_agent.py
119
131
  | DeepSeek | `DEEPSEEK_API_KEY` | `deepseek-chat` |
120
132
  | Mistral | `MISTRAL_API_KEY` | `mistral-small-latest` |
121
133
 
122
- ## 5-minute team setup
123
-
124
- ```bash
125
- # 1 — clone
126
- git clone https://github.com/your-org/llmkit
127
- cd llmkit
128
-
129
- # 2 — install deps + register llmkit command
130
- bash install.sh # Mac: bash install.mac.sh | Windows: ./install.ps1
131
-
132
- # 3 — set one API key (Groq free tier works)
133
- echo "GROQ_API_KEY=your_key_here" > .env
134
-
135
- # 4 — verify everything is wired up
136
- llmkit check
134
+ ## Local models (via Ollama)
137
135
 
138
- # 5 — run your first prompt
139
- llmkit run "explain this codebase in one sentence"
136
+ ```yaml
137
+ provider: local
138
+ model: llama4 # or qwen3, deepseek-r1, mistral, phi4, gemma3
140
139
  ```
141
140
 
142
- No server. No IDE extension. No code to write. Switch providers by editing one line in `llm.yaml`.
143
-
144
141
  ## llm.lock
145
142
 
146
- Run `llmkit lock` to pin your model runtime. Commit `llm.lock` alongside your code:
143
+ Run `llmkit lock` to pin your model runtime. Commit `llm.lock` alongside your code — same idea as `package-lock.json`:
147
144
 
148
145
  ```yaml
149
- # Auto-generated — commit this file to pin your model runtime
150
146
  locked_at: "2026-06-26T12:00:00Z"
151
147
  provider: groq
152
148
  model: llama-3.3-70b-versatile
153
- mode: chat
154
149
  ```
155
150
 
156
- Same idea as `package-lock.json` reproducible environments, no surprise model swaps between teammates.
151
+ ## 5-minute team setup
157
152
 
158
- ## Switch providers
153
+ ```bash
154
+ # 1 — install
155
+ pip install llmkit-cli
159
156
 
160
- Change one line in `llm.yaml`, run `llmkit check`, done:
157
+ # 2 — set one API key (Groq free tier works)
158
+ echo "GROQ_API_KEY=your_key_here" > .env
161
159
 
162
- ```yaml
163
- # was: provider: groq
164
- provider: anthropic
165
- model: claude-3-5-haiku-20241022
160
+ # 3 — create config
161
+ llmkit init
162
+
163
+ # 4 — verify
164
+ llmkit check
165
+
166
+ # 5 — run
167
+ llmkit run "explain this codebase in one sentence"
166
168
  ```
167
169
 
168
- No code changes. No redeploy. Works in CI too.
170
+ No server. No IDE plugin required. No code to write.
171
+
172
+ ## Examples
173
+
174
+ ```bash
175
+ python examples/chat.py
176
+ python examples/stream.py
177
+ python examples/tools.py # function calling
178
+ python examples/multiround.py # multi-round conversation
179
+ python examples/embed.py # embeddings + cosine similarity
180
+ python examples/agent.py # coding agent
181
+ python examples/mcp_agent.py # MCP agent
182
+
183
+ node examples/chat.js # JS — all providers
184
+ node examples/stream.js # JS — streaming
185
+ ```
186
+
187
+ ## Links
188
+
189
+ - PyPI: https://pypi.org/project/llmkit-cli/
190
+ - GitHub: https://github.com/abinz-aiml/llmkit
@@ -1,13 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: llmkit-cli
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Run any LLM with one config file. No framework lock-in.
5
- License: MIT
6
- Project-URL: Homepage, https://github.com/abinzagr/llmkit
7
- Project-URL: Repository, https://github.com/abinzagr/llmkit
5
+ License-Expression: MIT
6
+ Project-URL: Homepage, https://github.com/abinz-aiml/llmkit
7
+ Project-URL: Repository, https://github.com/abinz-aiml/llmkit
8
8
  Keywords: llm,ai,openai,anthropic,groq,cli
9
9
  Classifier: Programming Language :: Python :: 3
10
- Classifier: License :: OSI Approved :: MIT License
11
10
  Classifier: Operating System :: OS Independent
12
11
  Requires-Python: >=3.10
13
12
  Description-Content-Type: text/markdown
@@ -27,12 +26,24 @@ Requires-Dist: mcp; extra == "all"
27
26
 
28
27
  Run any LLM — local or via API — with one config file. No framework lock-in. Works on Windows, Mac, Linux.
29
28
 
29
+ ```bash
30
+ pip install llmkit-cli
31
+ ```
32
+
30
33
  ```bash
31
34
  llmkit run "explain this codebase in one sentence"
32
35
  ```
33
36
 
37
+ Switch between OpenAI, Anthropic, Groq, Mistral, DeepSeek, Together, and local Ollama models by changing **one line** in `llm.yaml`. No code changes. No redeploy.
38
+
34
39
  ## Install
35
40
 
41
+ **Recommended (PyPI):**
42
+ ```bash
43
+ pip install llmkit-cli
44
+ ```
45
+
46
+ **Or clone and run the platform installer:**
36
47
  ```bash
37
48
  # Linux
38
49
  bash install.sh
@@ -44,19 +55,21 @@ bash install.mac.sh
44
55
  ./install.ps1
45
56
  ```
46
57
 
47
- Each script installs deps, sets up Ollama if needed, and adds `llmkit` to your PATH.
58
+ **VS Code extension:** install `vscode-llmkit` to run prompts and commands from the editor status bar.
48
59
 
49
60
  ## Configure
50
61
 
51
- Edit `llm.yaml` (or run `llmkit init` for a guided setup):
62
+ Create `llm.yaml` in your project (or run `llmkit init` for a guided setup):
52
63
 
53
64
  ```yaml
54
65
  provider: groq # local | openai | anthropic | groq | together | deepseek | mistral
55
66
  model: llama-3.3-70b-versatile
56
- mode: chat
57
67
  ```
58
68
 
59
- For API providers, copy `.env.example` to `.env` and add your key.
69
+ For API providers, add your key to `.env`:
70
+ ```
71
+ GROQ_API_KEY=your_key_here
72
+ ```
60
73
 
61
74
  ## Commands
62
75
 
@@ -64,7 +77,7 @@ For API providers, copy `.env.example` to `.env` and add your key.
64
77
  # One-shot prompt
65
78
  llmkit run "explain this codebase in one sentence"
66
79
 
67
- # Validate config + check provider reachability
80
+ # Validate config and check provider reachability
68
81
  llmkit check
69
82
 
70
83
  # Interactive wizard to create llm.yaml
@@ -73,6 +86,9 @@ llmkit init
73
86
  # Pin current model to llm.lock (commit this file)
74
87
  llmkit lock
75
88
 
89
+ # Manage API keys in .env
90
+ llmkit env
91
+
76
92
  # Generate a commit message from staged changes
77
93
  llmkit commit
78
94
 
@@ -92,50 +108,45 @@ llmkit agent --plan "add pagination to the API"
92
108
  llmkit agent --approve "run the test suite and fix any failures"
93
109
  ```
94
110
 
95
- ## Examples
96
-
97
- ```bash
98
- # Chat
99
- python examples/chat.py
100
- node examples/chat.js # all providers including Anthropic
101
-
102
- # Streaming
103
- python examples/stream.py
104
- node examples/stream.js # all providers including Anthropic
111
+ ## Switch providers
105
112
 
106
- # Function calling / tools
107
- python examples/tools.py
113
+ Change one line in `llm.yaml`, run `llmkit check`, done:
108
114
 
109
- # Vision (image input)
110
- python examples/vision.py
115
+ ```yaml
116
+ # was: provider: groq
117
+ provider: anthropic
118
+ model: claude-3-5-haiku-20241022
119
+ ```
111
120
 
112
- # Multi-round conversation
113
- python examples/multiround.py
121
+ No code changes. No redeploy. Works in CI too.
114
122
 
115
- # Embeddings + cosine similarity
116
- python examples/embed.py
123
+ ## Fallback
117
124
 
118
- # Coding agent
119
- python examples/agent.py
125
+ If the primary provider fails, llmkit cascades to the next:
120
126
 
121
- # MCP agent (connects to MCP servers defined in llm.yaml)
122
- python examples/mcp_agent.py
127
+ ```yaml
128
+ provider: groq
129
+ model: llama-3.3-70b-versatile
130
+ fallback:
131
+ - provider: openai
132
+ model: gpt-4o-mini
133
+ - provider: anthropic
134
+ model: claude-3-5-haiku-20241022
123
135
  ```
124
136
 
125
- ## Local models (via Ollama)
137
+ ## Budget
126
138
 
127
- | Model | Config |
128
- |---|---|
129
- | Llama 4 | `model: llama4` |
130
- | Qwen 3 | `model: qwen3` |
131
- | DeepSeek R1 | `model: deepseek-r1` |
132
- | Mistral | `model: mistral` |
133
- | Phi-4 | `model: phi4` |
134
- | Gemma 3 | `model: gemma3` |
139
+ Cap token usage per run:
140
+
141
+ ```yaml
142
+ budget:
143
+ max_tokens_per_run: 10000
144
+ warn_at: 8000
145
+ ```
135
146
 
136
147
  ## API providers
137
148
 
138
- | Provider | Env key | Fast cheap model |
149
+ | Provider | Env key | Fast model |
139
150
  |---|---|---|
140
151
  | OpenAI | `OPENAI_API_KEY` | `gpt-4o-mini` |
141
152
  | Anthropic | `ANTHROPIC_API_KEY` | `claude-3-5-haiku-20241022` |
@@ -144,50 +155,60 @@ python examples/mcp_agent.py
144
155
  | DeepSeek | `DEEPSEEK_API_KEY` | `deepseek-chat` |
145
156
  | Mistral | `MISTRAL_API_KEY` | `mistral-small-latest` |
146
157
 
147
- ## 5-minute team setup
148
-
149
- ```bash
150
- # 1 — clone
151
- git clone https://github.com/your-org/llmkit
152
- cd llmkit
153
-
154
- # 2 — install deps + register llmkit command
155
- bash install.sh # Mac: bash install.mac.sh | Windows: ./install.ps1
156
-
157
- # 3 — set one API key (Groq free tier works)
158
- echo "GROQ_API_KEY=your_key_here" > .env
159
-
160
- # 4 — verify everything is wired up
161
- llmkit check
158
+ ## Local models (via Ollama)
162
159
 
163
- # 5 — run your first prompt
164
- llmkit run "explain this codebase in one sentence"
160
+ ```yaml
161
+ provider: local
162
+ model: llama4 # or qwen3, deepseek-r1, mistral, phi4, gemma3
165
163
  ```
166
164
 
167
- No server. No IDE extension. No code to write. Switch providers by editing one line in `llm.yaml`.
168
-
169
165
  ## llm.lock
170
166
 
171
- Run `llmkit lock` to pin your model runtime. Commit `llm.lock` alongside your code:
167
+ Run `llmkit lock` to pin your model runtime. Commit `llm.lock` alongside your code — same idea as `package-lock.json`:
172
168
 
173
169
  ```yaml
174
- # Auto-generated — commit this file to pin your model runtime
175
170
  locked_at: "2026-06-26T12:00:00Z"
176
171
  provider: groq
177
172
  model: llama-3.3-70b-versatile
178
- mode: chat
179
173
  ```
180
174
 
181
- Same idea as `package-lock.json` reproducible environments, no surprise model swaps between teammates.
175
+ ## 5-minute team setup
182
176
 
183
- ## Switch providers
177
+ ```bash
178
+ # 1 — install
179
+ pip install llmkit-cli
184
180
 
185
- Change one line in `llm.yaml`, run `llmkit check`, done:
181
+ # 2 — set one API key (Groq free tier works)
182
+ echo "GROQ_API_KEY=your_key_here" > .env
186
183
 
187
- ```yaml
188
- # was: provider: groq
189
- provider: anthropic
190
- model: claude-3-5-haiku-20241022
184
+ # 3 — create config
185
+ llmkit init
186
+
187
+ # 4 — verify
188
+ llmkit check
189
+
190
+ # 5 — run
191
+ llmkit run "explain this codebase in one sentence"
191
192
  ```
192
193
 
193
- No code changes. No redeploy. Works in CI too.
194
+ No server. No IDE plugin required. No code to write.
195
+
196
+ ## Examples
197
+
198
+ ```bash
199
+ python examples/chat.py
200
+ python examples/stream.py
201
+ python examples/tools.py # function calling
202
+ python examples/multiround.py # multi-round conversation
203
+ python examples/embed.py # embeddings + cosine similarity
204
+ python examples/agent.py # coding agent
205
+ python examples/mcp_agent.py # MCP agent
206
+
207
+ node examples/chat.js # JS — all providers
208
+ node examples/stream.js # JS — streaming
209
+ ```
210
+
211
+ ## Links
212
+
213
+ - PyPI: https://pypi.org/project/llmkit-cli/
214
+ - GitHub: https://github.com/abinz-aiml/llmkit
@@ -4,15 +4,14 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "llmkit-cli"
7
- version = "0.1.0"
7
+ version = "0.1.2"
8
8
  description = "Run any LLM with one config file. No framework lock-in."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
11
- license = { text = "MIT" }
11
+ license = "MIT"
12
12
  keywords = ["llm", "ai", "openai", "anthropic", "groq", "cli"]
13
13
  classifiers = [
14
14
  "Programming Language :: Python :: 3",
15
- "License :: OSI Approved :: MIT License",
16
15
  "Operating System :: OS Independent",
17
16
  ]
18
17
  dependencies = [
@@ -35,5 +34,5 @@ py-modules = ["cli", "agent_cmd", "check", "init", "lock", "env", "git_cmds", "g
35
34
  packages = ["providers"]
36
35
 
37
36
  [project.urls]
38
- Homepage = "https://github.com/abinzagr/llmkit"
39
- Repository = "https://github.com/abinzagr/llmkit"
37
+ Homepage = "https://github.com/abinz-aiml/llmkit"
38
+ Repository = "https://github.com/abinz-aiml/llmkit"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes