NoeFabris/opencode-antigravity-authPublicArchived

Enable Opencode to authenticate against Antigravity (Google's IDE) via OAuth so you can use Antigravity rate limits and access models like gemini-3-pro and claude-opus-4-5-thinking with your Google credentials.

AI summary: A plug-and-play authentication microservice with built-in advanced security features.

Stars
11K
Forks
75
Watchers
33
Open issues
37
Open PRs
6
Contributors
~38
Commits
693
Branches
56

TypeScriptMITCreated Dec 9, 2025Last push 1mo agoLatest release v1.6.0+-9 stars this week+-13 this month

Star history

since Dec 7, 2025
05K10KDec 2025Feb 2026May 2026Aug 2026
11K stars as of Aug 7, 2026, tracked back to Dec 7, 2025. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulAugMonWedFri2025-08-09: 0 commits2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 1 commit2025-12-10: 9 commits2025-12-11: 7 commits2025-12-12: 4 commits2025-12-13: 5 commits2025-12-14: 0 commits2025-12-15: 1 commit2025-12-16: 2 commits2025-12-17: 31 commits2025-12-18: 6 commits2025-12-19: 1 commit2025-12-20: 0 commits2025-12-21: 10 commits2025-12-22: 5 commits2025-12-23: 5 commits2025-12-24: 5 commits2025-12-25: 0 commits2025-12-26: 33 commits2025-12-27: 5 commits2025-12-28: 11 commits2025-12-29: 4 commits2025-12-30: 5 commits2025-12-31: 8 commits2026-01-01: 8 commits2026-01-02: 3 commits2026-01-03: 0 commits2026-01-04: 5 commits2026-01-05: 4 commits2026-01-06: 10 commits2026-01-07: 5 commits2026-01-08: 11 commits2026-01-09: 1 commit2026-01-10: 5 commits2026-01-11: 4 commits2026-01-12: 3 commits2026-01-13: 2 commits2026-01-14: 18 commits2026-01-15: 2 commits2026-01-16: 26 commits2026-01-17: 8 commits2026-01-18: 1 commit2026-01-19: 12 commits2026-01-20: 16 commits2026-01-21: 12 commits2026-01-22: 37 commits2026-01-23: 2 commits2026-01-24: 5 commits2026-01-25: 1 commit2026-01-26: 1 commit2026-01-27: 2 commits2026-01-28: 14 commits2026-01-29: 14 commits2026-01-30: 10 commits2026-01-31: 3 commits2026-02-01: 2 commits2026-02-02: 0 commits2026-02-03: 1 commit2026-02-04: 9 commits2026-02-05: 14 commits2026-02-06: 15 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 4 commits2026-02-10: 9 commits2026-02-11: 10 commits2026-02-12: 1 commit2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 10 commits2026-02-19: 10 commits2026-02-20: 11 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 1 commit2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 1 commit2026-04-04: 0 commits2026-04-05: 1 commit2026-04-06: 0 commits2026-04-07: 1 commit2026-04-08: 1 commit2026-04-09: 1 commit2026-04-10: 0 commits2026-04-11: 1 commit2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 1 commit2026-04-15: 0 commits2026-04-16: 1 commit2026-04-17: 0 commits2026-04-18: 1 commit2026-04-19: 2 commits2026-04-20: 0 commits2026-04-21: 1 commit2026-04-22: 0 commits2026-04-23: 1 commit2026-04-24: 0 commits2026-04-25: 1 commit2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 3 commits2026-04-29: 10 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 2 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits
529 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    11,027 stars

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

What opencode-antigravity-auth does

This project provides a robust, standalone authentication service designed for modern microservice architectures. It handles everything from JWT issuance and validation to OAuth2 integrations and advanced rate-limiting. It aims to reduce the boilerplate of setting up secure auth by providing a highly configurable, secure-by-default Docker container.

Backend developers and DevOps engineers looking for a reliable, easily deployable authentication service.

  • Standalone Microservice: Deploys independently and integrates via standard HTTP APIs.
  • Multi-Provider OAuth: Built-in support for Google, GitHub, and other major identity providers.
  • Advanced Rate Limiting: Protects against brute-force attacks out of the box.
  • JWT Management: Handles secure generation, rotation, and revocation of tokens.
  • Secure by Default: Pre-configured with modern cryptographic standards and best practices.

Where teams use it

Microservice Auth

Centralizing authentication logic for a cluster of independent services.

Rapid Prototyping

Dropping in a complete auth solution for a new startup project.

Legacy System Upgrade

Modernizing authentication for an older app by migrating to this external service.

B2B SaaS Security

Handling complex tenant-based authentication requirements.

Getting started: docker pull opencode-antigravity-auth

README

main branch

Antigravity + Gemini CLI OAuth Plugin for Opencode

npm version npm beta npm downloads License: MIT X (Twitter)

GitAds Sponsored

Sponsored by GitAds

Enable Opencode to authenticate against Antigravity (Google's IDE) via OAuth so you can use Antigravity rate limits and access models like gemini-3.1-pro and claude-opus-4-6-thinking with your Google credentials.

What You Get

  • Claude Opus 4.6, Sonnet 4.6 and Gemini 3.1 Pro/Flash via Google OAuth
  • Multi-account support — add multiple Google accounts, auto-rotates when rate-limited
  • Dual quota system — access both Antigravity and Gemini CLI quotas from one plugin
  • Thinking models — extended thinking for Claude and Gemini 3 with configurable budgets
  • Google Search grounding — enable web search for Gemini models (auto or always-on)
  • Auto-recovery — handles session errors and tool failures automatically
  • Plugin compatible — works alongside other OpenCode plugins (oh-my-opencode, dcp, etc.)

⚠️ Terms of Service Warning — Read Before Installing

[!CAUTION] Using this plugin (and any proxy for Antigravity) violates Google's Terms of Service. A number of users have reported their Google accounts being banned or shadow-banned (restricted access without explicit notification).

By using this plugin, you acknowledge:

  • This is an unofficial tool not endorsed by Google
  • Your account may be suspended or permanently banned
  • You assume all risks associated with using this plugin

Installation

For Humans

Option A: Let an LLM do it

Paste this into any LLM agent (Claude Code, OpenCode, Cursor, etc.):

Install the opencode-antigravity-auth plugin and add the Antigravity model definitions to ~/.config/opencode/opencode.json by following: https://raw.githubusercontent.com/NoeFabris/opencode-antigravity-auth/dev/README.md

Option B: Manual setup

  1. Add the plugin to ~/.config/opencode/opencode.json:

    {
      "plugin": ["opencode-antigravity-auth@latest"]
    }

    Want bleeding-edge features? Use opencode-antigravity-auth@beta instead.

  2. Login with your Google account:

    opencode auth login
  3. Add models — choose one:

    • Run opencode auth login → Google → OAuth with Google (Antigravity) → select "Configure models in opencode.json" (auto-configures all models)
    • Or manually copy the full configuration below
  4. Use it:

    opencode run "Hello" --model=google/antigravity-claude-opus-4-6-thinking --variant=max
For LLM Agents

Step-by-Step Instructions

  1. Edit the OpenCode configuration file at ~/.config/opencode/opencode.json

    Note: This path works on all platforms. On Windows, ~ resolves to your user home directory (e.g., C:\Users\YourName).

  2. Add the plugin to the plugin array

  3. Add the model definitions from the Full models configuration section

  4. Set provider to "google" and choose a model

Verification

opencode run "Hello" --model=google/antigravity-claude-opus-4-6-thinking --variant=max

Models

Model Reference

Antigravity quota (default routing for Claude and Gemini):

Model Variants Notes
antigravity-gemini-3-pro low, high Gemini 3 Pro with thinking
antigravity-gemini-3.1-pro low, high Gemini 3.1 Pro with thinking (rollout-dependent)
antigravity-gemini-3-flash minimal, low, medium, high Gemini 3 Flash with thinking
antigravity-claude-sonnet-4-6 Claude Sonnet 4.6
antigravity-claude-opus-4-6-thinking low, max Claude Opus 4.6 with extended thinking

Gemini CLI quota (separate from Antigravity; used when cli_first is true or as fallback):

Model Notes
gemini-2.5-flash Gemini 2.5 Flash
gemini-2.5-pro Gemini 2.5 Pro
gemini-3-flash-preview Gemini 3 Flash (preview)
gemini-3-pro-preview Gemini 3 Pro (preview)
gemini-3.1-pro-preview Gemini 3.1 Pro (preview, rollout-dependent)
gemini-3.1-pro-preview-customtools Gemini 3.1 Pro Preview Custom Tools (preview, rollout-dependent)

Routing Behavior:

  • Antigravity-first (default): Gemini models use Antigravity quota across accounts.
  • CLI-first (cli_first: true): Gemini models use Gemini CLI quota first.
  • When a Gemini quota pool is exhausted, the plugin automatically falls back to the other pool.
  • Claude and image models always use Antigravity. Model names are automatically transformed for the target API (e.g., antigravity-gemini-3-flashgemini-3-flash-preview for CLI).

Using variants:

opencode run "Hello" --model=google/antigravity-claude-opus-4-6-thinking --variant=max

For details on variant configuration and thinking levels, see docs/MODEL-VARIANTS.md.

Full models configuration (copy-paste ready)

Add this to your ~/.config/opencode/opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "plugin": ["opencode-antigravity-auth@latest"],
  "provider": {
    "google": {
      "models": {
        "antigravity-gemini-3-pro": {
          "name": "Gemini 3 Pro (Antigravity)",
          "limit": { "context": 1048576, "output": 65535 },
          "modalities": { "input": ["text", "image", "pdf"], "output": ["text"] },
          "variants": {
            "low": { "thinkingLevel": "low" },
            "high": { "thinkingLevel": "high" }
          }
        },
        "antigravity-gemini-3.1-pro": {
          "name": "Gemini 3.1 Pro (Antigravity)",
          "limit": { "context": 1048576, "output": 65535 },
          "modalities": { "input": ["text", "image", "pdf"], "output": ["text"] },
          "variants": {
            "low": { "thinkingLevel": "low" },
            "high": { "thinkingLevel": "high" }
          }
        },
        "antigravity-gemini-3-flash": {
          "name": "Gemini 3 Flash (Antigravity)",
          "limit": { "context": 1048576, "output": 65536 },
          "modalities": { "input": ["text", "image", "pdf"], "output": ["text"] },
          "variants": {
            "minimal": { "thinkingLevel": "minimal" },
            "low": { "thinkingLevel": "low" },
            "medium": { "thinkingLevel": "medium" },
            "high": { "thinkingLevel": "high" }
          }
        },
        "antigravity-claude-sonnet-4-6": {
          "name": "Claude Sonnet 4.6 (Antigravity)",
          "limit": { "context": 200000, "output": 64000 },
          "modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
        },
        "antigravity-claude-opus-4-6-thinking": {
          "name": "Claude Opus 4.6 Thinking (Antigravity)",
          "limit": { "context": 200000, "output": 64000 },
          "modalities": { "input": ["text", "image", "pdf"], "output": ["text"] },
          "variants": {
            "low": { "thinkingConfig": { "thinkingBudget": 8192 } },
            "max": { "thinkingConfig": { "thinkingBudget": 32768 } }
          }
        },
        "gemini-2.5-flash": {
          "name": "Gemini 2.5 Flash (Gemini CLI)",
          "limit": { "context": 1048576, "output": 65536 },
          "modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
        },
        "gemini-2.5-pro": {
          "name": "Gemini 2.5 Pro (Gemini CLI)",
          "limit": { "context": 1048576, "output": 65536 },
          "modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
        },
        "gemini-3-flash-preview": {
          "name": "Gemini 3 Flash Preview (Gemini CLI)",
          "limit": { "context": 1048576, "output": 65536 },
          "modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
        },
        "gemini-3-pro-preview": {
          "name": "Gemini 3 Pro Preview (Gemini CLI)",
          "limit": { "context": 1048576, "output": 65535 },
          "modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
        },
        "gemini-3.1-pro-preview": {
          "name": "Gemini 3.1 Pro Preview (Gemini CLI)",
          "limit": { "context": 1048576, "output": 65535 },
          "modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
        },
        "gemini-3.1-pro-preview-customtools": {
          "name": "Gemini 3.1 Pro Preview Custom Tools (Gemini CLI)",
          "limit": { "context": 1048576, "output": 65535 },
          "modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
        }
      }
    }
  }
}

Backward Compatibility: Legacy model names with antigravity- prefix (e.g., antigravity-gemini-3-flash) still work. The plugin automatically handles model name transformation for both Antigravity and Gemini CLI APIs.


Multi-Account Setup

Add multiple Google accounts for a higher combined quota. The plugin automatically rotates between accounts when one is rate-limited.

opencode auth login  # Run again to add more accounts

Account management options (via opencode auth login):

  • Configure models — Auto-configure all plugin models in opencode.json
  • Check quotas — View remaining API quota for each account
  • Manage accounts — Enable/disable specific accounts for rotation

For details on load balancing, dual quota pools, and account storage, see docs/MULTI-ACCOUNT.md.


Troubleshooting

Quick Reset: Most issues can be resolved by deleting ~/.config/opencode/antigravity-accounts.json and running opencode auth login again.

Configuration Path (All Platforms)

OpenCode uses ~/.config/opencode/ on all platforms including Windows.

File Path
Main config ~/.config/opencode/opencode.json
Accounts ~/.config/opencode/antigravity-accounts.json
Plugin config ~/.config/opencode/antigravity.json
Debug logs ~/.config/opencode/antigravity-logs/

Windows users: ~ resolves to your user home directory (e.g., C:\Users\YourName). Do NOT use %APPDATA%.

Custom path: Set OPENCODE_CONFIG_DIR environment variable to use a custom location.

Windows migration: If upgrading from plugin v1.3.x or earlier, the plugin will automatically find your existing config in %APPDATA%\opencode\ and use it. New installations use ~/.config/opencode/.


Multi-Account Auth Issues

If you encounter authentication issues with multiple accounts:

  1. Delete the accounts file:
    rm ~/.config/opencode/antigravity-accounts.json
  2. Re-authenticate:
    opencode auth login

403 Permission Denied (rising-fact-p41fc)

Error:

Permission 'cloudaicompanion.companions.generateChat' denied on resource 
'//cloudaicompanion.googleapis.com/projects/rising-fact-p41fc/locations/global'

Cause: Plugin falls back to a default project ID when no valid project is found. This works for Antigravity but fails for Gemini CLI models.

Solution:

  1. Go to Google Cloud Console
  2. Create or select a project
  3. Enable the Gemini for Google Cloud API (cloudaicompanion.googleapis.com)
  4. Add projectId to your accounts file:
    {
      "accounts": [
        {
          "email": "your@email.com",
          "refreshToken": "...",
          "projectId": "your-project-id"
        }
      ]
    }

Note: Do this for each account in a multi-account setup.


Gemini Model Not Found

Add this to your google provider config:

{
  "provider": {
    "google": {
      "npm": "@ai-sdk/google",
      "models": { ... }
    }
  }
}

Gemini 3 Models 400 Error ("Unknown name 'parameters'")

Error:

Invalid JSON payload received. Unknown name "parameters" at 'request.tools[0]'

Causes:

  • Tool schema incompatibility with Gemini's strict protobuf validation
  • MCP servers with malformed schemas
  • Plugin version regression

Solutions:

  1. Update to latest beta:

    { "plugin": ["opencode-antigravity-auth@beta"] }
  2. Disable MCP servers one-by-one to find the problematic one

  3. Add npm override:

    { "provider": { "google": { "npm": "@ai-sdk/google" } } }

MCP Servers Causing Errors

Some MCP servers have schemas incompatible with Antigravity's strict JSON format.

Common symptom:

Invalid function name must start with a letter or underscore

Sometimes it shows up as:

GenerateContentRequest.tools[0].function_declarations[12].name: Invalid function name must start with a letter or underscore

This usually means an MCP tool name starts with a number (for example, a 1mcp key like 1mcp_*). Rename the MCP key to start with a letter (e.g., gw) or disable that MCP entry for Antigravity models.

Diagnosis:

  1. Disable all MCP servers in your config
  2. Enable one-by-one until error reappears
  3. Report the specific MCP in a GitHub issue

"All Accounts Rate-Limited" (But Quota Available)

Cause: Cascade bug in clearExpiredRateLimits() in hybrid mode (fixed in recent beta).

Solutions:

  1. Update to latest beta version
  2. If persists, delete accounts file and re-authenticate
  3. Try switching account_selection_strategy to "sticky" in antigravity.json

Session Recovery

If you encounter errors during a session:

  1. Type continue to trigger the recovery mechanism
  2. If blocked, use /undo to revert to pre-error state
  3. Retry the operation

Using with Oh-My-OpenCode

Important: Disable the built-in Google auth to prevent conflicts:

// ~/.config/opencode/oh-my-opencode.json
{
  "google_auth": false,
  "agents": {
    "frontend-ui-ux-engineer": { "model": "google/antigravity-gemini-3-pro" },
    "document-writer": { "model": "google/antigravity-gemini-3-flash" }
  }
}

Infinite .tmp Files Created

Cause: When account is rate-limited and plugin retries infinitely, it creates many temp files.

Workaround:

  1. Stop OpenCode
  2. Clean up: rm ~/.config/opencode/*.tmp
  3. Add more accounts or wait for rate limit to expire

OAuth Callback Issues

Safari OAuth Callback Fails (macOS)

Symptoms:

  • "fail to authorize" after successful Google login
  • Safari shows "Safari can't open the page"

Cause: Safari's "HTTPS-Only Mode" blocks http://localhost callback.

Solutions:

  1. Use Chrome or Firefox (easiest): Copy the OAuth URL and paste into a different browser.

  2. Disable HTTPS-Only Mode temporarily:

    • Safari > Settings (⌘,) > Privacy
    • Uncheck "Enable HTTPS-Only Mode"
    • Run opencode auth login
    • Re-enable after authentication
Port Conflict (Address Already in Use)

macOS / Linux:

# Find process using the port
lsof -i :51121

# Kill if stale
kill -9 <PID>

# Retry
opencode auth login

Windows (PowerShell):

netstat -ano | findstr :51121
taskkill /PID <PID> /F
opencode auth login
Docker / WSL2 / Remote Development

OAuth callback requires browser to reach localhost on the machine running OpenCode.

WSL2:

  • Use VS Code's port forwarding, or
  • Configure Windows → WSL port forwarding

SSH / Remote:

ssh -L 51121:localhost:51121 user@remote

Docker / Containers:

  • OAuth with localhost redirect doesn't work in containers
  • Wait 30s for manual URL flow, or use SSH port forwarding

Configuration Key Typo: plugin not plugins

The correct key is plugin (singular):

{
  "plugin": ["opencode-antigravity-auth@beta"]
}

Not "plugins" (will cause "Unrecognized key" error).


Migrating Accounts Between Machines

When copying antigravity-accounts.json to a new machine:

  1. Ensure the plugin is installed: "plugin": ["opencode-antigravity-auth@beta"]
  2. Copy ~/.config/opencode/antigravity-accounts.json
  3. If you get "API key missing" error, the refresh token may be invalid — re-authenticate

Known Plugin Interactions

For details on load balancing, dual quota pools, and account storage, see docs/MULTI-ACCOUNT.md.


Plugin Compatibility

@tarquinen/opencode-dcp

DCP creates synthetic assistant messages that lack thinking blocks. List this plugin BEFORE DCP:

{
  "plugin": [
    "opencode-antigravity-auth@latest",
    "@tarquinen/opencode-dcp@latest"
  ]
}

oh-my-opencode

Disable built-in auth and override agent models in oh-my-opencode.json:

{
  "google_auth": false,
  "agents": {
    "frontend-ui-ux-engineer": { "model": "google/antigravity-gemini-3-pro" },
    "document-writer": { "model": "google/antigravity-gemini-3-flash" },
    "multimodal-looker": { "model": "google/antigravity-gemini-3-flash" }
  }
}

Tip: When spawning parallel subagents, enable pid_offset_enabled: true in antigravity.json to distribute sessions across accounts.

Plugins you don't need

  • gemini-auth plugins — Not needed. This plugin handles all Google OAuth.

Configuration

Create ~/.config/opencode/antigravity.json for optional settings:

{
  "$schema": "https://raw.githubusercontent.com/NoeFabris/opencode-antigravity-auth/main/assets/antigravity.schema.json"
}

Most users don't need to configure anything — defaults work well.

Model Behavior

Option Default What it does
keep_thinking false Preserve Claude's thinking across turns. Warning: enabling may degrade model stability.
session_recovery true Auto-recover from tool errors
cli_first false Route Gemini models to Gemini CLI first (Claude and image models stay on Antigravity).

Account Rotation

Your Setup Recommended Config
1 account "account_selection_strategy": "sticky"
2-5 accounts Default ("hybrid") works great
5+ accounts "account_selection_strategy": "round-robin"
Parallel agents Add "pid_offset_enabled": true

Quota Protection

Option Default What it does
soft_quota_threshold_percent 90 Skip account when quota usage exceeds this percentage. Prevents Google from penalizing accounts that fully exhaust quota. Set to 100 to disable.
quota_refresh_interval_minutes 15 Background quota refresh interval. After successful API requests, refreshes quota cache if older than this interval. Set to 0 to disable.
soft_quota_cache_ttl_minutes "auto" How long quota cache is considered fresh. "auto" = max(2 × refresh interval, 10 minutes). Set a number (1-120) for fixed TTL.

How it works: Quota cache is refreshed automatically after API requests (when older than quota_refresh_interval_minutes) and manually via "Check quotas" in opencode auth login. The threshold check uses soft_quota_cache_ttl_minutes to determine cache freshness - if cache is older, the account is considered "unknown" and allowed (fail-open). When ALL accounts exceed the threshold, the plugin waits for the earliest quota reset time (like rate limit behavior). If wait time exceeds max_rate_limit_wait_seconds, it errors immediately.

Rate Limit Scheduling

Control how the plugin handles rate limits:

Option Default What it does
scheduling_mode "cache_first" "cache_first" = wait for same account (preserves prompt cache), "balance" = switch immediately, "performance_first" = round-robin
max_cache_first_wait_seconds 60 Max seconds to wait in cache_first mode before switching accounts
failure_ttl_seconds 3600 Reset failure count after this many seconds (prevents old failures from permanently penalizing accounts)

When to use each mode:

  • cache_first (default): Best for long conversations. Waits for the same account to recover, preserving your prompt cache.
  • balance: Best for quick tasks. Switches accounts immediately when rate-limited for maximum availability.
  • performance_first: Best for many short requests. Distributes load evenly across all accounts.

App Behavior

Option Default What it does
quiet_mode false Hide toast notifications
debug false Enable debug file logging (~/.config/opencode/antigravity-logs/)
debug_tui false Show debug logs in the TUI log panel (independent from debug)
auto_update true Auto-update plugin

For all options, see docs/CONFIGURATION.md.

Environment variables:

OPENCODE_CONFIG_DIR=/path/to/config opencode  # Custom config directory
OPENCODE_ANTIGRAVITY_DEBUG=1 opencode         # Enable debug file logging
OPENCODE_ANTIGRAVITY_DEBUG=2 opencode         # Verbose debug file logging
OPENCODE_ANTIGRAVITY_DEBUG_TUI=1 opencode     # Enable TUI log panel debug output

Troubleshooting

See the full Troubleshooting Guide for solutions to common issues including:

  • Auth problems and token refresh
  • "Model not found" errors
  • Session recovery
  • Gemini CLI permission errors
  • Safari OAuth issues
  • Plugin compatibility
  • Migration guides

Documentation


Support

If this plugin saves you time, consider supporting its development:

ko-fi


Credits

License

MIT License. See LICENSE for details.

Legal

Intended Use

  • Personal / internal development only
  • Respect internal quotas and data handling policies
  • Not for production services or bypassing intended limits

Warning

By using this plugin, you acknowledge:

  • Terms of Service risk — This approach may violate ToS of AI model providers
  • Account risk — Providers may suspend or ban accounts
  • No guarantees — APIs may change without notice
  • Assumption of risk — You assume all legal, financial, and technical risks

Disclaimer

  • Not affiliated with Google. This is an independent open-source project.
  • "Antigravity", "Gemini", "Google Cloud", and "Google" are trademarks of Google LLC.
View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 43

Releases and announcements

91 total
  1. v1.6.5-beta.0 (Beta)v1.6.5-beta.0Feb 23, 2026pre-release

    ## Beta Release v1.6.5-beta.0 ⚠️ **This is a beta release for testing. Use at your own risk.** Base version: `1.6.5` Compare changes: https://github.com/NoeFabris/opencode-antigravity-auth/compare/v1.6.0...v1.6.5-beta.0 - feat(auth): add Gemini CLI OAuth flow for Code Assist provisioning (610bbcc) - fix: pause after single account verification before returning to menu (d85bac3) ### Install Beta Update your `opencode.json`: ```json { "plugin": ["opencode-antigravity-auth@1.6.5-beta.0"] } ``` Or use the beta tag (always latest beta): ```json { "plugin": ["opencode-antigravity-auth@beta"] } ``` Clear cache if stuck on old version: ```bash rm -rf ~/.cache/opencode/node_modules ~/.cache/opencode/bun.lock ```

  2. v1.6.0v1.6.0Feb 20, 2026

    ## v1.6.0 This release contains PR #497 (merged to `main`) and focuses on request-path stability for Claude/Gemini, logging clarity, and schema/docs/test alignment. ### Fixed Issues - **#397** - Gemini tool-call payload handling now enforces valid `thought_signature` behavior for `functionCall` parts, preventing `400 INVALID_ARGUMENT` in mixed/parallel call turns. - **#454** - Request sanitization now removes empty/invalid `contents.parts` entries and invalid `systemInstruction.parts` before forwarding. - **#444** - Response transform fallback now uses cloned responses and preserves recovery signaling, eliminating `Body already used` failures. ### Improvements - **#368 (tackled)** - Claude thinking/signature handling now replaces foreign signatures with sentinels and tightens thinking-order classification to reduce false-positive recovery triggers. - **Related: #453** - `x-goog-user-project` is now stripped across Antigravity and Gemini CLI request styles, reducing project/license conflict paths. ### Changed - `debug` now controls file logging only; `debug_tui` independently controls TUI panel logging. - Added optional `claude_prompt_auto_caching` (`cache_control: { type: "ephe

  3. v1.6.0-beta.2 (Beta)v1.6.0-beta.2Feb 20, 2026pre-release

    ## Beta Release v1.6.0-beta.2 This beta includes PR #497 (merged to `main`) and focuses on request-path stability for Claude/Gemini, clearer debug routing, and full schema/docs/test alignment. ### Fixed - Closes #397 - Gemini tool-call payload handling now enforces valid `thought_signature` behavior for `functionCall` parts, preventing `400 INVALID_ARGUMENT` in mixed/parallel call turns. - Closes #454 - Request sanitization now removes empty/invalid `contents.parts` entries and invalid `systemInstruction.parts` before forwarding. - Closes #444 - Response transform fallback now uses cloned responses and preserves recovery signaling, eliminating `Body already used` failures. ### Improved - Tackles #368 - Claude thinking/signature handling now replaces foreign signatures with sentinels and tightens thinking-order classification to reduce false-positive recovery triggers. - Related: #453 - `x-goog-user-project` is now stripped across Antigravity and Gemini CLI request styles, which may reduce project/license conflict paths. ### Changed - `debug` now controls file logging only; `debug_tui` independently controls TUI panel logging. - Added optional `claude_prompt_auto_caching` (`c

  4. v1.6.0-beta.1 (Beta)v1.6.0-beta.1Feb 20, 2026pre-release

    ## Beta Release v1.6.0-beta.1 ⚠️ **This is a beta release for testing. Use at your own risk.** Base version: `1.6.0` Compare changes: https://github.com/NoeFabris/opencode-antigravity-auth/compare/v1.5.5...v1.6.0-beta.1 - hive(05-full-verification-and-doc-alignment): Brought this task branch up to dependency state by (8ab862a) - hive(04-remove-repetitive-logging-code-with-explicit-parity-rules): Integrated task dependencies first (cherry-picked (02c0b93) - hive(03-decouple-debug-gates-and-update-tests-to-target-behavior): Updated `src/plugin/debug.ts` to decouple sink sta (79516e1) - hive(02-introduce-shared-internal-logging-utilities-without-behavior-changes): Added shared internal helpers in `src/plugin/loggi (7b2d8e3) - hive(01-add-baseline-tests-for-current-behavior--harness): Added baseline coverage in `src/plugin/debug.test. (6af5db9) - hive(01-add-baseline-tests-for-current-behavior--harness): Added baseline coverage in `src/plugin/debug.test. (f6ef3e9) - feat(debug): add log file cleanup functionality to manage old logs (a9be90d) - fix: update version to 1.6.0-beta in package.json (148ab72) - feat: add debug_tui configuration option and resolve thinking issues (bcd2eb8)

  5. v1.6.0-beta.0 (Beta)v1.6.0-beta.0Feb 19, 2026pre-release

    ## Beta Release v1.6.0-beta.0 ⚠️ **This is a beta release for testing. Use at your own risk.** Base version: `1.6.0` Compare changes: https://github.com/NoeFabris/opencode-antigravity-auth/compare/v1.5.5...v1.6.0-beta.0 - fix: update version to 1.6.0-beta in package.json (148ab72) - feat: add debug_tui configuration option and resolve thinking issues (bcd2eb8) - fix(request): copy thoughtSignature to all functionCall parts in the same turn to satisfy gemini-3.1-pro requirements (3f9c14e) ### Install Beta Update your `opencode.json`: ```json { "plugin": ["opencode-antigravity-auth@1.6.0-beta.0"] } ``` Or use the beta tag (always latest beta): ```json { "plugin": ["opencode-antigravity-auth@beta"] } ``` Clear cache if stuck on old version: ```bash rm -rf ~/.cache/opencode/node_modules ~/.cache/opencode/bun.lock ```

Code frequency

additions and deletions
+16.5K-16.5KWeek of 2025-12-07: +6,051 linesWeek of 2025-12-07: -491 linesWeek of 2025-12-14: +4,961 linesWeek of 2025-12-14: -633 linesWeek of 2025-12-21: +16,517 linesWeek of 2025-12-21: -4,505 linesWeek of 2025-12-28: +9,139 linesWeek of 2025-12-28: -3,312 linesWeek of 2026-01-04: +3,493 linesWeek of 2026-01-04: -716 linesWeek of 2026-01-11: +6,368 linesWeek of 2026-01-11: -2,078 linesWeek of 2026-01-18: +7,460 linesWeek of 2026-01-18: -3,102 linesWeek of 2026-01-25: +2,284 linesWeek of 2026-01-25: -389 linesWeek of 2026-02-01: +1,824 linesWeek of 2026-02-01: -695 linesWeek of 2026-02-08: +2,139 linesWeek of 2026-02-08: -703 linesWeek of 2026-02-15: +2,687 linesWeek of 2026-02-15: -1,381 linesWeek of 2026-02-22: +0 linesWeek of 2026-02-22: -0 linesWeek of 2026-03-01: +4 linesWeek of 2026-03-01: -9 linesWeek of 2026-03-08: +0 linesWeek of 2026-03-08: -0 linesWeek of 2026-03-15: +0 linesWeek of 2026-03-15: -0 linesWeek of 2026-03-22: +0 linesWeek of 2026-03-22: -0 linesWeek of 2026-03-29: +1 linesWeek of 2026-03-29: -1 linesWeek of 2026-04-05: +109 linesWeek of 2026-04-05: -4 linesWeek of 2026-04-12: +3 linesWeek of 2026-04-12: -3 linesWeek of 2026-04-19: +280 linesWeek of 2026-04-19: -8 linesWeek of 2026-04-26: +491 linesWeek of 2026-04-26: -24 linesWeek of 2026-05-03: +0 linesWeek of 2026-05-03: -0 linesWeek of 2026-05-10: +0 linesWeek of 2026-05-10: -0 linesWeek of 2026-05-17: +0 linesWeek of 2026-05-17: -0 linesWeek of 2026-05-24: +0 linesWeek of 2026-05-24: -0 linesWeek of 2026-05-31: +0 linesWeek of 2026-05-31: -0 linesWeek of 2026-06-07: +0 linesWeek of 2026-06-07: -0 linesWeek of 2026-06-14: +0 linesWeek of 2026-06-14: -0 linesWeek of 2026-06-21: +4 linesWeek of 2026-06-21: -0 linesWeek of 2026-06-28: +0 linesWeek of 2026-06-28: -0 linesWeek of 2026-07-05: +0 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +0 linesWeek of 2026-07-12: -0 linesWeek of 2026-07-19: +0 linesWeek of 2026-07-19: -0 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesWeek of 2026-08-02: +0 linesWeek of 2026-08-02: -0 linesDec 7, 2025Aug 2, 2026
+63.8K lines added, -18.1K removed over the last year.

Commits per week

last 52 weeks
850Week of 2025-08-09: 0 commitsWeek of 2025-08-16: 0 commitsWeek of 2025-08-23: 0 commitsWeek of 2025-08-30: 0 commitsWeek of 2025-09-06: 0 commitsWeek of 2025-09-13: 0 commitsWeek of 2025-09-20: 0 commitsWeek of 2025-09-27: 0 commitsWeek of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 26 commitsWeek of 2025-12-14: 41 commitsWeek of 2025-12-21: 63 commitsWeek of 2025-12-28: 39 commitsWeek of 2026-01-04: 41 commitsWeek of 2026-01-11: 63 commitsWeek of 2026-01-18: 85 commitsWeek of 2026-01-25: 45 commitsWeek of 2026-02-01: 41 commitsWeek of 2026-02-08: 24 commitsWeek of 2026-02-15: 31 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 1 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 1 commitsWeek of 2026-04-05: 5 commitsWeek of 2026-04-12: 3 commitsWeek of 2026-04-19: 5 commitsWeek of 2026-04-26: 13 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 2 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsAug 9, 2025Aug 2, 2026
529 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 5 commitsSun 1:00 — 0 commitsSun 2:00 — 5 commitsSun 3:00 — 1 commitsSun 4:00 — 0 commitsSun 5:00 — 1 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 0 commitsSun 11:00 — 1 commitsSun 12:00 — 6 commitsSun 13:00 — 4 commitsSun 14:00 — 1 commitsSun 15:00 — 0 commitsSun 16:00 — 2 commitsSun 17:00 — 3 commitsSun 18:00 — 3 commitsSun 19:00 — 0 commitsSun 20:00 — 1 commitsSun 21:00 — 2 commitsSun 22:00 — 1 commitsSun 23:00 — 1 commitsMon 0:00 — 0 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 0 commitsMon 10:00 — 0 commitsMon 11:00 — 1 commitsMon 12:00 — 0 commitsMon 13:00 — 0 commitsMon 14:00 — 1 commitsMon 15:00 — 0 commitsMon 16:00 — 1 commitsMon 17:00 — 1 commitsMon 18:00 — 1 commitsMon 19:00 — 2 commitsMon 20:00 — 6 commitsMon 21:00 — 2 commitsMon 22:00 — 9 commitsMon 23:00 — 10 commitsTue 0:00 — 8 commitsTue 1:00 — 3 commitsTue 2:00 — 0 commitsTue 3:00 — 1 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 0 commitsTue 9:00 — 7 commitsTue 10:00 — 3 commitsTue 11:00 — 6 commitsTue 12:00 — 1 commitsTue 13:00 — 1 commitsTue 14:00 — 3 commitsTue 15:00 — 2 commitsTue 16:00 — 1 commitsTue 17:00 — 2 commitsTue 18:00 — 3 commitsTue 19:00 — 2 commitsTue 20:00 — 5 commitsTue 21:00 — 3 commitsTue 22:00 — 0 commitsTue 23:00 — 8 commitsWed 0:00 — 10 commitsWed 1:00 — 10 commitsWed 2:00 — 12 commitsWed 3:00 — 1 commitsWed 4:00 — 0 commitsWed 5:00 — 1 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 0 commitsWed 9:00 — 2 commitsWed 10:00 — 5 commitsWed 11:00 — 13 commitsWed 12:00 — 3 commitsWed 13:00 — 14 commitsWed 14:00 — 13 commitsWed 15:00 — 14 commitsWed 16:00 — 10 commitsWed 17:00 — 3 commitsWed 18:00 — 3 commitsWed 19:00 — 2 commitsWed 20:00 — 3 commitsWed 21:00 — 6 commitsWed 22:00 — 6 commitsWed 23:00 — 11 commitsThu 0:00 — 5 commitsThu 1:00 — 2 commitsThu 2:00 — 0 commitsThu 3:00 — 2 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 1 commitsThu 8:00 — 2 commitsThu 9:00 — 2 commitsThu 10:00 — 3 commitsThu 11:00 — 9 commitsThu 12:00 — 20 commitsThu 13:00 — 17 commitsThu 14:00 — 5 commitsThu 15:00 — 2 commitsThu 16:00 — 10 commitsThu 17:00 — 6 commitsThu 18:00 — 5 commitsThu 19:00 — 4 commitsThu 20:00 — 6 commitsThu 21:00 — 8 commitsThu 22:00 — 5 commitsThu 23:00 — 1 commitsFri 0:00 — 12 commitsFri 1:00 — 1 commitsFri 2:00 — 7 commitsFri 3:00 — 2 commitsFri 4:00 — 1 commitsFri 5:00 — 2 commitsFri 6:00 — 0 commitsFri 7:00 — 2 commitsFri 8:00 — 0 commitsFri 9:00 — 3 commitsFri 10:00 — 4 commitsFri 11:00 — 9 commitsFri 12:00 — 7 commitsFri 13:00 — 1 commitsFri 14:00 — 8 commitsFri 15:00 — 11 commitsFri 16:00 — 4 commitsFri 17:00 — 14 commitsFri 18:00 — 4 commitsFri 19:00 — 1 commitsFri 20:00 — 2 commitsFri 21:00 — 6 commitsFri 22:00 — 6 commitsFri 23:00 — 1 commitsSat 0:00 — 0 commitsSat 1:00 — 2 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 5 commitsSat 5:00 — 1 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 1 commitsSat 10:00 — 3 commitsSat 11:00 — 1 commitsSat 12:00 — 2 commitsSat 13:00 — 5 commitsSat 14:00 — 2 commitsSat 15:00 — 0 commitsSat 16:00 — 4 commitsSat 17:00 — 2 commitsSat 18:00 — 1 commitsSat 19:00 — 1 commitsSat 20:00 — 0 commitsSat 21:00 — 2 commitsSat 22:00 — 2 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits269 (39%)
Community commits424 (61%)

693 commits in total over the last year.

DateListRankStars gained
Jan 18, 2026daily#17+239
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    453.6K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    385.5K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    238.5K stars · JavaScript