7 Commits
Author SHA1 Message Date
Kevin Codex e736c28257 feat(provider): add GMI Cloud as a provider and official partner (#2279)
* feat(provider): add GMI Cloud as a provider and official partner

Add GMI Cloud (https://www.gmicloud.ai/) as a first-class
OpenAI-compatible provider and list it in the partner roster.

Provider (`gmi-cloud`):
- Gateway descriptor for https://api.gmi-serving.com/v1 with a hybrid
  catalog: a short curated list plus authenticated /v1/models discovery.
  Defaults to deepseek-ai/DeepSeek-V4-Pro.
- GMI_API_KEY is a dedicated credential. A generic OPENAI_API_KEY is
  never sent to GMI, and the GMI key is never mirrored to another host.
- Reachable from /provider, `--provider gmi-cloud` (which also reads an
  optional GMI_MODEL) and saved profiles, including relaunch.
- `--provider gmi-cloud` drops an API format or custom auth header left
  by another provider, since GMI is Bearer-only chat completions.
- Routes by its default base URL only. The same host also serves GMI's
  Anthropic-compatible API, which stays a custom Anthropic endpoint.
- Forwards GMI_API_KEY to spawned teammates.

Partner:
- README partners table and the website roster, with light and dark
  logos under docs/assets/ and web/public/partners/.

Docs: README provider row, .env.example and the website provider and
configuration pages. Also corrects the README line that said the
Opengateway routes GMI Cloud models, which it no longer does.

* docs(readme): use Twigpine's dark logo in dark mode

The partners table showed the light Twigpine logo as a white tile on GitHub's dark theme. Serve https://twigpine.com/logo-dark.png there, the same markup the Zero README uses.

* fix(gmi-cloud): curate only models GMI's /v1/models serves

A live /v1/models call (79 models) shows GMI does not serve
anthropic/claude-sonnet-4.6 or anthropic/claude-opus-4.7 on the
OpenAI-compatible API, so drop them from the curated seed. DeepSeek V4
Pro and V4 Flash (GMI's own coding picks) remain; discovery lists the
rest.

Tests now use the item shape the live endpoint returns (`name`,
`context_length`, `pricing`, no output limit), and the GMI_MODEL
examples use a served model id.

* feat(gmi-cloud): default to Qwen 3.8 Max and curate Qwen 3.8 Max and Flash

GMI Cloud's partner models are Qwen 3.8 Max and Qwen 3.8 Flash. Add
shared descriptors for both (context as GMI's /v1/models reports it,
262,144 and 1,048,575; a conservative 65,536 output cap since GMI does
not publish one), curate them ahead of the DeepSeek V4 picks, and make
Qwen/Qwen3.8-Max the route default.

Verified live through a built CLI: read-a-file then write-a-file agent
turns succeed on both models, and `--provider gmi-cloud` with no
--model uses Qwen/Qwen3.8-Max.

* fix(gmi-cloud): keep the GMI key on GMI's HTTPS /v1 API (review feedback)

Address CodeRabbit's three findings on #2279:

- isGmiCloudBaseUrl now accepts only HTTPS on the default port, host
  api.gmi-serving.com, and a /v1 path or one below it. Plain HTTP,
  custom ports, the host root (GMI's Anthropic-compatible API) and
  other paths are rejected.
- buildGmiCloudProfileEnv no longer falls back to an ambient
  OPENAI_BASE_URL, which may belong to another provider. It keeps an
  explicit GMI URL and otherwise uses the route default, so the key it
  returns always targets GMI.
- The profile env mirror sets GMI_API_KEY only when the profile's URL is
  GMI's, not for any gmi-cloud profile, matching the startup checks.

Each fix has a test that failed before the change.

* fix(gmi-cloud): withhold the GMI key from a retargeted gmi-cloud profile

Address CodeRabbit's follow-up on #2279. Applying a gmi-cloud profile
whose base URL is not GMI's inference API installed the saved key as
OPENAI_API_KEY for that URL. Withhold it there, the same way this
function already treats retargeted ApiSmart, Concentrate, API Route,
LLMTR and Command Code profiles.

A gmi-cloud profile with no base URL now resolves to the GMI default
(like those routes), and the GMI_API_KEY mirror follows the resolved
URL.

Tests cover the retargeted profile in-session (neither key installed),
the empty-URL profile, and the persisted startup env of a retargeted
profile (always GMI's URL, never the other host). The first two failed
before this change.
2026-10-14 12:29:44 +08:00
Kevin CodexandOpenClaude 6e3590303b feat(partners): add Concentrate and Exa to partner roster (#2141)
Adds Concentrate (concentrate.ai) and Exa (exa.ai) to the README
partners table and the web landing page, with light/dark logo variants
self-hosted under docs/assets/ and web/public/partners/.

Co-authored-by: OpenClaude <openclaude@gitlawb.com>
2026-08-19 14:13:09 +08:00
Kevin CodexandOpenClaude 575b407275 feat(partners): add ApiSmart, refresh Novita AI logo (#2121)
- Add ApiSmart (https://www.apismart.ai) to the README partners table
  and the web partner strip, with a dark-theme logo variant (near-black
  wordmark recolored to white, white matte removed).
- Replace the Novita AI PNG logo with the new SVG wordmark plus a
  generated dark variant, wired through the same prefers-color-scheme
  <picture> pattern (README) and logoDark field (web).

Co-authored-by: OpenClaude <openclaude@gitlawb.com>
2026-08-13 11:11:43 +08:00
Kevin CodexandOpenClaude 158bdd0dcf docs(readme): rename Sponsors to Partners, add AI/ML API and Novita AI, new wordmark (#2054)
- Rename the Sponsors section and nav link to Partners
- Add AI/ML API and Novita AI to the partners table with local logo
  assets; AI/ML API ships light/dark SVG variants behind a <picture>
  element so the wordmark stays readable on both GitHub themes
- Replace the green SVG header wordmark with the orange pixel-art
  OPENCLAUDE wordmark PNG

Co-authored-by: OpenClaude <openclaude@gitlawb.com>
2026-07-28 13:31:10 +08:00
Kevin CodexandOpenClaude 14648213a6 Chore/readme cleanup (#1976)
* docs: README cleanup, green wordmark header, Trendshift badges

Header: the startup wordmark (src/constants/brand.ts half-block art)
rendered as a green two-shade SVG (docs/assets/openclaude-wordmark.svg,
textLength-pinned so rows align in any monospace font), with the three
Trendshift badges (daily/monthly/repository) centered beneath it.

Cleanup (536 -> ~430 lines, nothing lost):
- Agent routing, maxSteps limits, and GitHub Copilot sub-agent tuning
  moved to docs/agent-routing.md; headless gRPC server moved to
  docs/grpc-server.md; README keeps linked summaries.
- Build/test/validation commands were repeated in three sections —
  consolidated into one Development section; Contributing links to it.
- New "Meet Your Buddy" section documenting the companion heroes and
  their /buddy commands; added to What Works and Why OpenClaude.
- Star History moved from the header flow down beside Community.
- Setup Guides indexes the new docs pages; fixed a missing blank line
  before Repository Structure and a curly quote.

All relative links, image paths, and internal anchors validated.

Co-Authored-By: OpenClaude <openclaude@gitlawb.com>

* docs: pure-rect wordmark for crisp rendering; drop broken Star History

The wordmark SVG previously drew the half-block art as monospace <text>,
which rendered raggedly (font-dependent glyph stretching and seams).
Regenerated as pure SVG rects computed from the brand.ts wordmark grid —
no font dependence, pixel-crisp at any size, same two-shade green split.

Star History chart removed: the badge endpoint errors and displays a
broken image.

Co-Authored-By: OpenClaude <openclaude@gitlawb.com>

* docs: render the wordmark at full README column width

Co-Authored-By: OpenClaude <openclaude@gitlawb.com>

---------

Co-authored-by: OpenClaude <openclaude@gitlawb.com>
2026-07-15 22:27:50 +08:00
Kevin CodexandOpenClaude 73a2833819 feat(sponsors): add Atlas Cloud sponsor and sponsored tip (#1536)
Add Atlas Cloud (atlascloud.ai) to the README sponsors table with its
banner asset, and add an Atlas Cloud sponsored tip to the tip catalog.

Co-authored-by: OpenClaude <openclaude@gitlawb.com>
2026-06-05 07:13:33 +08:00
Kevin CodexandOpenClaude c0b5535d86 docs: add Atomic Chat partner (#942)
Co-authored-by: OpenClaude <openclaude@gitlawb.com>
2026-04-28 23:35:25 +08:00