Repository navigation
feat: devpass-code npm/brew rollout + roundup #2907
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
0a88c06
efe0531
93b63dc
ad0c187
97a0501
e3ab568
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,86 @@ | ||
| --- | ||
| id: "63" | ||
| slug: "team-budgets-product-roundup" | ||
| date: "2026-07-03" | ||
| title: "Per-Member Budgets, Developer Role & PDF Invoices" | ||
| summary: "Cap any teammate's spend and API keys with per-member budgets, give contractors project-scoped developer access on Enterprise, download a PDF invoice for any purchase, and see analytics bucketed in your own timezone. Plus Claude Sonnet 5 at introductory pricing, Claude Fable 5 back online, and DevPass Code on npm." | ||
| image: | ||
| src: "/changelog/team-budgets-product-roundup.png" | ||
| alt: "Product roundup: per-member budgets, developer role, PDF invoices, and timezone-aware analytics on LLM Gateway" | ||
| width: 1536 | ||
| height: 1024 | ||
| --- | ||
|
|
||
| Everyone in an organization used to draw from one pool of credits with no per-person guard rails β one over-eager script could spend the whole team's budget. This roundup is about per-member control: budgets, a scoped developer role, clearer billing, and steadier streams. | ||
|
|
||
| ## One Team Page for People and Spend | ||
|
|
||
| **Team** and **Members** are now a single page. **Organization β Team** handles invites, roles, and budgets, and β for admins on the **Enterprise plan** β adds per-member cost, tokens, requests, and API-key columns. Open a member's detail page for their spend against each cap, a usage-over-time chart by model, and their top models and providers. An info card next to the role picker spells out exactly what Owner, Admin, and Developer can do. | ||
|
|
||
| ## Per-Member Budgets | ||
|
|
||
| Give each member their own guard rails from **Manage budget** on any Team row: | ||
|
|
||
| | Limit | What it caps | | ||
| | ----------------------- | ------------------------------------------------ | | ||
| | **Max active API keys** | How many keys the member can have active at once | | ||
| | **Total spend limit** | Lifetime spend across all of the member's keys | | ||
| | **Period spend limit** | Spend per rolling hour, day, week, or month | | ||
|
|
||
| The gateway enforces spend caps at request time across chat, embeddings, OCR, speech, and video β an over-budget request is rejected with `403` ("Member has reached their total spend budget.") before it reaches a provider, and key creation past the cap fails with a clear `400`. You can also set org-wide **default developer limits** that cover every developer without a personal override, and each member sees their remaining allowance on their own dashboard. Budgets are available to admins on every plan. | ||
|
|
||
| ## Project-Scoped Developer Role | ||
|
|
||
| The new **Developer** role grants access to exactly the projects you pick β nothing else. Developers get a minimal dashboard with their own usage and API keys, and the rest of the org UI stays out of reach. Pair it with default developer limits and a contractor is productive, and capped, in one invite. Available on the **Enterprise plan**. | ||
|
|
||
| ## PDF Invoices for Every Purchase | ||
|
|
||
| Every completed charge in **Organization β Transactions** now has a download button β an **Invoice** for charges, a **Credit note** for refunds: | ||
|
|
||
| ``` | ||
| GET /orgs/{orgId}/transactions/{transactionId}/invoice | ||
| ``` | ||
|
Comment on lines
+40
to
+42
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. π Maintainability & Code Quality | π‘ Minor | β‘ Quick win Label the request examples so markdownlint stays clean. Both endpoint fences are unlabeled, which triggers MD040. Please add a language tag ( β»οΈ Proposed fix-```
+```http
GET /orgs/{orgId}/transactions/{transactionId}/invoice
-```
+```
-```
+```http
GET /analytics/activity?organizationId=<org>&groupBy=model&timezone=Europe/Paris
-```
+```Also applies to: 50-52 π§° Toolsπͺ markdownlint-cli2 (0.22.1)[warning] 40-40: Fenced code blocks should have a language specified (MD040, fenced-code-language) π€ Prompt for AI AgentsSource: Linters/SAST tools |
||
|
|
||
| The same download is available for DevPass invoices and from the chat billing history. | ||
|
|
||
| ## Analytics in Your Timezone | ||
|
|
||
| Daily charts used to bucket by UTC midnight, so late-evening traffic landed on "tomorrow". Every analytics endpoint now accepts an IANA `timezone` parameter and buckets by your local day β the dashboard passes your browser's timezone automatically, so charts line up with your wall clock: | ||
|
|
||
| ``` | ||
| GET /analytics/activity?organizationId=<org>&groupBy=model&timezone=Europe/Paris | ||
| ``` | ||
|
|
||
| ## Key Usage and Reset Times in the API | ||
|
|
||
| The Master Keys API and the payments SDK's `getBalance()` now report consumed usage next to the configured limits β including when the current window resets β so platforms can show end users exactly how much headroom a key has left: | ||
|
|
||
| ```json | ||
| { | ||
| "usageLimit": "100", | ||
| "usage": "42.13", | ||
| "periodUsageLimit": "10", | ||
| "currentPeriodUsage": "3.20", | ||
| "currentPeriodResetAt": "2026-07-04T00:00:00.000Z" | ||
| } | ||
| ``` | ||
|
|
||
| ## Streams That Don't Drop | ||
|
|
||
| Long streaming responses β extended thinking especially β could sit quiet long enough for a proxy or client to time out. The gateway now sends an SSE keepalive comment (`: ping`) every 15 seconds on the Anthropic and Responses endpoints, and a mid-stream failure ends with a proper terminal event (`error` + `message_stop`, or `response.failed`) instead of a silently truncated response. | ||
|
|
||
| ## New Models | ||
|
|
||
| - **Claude Sonnet 5** β a 1M-token context window, adaptive reasoning, and 128k output, at introductory pricing of **$2 / $10 per million input/output tokens through August 31** (then $3 / $15). Available via Anthropic, Google Vertex, and AWS Bedrock. | ||
| - **Claude Fable 5 is back** β reactivated on Anthropic and AWS Bedrock (global and US regions) after [June's suspension](https://llmgateway.io/blog/claude-fable-5-access-suspended). | ||
| - **Gemini 3.1 Flash Lite Image** β Google's smallest image generation and editing model, built for at-scale usage, on AI Studio and Vertex. | ||
| - **Gemma 4 31B on Cerebras** β a new high-speed mapping at $0.99 / $1.49 per million tokens. | ||
|
|
||
| ## Product Polish | ||
|
|
||
| - **Support widget redesign** β suggested starter questions, one-click "Talk to a human" escalation with email follow-up, and conversation ratings. | ||
| - **DevPass Code on npm** β the [terminal coding agent](https://llmgateway.io/blog/devpass-code) now installs with `npm i -g devpass-code`. | ||
|
|
||
| --- | ||
|
|
||
| **[Team & budgets docs β](https://docs.llmgateway.io/learn/team)** | **[Open your dashboard β](https://llmgateway.io/dashboard)** | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,76 @@ | ||
| --- | ||
| id: devpass-code | ||
| slug: devpass-code | ||
| title: DevPass Code Integration | ||
| description: Set up DevPass Code, the open-source terminal coding agent built for LLM Gateway. Install from npm, log in once from your browser, and code with every model on the gateway. | ||
| date: 2026-07-03 | ||
| --- | ||
|
|
||
| DevPass Code is an open-source terminal coding agent that talks only to LLM Gateway. It's a fork of opencode (MIT) trimmed down to a single upstream: one browser login, roughly 190 text models, and no per-provider API keys to juggle. Every request is tagged with `x-source: devpass-code`, so usage is attributed correctly in your dashboard and on your DevPass plan. | ||
|
|
||
| ## Install | ||
|
|
||
| Install DevPass Code globally from npm: | ||
|
|
||
| ```bash | ||
| npm i -g devpass-code | ||
| ``` | ||
|
|
||
| Or with Homebrew: | ||
|
|
||
| ```bash | ||
| brew install theopenco/tap/devpass-code | ||
| ``` | ||
|
|
||
| Other options: an install script (`curl -fsSL https://raw.githubusercontent.com/theopenco/devpass-code/main/install | bash`), an AUR package (`devpass-code-bin`), a Docker image (`ghcr.io/theopenco/devpass-code`), and Windows binaries on [GitHub releases](https://github.com/theopenco/devpass-code/releases). | ||
|
|
||
| ## Setup | ||
|
|
||
| ### Step 1: Start the login flow | ||
|
|
||
| DevPass Code supports one-click browser login, just like Claude Code: | ||
|
|
||
| ```bash | ||
| devpass-code auth login | ||
| ``` | ||
|
|
||
| ### Step 2: Pick a provider | ||
|
|
||
| Choose how your usage is billed. Both providers hit `https://api.llmgateway.io/v1` and expose the same models: | ||
|
|
||
| | Provider | Billing | | ||
| | ----------------------- | --------------------------------------------------------------------------- | | ||
| | **LLM Gateway** | Pay-as-you-go with credits or your own API key | | ||
| | **LLM Gateway DevPass** | The [DevPass](/code) coding subscription β billing is handled automatically | | ||
|
|
||
| ### Step 3: Log in with your browser | ||
|
|
||
| Select **"Log in with browser."** DevPass Code opens [llmgateway.io/connect/cli](https://llmgateway.io/connect/cli) and starts a local loopback server. Approve the request in the browser, and the API key is delivered straight back to your machine β nothing to copy or paste. Credentials are saved to `~/.local/share/devpass-code/auth.json`. | ||
|
|
||
| Prefer to paste a key? Choose **"Paste an API key"** instead and use a key from your [dashboard](https://llmgateway.io/dashboard), or set the `LLMGATEWAY_API_KEY` environment variable to skip the prompt entirely. | ||
|
|
||
| ### Step 4: Start coding | ||
|
|
||
| Launch the TUI in any project directory: | ||
|
|
||
| ```bash | ||
| devpass-code | ||
| ``` | ||
|
|
||
| Every text model on the gateway shows up in the model picker, and switching is a keystroke β no config change. All requests and their costs appear in your [dashboard](https://llmgateway.io/dashboard). | ||
|
|
||
| ## Configuration | ||
|
|
||
| - **Config file** β Place a `devpass-code.json` in your project (or global config directory) to customize models and behavior. | ||
| - **`LLMGATEWAY_API_KEY`** β Provide your LLM Gateway API key without running the login flow. | ||
| - **`DEVPASS_APP_URL`** β Override the app URL used for browser login (defaults to `https://llmgateway.io`). | ||
|
|
||
| ## Why Use DevPass Code | ||
|
|
||
| - **~190 text models** β Claude, GPT, Gemini, Grok, DeepSeek, and more, all through one endpoint | ||
| - **One-click login** β Approve in the browser, key delivered automatically | ||
| - **DevPass billing** β A [DevPass subscription](/code) is applied automatically, with usage attributed per agent | ||
| - **Cost tracking** β See exactly what each coding session costs | ||
| - **Open source** β MIT licensed, on [GitHub](https://github.com/theopenco/devpass-code) | ||
|
|
||
| Read the [announcement post](/blog/devpass-code) for the full story, or the [docs guide](https://docs.llmgateway.io/guides/devpass-code) for reference details. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
π Maintainability & Code Quality | π‘ Minor | β‘ Quick win
Heading still says "Members Table" despite wording change to "Team" page.
Lines 10 and 22 were updated to reference the Team page, but the section heading on Line 20 still reads "Members Table," leaving inconsistent terminology in the same doc.
π Proposed fix
π Committable suggestion
π€ Prompt for AI Agents