baro-ai 0.46.0 → 0.47.0

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
@@ -93,6 +93,26 @@ baro --architect-llm claude \
93
93
  "Your goal"
94
94
  ```
95
95
 
96
+ ### Custom OpenAI-compatible endpoints
97
+
98
+ Any provider that exposes an OpenAI-compatible Chat Completions API works with `--llm openai`. Set `OPENAI_BASE_URL` to point at your endpoint and pass any model name via `--story-model` (or let it use the default):
99
+
100
+ ```bash
101
+ # Xiaomi MiMo
102
+ OPENAI_API_KEY=your-key OPENAI_BASE_URL=https://api.mimo.xiaomi.com/v1 \
103
+ baro --llm openai --story-model MiMo-7B-RL "Your goal"
104
+
105
+ # OpenRouter (any model)
106
+ OPENAI_API_KEY=your-key OPENAI_BASE_URL=https://openrouter.ai/api/v1 \
107
+ baro --llm openai --story-model anthropic/claude-3.5-sonnet "Your goal"
108
+
109
+ # Local vLLM / Ollama
110
+ OPENAI_API_KEY=not-needed OPENAI_BASE_URL=http://localhost:11434/v1 \
111
+ baro --llm openai --story-model llama3 "Your goal"
112
+ ```
113
+
114
+ The `--openai-base-url` flag also works (wins over the env var when both are set).
115
+
96
116
  Full breakdown at [docs.baro.rs/llm-providers](https://docs.baro.rs/llm-providers) — provider economics, per-phase routing, the side-by-side benchmark across three real tasks: [**I tested Claude Code vs OpenAI Codex in my parallel agent setup. Then I built a hybrid.**](https://jigjoy.ai/blog/claude-code-vs-codex-baro)
97
117
 
98
118
  ## Recent real run
@@ -135,6 +155,12 @@ baro --llm hybrid "Add WebSocket support across api and frontend"
135
155
  # Route every phase through GPT-5.5 (Mozaik-native OpenAI API)
136
156
  OPENAI_API_KEY=sk-... baro --llm openai "Refactor the database layer"
137
157
 
158
+ # Route through any OpenAI-compatible endpoint (Xiaomi MiMo, OpenRouter, vLLM, Ollama, etc.)
159
+ OPENAI_API_KEY=your-key OPENAI_BASE_URL=https://api.mimo.xiaomi.com/v1 baro --llm openai "Refactor the database layer"
160
+
161
+ # Or use the CLI flag (flag wins over env var)
162
+ OPENAI_API_KEY=your-key baro --llm openai --openai-base-url https://api.mimo.xiaomi.com/v1 "Refactor the database layer"
163
+
138
164
  # Limit parallelism (plan-tier concurrency caps)
139
165
  baro --parallel 3 "Add unit tests for the auth module"
140
166
 
@@ -168,6 +194,7 @@ For a deeper side-by-side on a real refactor, see [baro vs Claude Code `/goal`](
168
194
  - [Claude CLI](https://docs.anthropic.com/en/docs/claude-cli) authenticated (for `--llm claude`, the default)
169
195
  - [OpenAI Codex CLI](https://github.com/openai/codex) authenticated (for `--llm codex`)
170
196
  - `OPENAI_API_KEY` set (for `--llm openai`)
197
+ - `OPENAI_BASE_URL` set to a custom endpoint (optional, for `--llm openai` — routes through Xiaomi MiMo, OpenRouter, vLLM, Ollama, or any OpenAI-compatible API)
171
198
  - Both Claude CLI **and** Codex CLI authenticated (for `--llm hybrid`)
172
199
  - Node.js 20+
173
200
  - macOS (arm64/x64), Linux (x64/arm64), Windows (x64)
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env node
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
9
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
10
+ }) : x)(function(x) {
11
+ if (typeof require !== "undefined") return require.apply(this, arguments);
12
+ throw Error('Dynamic require of "' + x + '" is not supported');
13
+ });
14
+ var __esm = (fn, res) => function __init() {
15
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
16
+ };
17
+ var __commonJS = (cb, mod) => function __require2() {
18
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
19
+ };
20
+ var __copyProps = (to, from, except, desc) => {
21
+ if (from && typeof from === "object" || typeof from === "function") {
22
+ for (let key of __getOwnPropNames(from))
23
+ if (!__hasOwnProp.call(to, key) && key !== except)
24
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
25
+ }
26
+ return to;
27
+ };
28
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
29
+ // If the importer is in node compatibility mode or this is not an ESM
30
+ // file that has been converted to a CommonJS file using a Babel-
31
+ // compatible transform (i.e. "__esModule" has not been set), then set
32
+ // "default" to the CommonJS "module.exports" for node compatibility.
33
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
34
+ mod
35
+ ));
36
+
37
+ export {
38
+ __require,
39
+ __esm,
40
+ __commonJS,
41
+ __toESM
42
+ };
43
+ //# sourceMappingURL=chunk-RHBV2LM5.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}