glamfire 0.2.1

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/LICENSE ADDED
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright 2026 glamworks
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
package/NOTICE ADDED
@@ -0,0 +1,7 @@
1
+ glamfire
2
+ Copyright 2026 glamworks
3
+
4
+ This product includes software developed by the glamworks community
5
+ (https://github.com/glamworks).
6
+
7
+ Licensed under the Apache License, Version 2.0.
package/README.md ADDED
@@ -0,0 +1,280 @@
1
+ <div align="center">
2
+
3
+ <img src="glamworks-logo.png" alt="glamfire" width="160" />
4
+
5
+ # glamfire
6
+
7
+ ### The open harness for the last mile of AI.
8
+
9
+ **Own your context. Route your intelligence. Never rent your brain back.**
10
+
11
+ [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)
12
+ [![Status](https://img.shields.io/badge/status-foundation-orange.svg)](#current-reality)
13
+ [![Platforms](https://img.shields.io/badge/platforms-macOS%20%C2%B7%20Windows%20%C2%B7%20Linux-informational.svg)](#install)
14
+ [![Default model](https://img.shields.io/badge/default-GLM%205.2%20on%20Fireworks-ff5a1f.svg)](#why-glm-52--fireworks)
15
+
16
+ [Spec](SPEC.md) · [Quickstart](docs/QUICKSTART.md) · [Architecture](docs/ARCHITECTURE.md) · [Mission](docs/MISSION.md) · [Why we win](docs/WHY-WE-WIN.md) · [Current reality](#current-reality) · [Contribute](CONTRIBUTING.md) · [Site](https://glamworks.github.io)
17
+
18
+ </div>
19
+
20
+ ---
21
+
22
+ ## The 98% problem
23
+
24
+ Intelligence just got about **98% cheaper**. Open models like **GLM 5.2** now match or
25
+ beat the frontier on the *broad middle of everyday work* — the brochure site, the
26
+ standard deck, the first‑pass copy, the routine synthesis, the familiar coding task.
27
+ Faster. Cheaper. Free to self‑host.
28
+
29
+ So why is almost nobody switching?
30
+
31
+ Because a model is a **brain in a jar**. What your company actually runs is the *work
32
+ system* around it — the **harness** and its **last mile**:
33
+
34
+ - the **context** the model sees (memory, retrieval, your team's hard‑won knowledge),
35
+ - the **routing** that picks the right model for each task,
36
+ - the **tool calls**, shaped to each model family's own grammar,
37
+ - the **system prompts**, tuned to one lab's quirks,
38
+ - the **surfaces** — CLI, chat, IDE — where work happens.
39
+
40
+ Switching models means rebuilding all of it. The talent that can do that is scarce and
41
+ expensive, so companies sign a frontier contract instead. And the frontier labs are
42
+ racing to put their assistant *inside your team chat* — quietly absorbing the messy
43
+ context that **is** your edge, until you're renting your own brain back from them
44
+ forever, with no way to rip it out.
45
+
46
+ **glamfire is the open, self‑owned harness that closes the last mile.** Keep your
47
+ context in your hands. Route every task to the cheapest model that can actually do it.
48
+ Run one work system across any model family. Make cheap intelligence *usable* without
49
+ handing your context to anyone.
50
+
51
+ > If you can build a harness, this is the opening of the decade. glamfire is that
52
+ > harness, in the open, for everyone.
53
+
54
+ ---
55
+
56
+ ## What glamfire is
57
+
58
+ A **model‑agnostic, agent‑agnostic harness**, built as a TypeScript monorepo. Three
59
+ load‑bearing subsystems:
60
+
61
+ | Subsystem | a.k.a. | What it does |
62
+ |---|---|---|
63
+ | **engine** | *open engine* | The agent loop: plan → act → observe, tool dispatch, permissions, sandboxing, streaming. |
64
+ | **brain** | *open brain* | Your context, **local‑first and portable** — owned, exportable, never uploaded, never rented back. |
65
+ | **skills** | *open skills* | Portable capability packs that travel across models unchanged. |
66
+
67
+ …wired together by:
68
+
69
+ - **router** — scores each task **center ↔ edge** of distribution and sends it to the
70
+ cheapest capable model, escalating to the frontier only when confidence is low.
71
+ - **adapters** — a **tested harness per model family** (GLM 5.2/Fireworks, Anthropic,
72
+ OpenAI, local vLLM). Each turns a raw model into a *working agent* — no brain in a jar.
73
+ - **team** — a self‑hosted team surface (Slack/Discord/HTTP). The open answer to renting
74
+ your team's context to a lab: the knowledge stays in **your** store.
75
+ - **surfaces** — the `glam` CLI, an SDK, and a server/daemon mode.
76
+
77
+ See **[SPEC.md](SPEC.md)** for the full specification.
78
+
79
+ ---
80
+
81
+ ## Why GLM 5.2 + Fireworks
82
+
83
+ GLM 5.2 is a ~744B‑total / 40B‑active MoE with a 1M‑token context, native
84
+ OpenAI‑compatible tool calling, and top‑tier results on design and real‑world coding —
85
+ at roughly a fifth of frontier cost. It is, for the **center of distribution**, one of
86
+ the best models in the world. **Fireworks AI** serves it on an OpenAI‑compatible API
87
+ with prompt caching, batch tiers, and on‑demand GPUs.
88
+
89
+ That combination — excellent, cheap, open, easy to serve — is the default workhorse
90
+ glamfire routes to. Everything else escalates only when it has to.
91
+
92
+ ---
93
+
94
+ ## Install
95
+
96
+ > **Heads‑up:** glamfire is at the **foundation** stage. The pieces below describe the
97
+ > shipping surface; see **[Current reality](#current-reality)** for exactly what runs
98
+ > today versus what is specified and in progress. We do not market vaporware.
99
+
100
+ The install paths below are **built and tested** — the `glam` CLI bundles to a
101
+ self‑contained npm package (no `workspace:*` deps, no native modules) and to single‑file
102
+ binaries for all five OS/arch targets via `bun build --compile`. The **publish** to the
103
+ registries is **wired in CI but gated on maintainer secrets** (see the note after the
104
+ commands), so the package‑manager one‑liners go live the moment those secrets are added.
105
+
106
+ ```bash
107
+ # npm (any Node >= 22 user) — provides the `glam` command
108
+ npm install -g glamfire
109
+
110
+ # macOS / Linux — Homebrew tap
111
+ brew install glamworks/tap/glamfire
112
+
113
+ # Windows — Scoop
114
+ scoop bucket add glamworks https://github.com/glamworks/scoop-bucket
115
+ scoop install glamfire
116
+
117
+ # Windows — winget
118
+ winget install Glamworks.Glamfire
119
+
120
+ # Any OS — download the single-file binary for your platform from the GitHub Release
121
+ # glam-darwin-arm64 · glam-darwin-x64 · glam-linux-x64 · glam-linux-arm64 · glam-windows-x64.exe
122
+ # then: chmod +x glam-* && ./glam-<your-target> --version
123
+ ```
124
+
125
+ ```bash
126
+ # Or run the CLI straight from source (no packaging needed)
127
+ git clone https://github.com/glamworks/glamfire.git
128
+ cd glamfire && pnpm install && pnpm -r build
129
+ node packages/cli/src/index.mjs --version
130
+ ```
131
+
132
+ > **What's wired vs. awaiting secrets.** Building the artifacts, checksums, the SBOM,
133
+ > sigstore signing, and the GitHub Release all run unconditionally on a `v*` tag. The
134
+ > **publishes are gated** so nothing ships until the maintainer adds the credential:
135
+ > `NPM_TOKEN` (npm), `HOMEBREW_TAP_DEPLOY_KEY` (tap repo `glamworks/homebrew-tap`),
136
+ > `SCOOP_BUCKET_DEPLOY_KEY` (bucket repo `glamworks/scoop-bucket`), `WINGET_TOKEN`
137
+ > (winget‑pkgs PR). Until then the `npm i -g glamfire` / `brew` / `scoop` / `winget`
138
+ > lines resolve once the first release is published. Build the artifacts yourself any
139
+ > time: `bun scripts/build-npm.mjs --pack` and `bun scripts/build-binaries.mjs`. A
140
+ > Docker image for the team/server profiles is still specified, not yet built.
141
+
142
+ ---
143
+
144
+ ## Current reality
145
+
146
+ We state plainly what is real. (This section is the honesty contract; it updates with
147
+ every release.)
148
+
149
+ **Works today**
150
+ - `glam version` / `glam --version` — version in the product's output.
151
+ - `glam doctor` — checks the local environment (Node, provider key, install).
152
+ - `glam help` — usage.
153
+ - **`@glamfire/brain`** — the owned context store, **fully working end‑to‑end**:
154
+ embedded SQLite + `sqlite-vec` + FTS5, four provenance‑bearing record types
155
+ (Fact/Document/Episode/Pointer), hybrid retrieval (vector + keyword + recency +
156
+ provenance) with token‑budget packing, and a **tested export→import ownership
157
+ invariant** (your store round‑trips to human‑readable JSONL and back, bit‑exact).
158
+ Default embedder is offline/zero‑key; an on‑device transformer backend is opt‑in.
159
+ - **`@glamfire/config`** — layered, typed, validated configuration (SPEC §6):
160
+ defaults → `~/.glam/config.toml` → `./glam.toml` → env → flags, with per‑value
161
+ provenance. **Secrets are references** (env/OS‑keychain), never inline, and **redacted**
162
+ in all output. `glam config` shows the resolved config; invalid config **fails loudly**
163
+ with an actionable message. Wired into `glam run`/`glam doctor` and the fireworks adapter.
164
+ - **`@glamfire/skills`** — portable, model‑agnostic capability packs (SPEC §5.5): a
165
+ self‑contained skill directory (manifest + handlers + neutral instruction + example
166
+ episodes + optional verifier) loads, validates, and **installs into the engine** as
167
+ `{ system, tools }` for any model. Ships a working `code-explainer` example skill.
168
+ - **`@glamfire/router`** + **`glam route`** — center/edge, cost‑aware routing (SPEC §5.3),
169
+ **fully working offline end‑to‑end**: a pure, feature‑based classifier scores each task
170
+ **center ↔ edge** with a calibrated, *non‑verbalized* confidence (length, code‑ness,
171
+ novelty, retrieval‑hit quality, historical outcomes); a declarative **policy engine**
172
+ evaluates `routing.rules` top‑down (first match wins), filters candidates by
173
+ adapter‑declared **capabilities** and projected **`maxUsd`**, and picks the **cheapest
174
+ survivor**; an **escalation cascade** runs the cheap model, **verifies** (rubric /
175
+ heuristic / pluggable), and **escalates** to the next‑stronger candidate on failure
176
+ (real `escalation` step, budget‑bounded) — proven end‑to‑end through the **real engine
177
+ loop**. `glam route "<prompt>"` prints the decision + a **distribution report** ($ saved
178
+ vs always‑frontier) with **no API key and no provider call**; `glam run --explain` shows
179
+ the live decision. Wired into the engine via a neutral `RouterHook`.
180
+ - **Cross‑platform installability without cloning** (SPEC §7), **built and verified
181
+ end‑to‑end**: the `glam` CLI bundles to a self‑contained **`glamfire` npm package**
182
+ (one file, no `workspace:*` deps, no native modules — `npm i -g` then run the
183
+ installed binary, proven by packing the tarball, global‑installing it, and running
184
+ `glam --version` + `glam route`), and to **single‑file binaries** for darwin‑arm64,
185
+ darwin‑x64, linux‑x64, linux‑arm64, and windows‑x64 via `bun build --compile` (the
186
+ host binary is compiled and actually run in the build + in CI). Ships **Homebrew /
187
+ Scoop / winget** manifest templates (filled with version + SHA‑256 by
188
+ `scripts/render-manifests.mjs`), a **CycloneDX SBOM**, and a `v*`‑tag **release
189
+ workflow** that checksums, sigstore‑signs, and publishes — with every registry
190
+ publish **gated on a maintainer secret** (no‑op until added). CI runs the full gates
191
+ (build/typecheck/lint/test/smoke) on **macOS, Windows, Linux** and builds+runs the
192
+ artifacts on macOS+Linux.
193
+ - **`glam run`** + **`@glamfire/engine`** — the agent loop **DONE and live‑verified
194
+ against real GLM 5.2 on Fireworks**: plan→act→observe, real tool dispatch,
195
+ least‑privilege permission gate, and a **hard token/cost budget that genuinely stops
196
+ mid‑task** (each turn's output is capped by the remaining budget and any turn that
197
+ crosses the ceiling reports `budget_exhausted`, not `done`). Sandboxed tools:
198
+ `read_file`, **`list_files` (glob)** and **`search_files` (grep)** for code navigation
199
+ (both cwd‑scoped, `read`‑permission, reusing the same symlink‑escape guard),
200
+ `write_file`/`edit_file` (cwd‑scoped, symlink‑escape‑defended,
201
+ `write`=ask→deny), and `run_command` (no‑shell, allowlisted, `exec`=**deny by default**,
202
+ opt‑in via `--allow-exec`) — enough to close the dogfood read→edit→run loop; full
203
+ network‑egress isolation needs an OS sandbox and is noted as a known limit. Paired with
204
+ the **`fireworks-glm` adapter** (OpenAI‑compatible Fireworks transport, streaming
205
+ tool‑call fragment reassembly, pricing). **Observed live**, real key, real call:
206
+ `glam run "…compute (2 + 3) * 4…"` streams GLM‑5.2, dispatches the `calculator` tool,
207
+ and answers `20` (`status: done`); a `--max-usd 0.001` ceiling truncates output and
208
+ reports `budget_exhausted`. No part of the path is faked. **Live‑verified again** for
209
+ code navigation: `glam run` drove `search_files` + `list_files` on this repo (both
210
+ `[allow]`, no approval prompt) to locate a function's definition by `file:line`.
211
+ - **Dogfooding M0+M1 — PROVEN live** (glamfire building glamfire): `glam run` read the
212
+ repo and proposed real gaps (M0), then **authored a doc closing a real good‑first‑issue**
213
+ end‑to‑end (M1, [#11](https://github.com/glamworks/glamfire/issues/11)) — driven by GLM 5.2
214
+ via `scripts/dogfood.mjs`, with a human review catching one defect and glamfire iterating
215
+ to green. A **self‑hosting CI gate** runs glamfire‑on‑glamfire on every push (gated on the
216
+ `FIREWORKS_API_KEY` repo secret; skips with a clear notice, never a fake pass). Commits
217
+ authored by glamfire are tagged with the model id. See [`docs/DOGFOODING.md`](docs/DOGFOODING.md).
218
+ - A passing **smoke test** that drives the real CLI the way a human would.
219
+ - A complete **[SPEC.md](SPEC.md)** and **22‑dimension research base** in [`research/`](research/).
220
+
221
+ **Built, one step from DONE** (all gates green; the only unverified step is the live call)
222
+ - **Four tested adapters** behind one conformance suite: **`fireworks-glm`** (GLM 5.2/FP8,
223
+ the default), **`anthropic`** (Claude Messages API — edge/escalation candidate), and
224
+ **`together`** serving **GLM 5.2** *and* **Qwen3‑Coder‑Next** — all built on a shared
225
+ OpenAI‑compatible core (system shaping, native tool calling, SSE tool‑call fragment
226
+ reassembly, per‑model pricing/capabilities). The same **conformance battery** runs against
227
+ every adapter/model (a model is "supported" only when it's green). Honesty caveat: Together
228
+ serves GLM‑5.2 at **FP4** (a real downgrade vs Fireworks **FP8**) and Qwen3‑Coder‑Next via a
229
+ *dedicated* endpoint — see [`research/23`](research/23-second-model-and-provider.md). **`fireworks-glm`
230
+ is live‑verified** (see *Works today* above); the other two are verified against real captured
231
+ wire fixtures with their **live calls pending each provider's key** (`ANTHROPIC_API_KEY` /
232
+ `TOGETHER_API_KEY`). The router's cross‑provider escalation (cheap GLM/Qwen → frontier Claude)
233
+ is real, wired, and cost‑compared today.
234
+ - **Cross‑platform install without cloning** (SPEC §7): a self‑contained **`glamfire`** npm
235
+ package (`npm i -g glamfire` → `glam`), single‑file **binaries** for macOS/Windows/Linux
236
+ (arm64+x64, checksummed, sigstore‑signed), and **Homebrew / Scoop / winget** manifests, all
237
+ produced by a tag‑driven **release workflow** + an SBOM. Built and exercised (the packed npm
238
+ install and the compiled binary both run real commands); **actual publishing is gated on
239
+ maintainer secrets** (`NPM_TOKEN`, tap/bucket deploy keys) — see *Install* below.
240
+
241
+ **Specified, in active build** (lock‑step, no shims — see [SPEC](SPEC.md))
242
+ - Docker image for the team/server profiles · team harness · SDK. The *live* cheap→frontier
243
+ cascade across providers awaits provider keys only.
244
+
245
+ If a capability is partial, the docs and this section say so. A feature is **DONE** only
246
+ when a real human end‑user can use it.
247
+
248
+ ---
249
+
250
+ ## Principles
251
+
252
+ - **You own your context** — local‑first, portable, exportable, rip‑out‑able.
253
+ - **Cheapest capable intelligence wins** — route the center cheap, escalate the edge.
254
+ - **One harness, every model** — tested adapters, no brain in a jar.
255
+ - **Full‑stack mini‑features, never shims** — breadth stays in lock‑step.
256
+ - **Verified by a human's standard** — DONE means really usable.
257
+ - **macOS, Windows, Linux as equals.**
258
+ - **Built with glamfire** — we dogfood our own harness.
259
+
260
+ ---
261
+
262
+ ## Contributing
263
+
264
+ The harness‑talent shortage is the whole opportunity — and an open invitation. If you
265
+ can reason about routing, context, tool‑calls, or model adapters, **we want you.**
266
+
267
+ - Read **[CONTRIBUTING.md](CONTRIBUTING.md)** and the **[Code of Conduct](CODE_OF_CONDUCT.md)**.
268
+ - Pick up a **[good first issue](https://github.com/glamworks/glamfire/labels/good%20first%20issue)**.
269
+ - Larger changes go through a lightweight **RFC** (see CONTRIBUTING).
270
+ - Governance is open and documented in **[GOVERNANCE.md](GOVERNANCE.md)**.
271
+
272
+ ---
273
+
274
+ ## License
275
+
276
+ [Apache‑2.0](LICENSE). Use it, fork it, build a business on it. Own your last mile.
277
+
278
+ <div align="center">
279
+ <sub>glamfire is a <a href="https://github.com/glamworks">glamworks</a> project · the open harness for the last mile of AI</sub>
280
+ </div>