antigravity-manager by aradotso/trending-skills
npx skills add https://github.com/aradotso/trending-skills --skill antigravity-managerSkill by ara.so — Daily 2026 Skills collection.
Antigravity Manager 是一款专业的 AI 账户管理器和代理网关。它接收 Google (Gemini) 和 Anthropic (Claude) 的网页会话令牌,并将其暴露为标准 API 端点(兼容 OpenAI、原生 Anthropic 和原生 Gemini 格式),具备智能多账户轮换、配额跟踪和自动故障转移功能。
核心能力:
curl -fsSL https://raw.githubusercontent.com/lbjlaq/Antigravity-Manager/v4.1.30/install.sh | bash
安装特定版本:
curl -fsSL https://raw.githubusercontent.com/lbjlaq/Antigravity-Manager/v4.1.30/install.sh | bash -s -- --version 4.1.30
试运行(预览而不安装):
curl -fsSL https://raw.githubusercontent.com/lbjlaq/Antigravity-Manager/v4.1.30/install.sh | bash -s -- --dry-run
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
irm https://raw.githubusercontent.com/lbjlaq/Antigravity-Manager/main/install.ps1 | iex
brew tap lbjlaq/antigravity-manager https://github.com/lbjlaq/Antigravity-Manager
brew install --cask antigravity-tools
docker run -d --name antigravity-manager \
-p 8045:8045 \
-e API_KEY=$ANTIGRAVITY_API_KEY \
-e WEB_PASSWORD=$ANTIGRAVITY_WEB_PASSWORD \
-e ABV_MAX_BODY_SIZE=104857600 \
-v ~/.antigravity_tools:/root/.antigravity_tools \
lbjlaq/antigravity-manager:latest
Docker Compose:
# docker-compose.yml
version: "3.8"
services:
antigravity:
image: lbjlaq/antigravity-manager:latest
container_name: antigravity-manager
restart: unless-stopped
ports:
- "8045:8045"
environment:
- API_KEY=${ANTIGRAVITY_API_KEY}
- WEB_PASSWORD=${ANTIGRAVITY_WEB_PASSWORD}
- ABV_MAX_BODY_SIZE=104857600
volumes:
- ~/.antigravity_tools:/root/.antigravity_tools
docker compose up -d
docker logs antigravity-manager # 查看日志 / 找回忘记的密钥
从 GitHub Releases 下载:
.dmg (Apple Silicon + Intel).msi 或便携版 .zip.deb、.rpm 或 .AppImageAntigravity 使用两套独立的凭据:
| 凭据 | 环境变量 | 配置键 | 用途 |
|---|---|---|---|
| API 密钥 | API_KEY | api_key | 验证 AI API 调用 (Authorization: Bearer ...) |
| 网页密码 | WEB_PASSWORD | admin_password | 登录管理网页界面 |
场景 A — 仅设置 API_KEY:
API_KEYAPI_KEY场景 B — 两者都设置(推荐):
WEB_PASSWORD(API 密钥拒绝用于登录)API_KEY找回凭据:
docker logs antigravity-manager
# 或
grep -E '"api_key"|"admin_password"' ~/.antigravity_tools/gui_config.json
代理服务器默认运行在 8045 端口。
POST http://localhost:8045/v1/chat/completions
Authorization: Bearer $ANTIGRAVITY_API_KEY
POST http://localhost:8045/v1/messages
Authorization: Bearer $ANTIGRAVITY_API_KEY
POST http://localhost:8045/v1/models/{model}:generateContent
Authorization: Bearer $ANTIGRAVITY_API_KEY
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ANTIGRAVITY_API_KEY"],
base_url="http://localhost:8045/v1",
)
response = client.chat.completions.create(
model="gemini-2.5-pro",
messages=[
{"role": "user", "content": "Explain quantum entanglement in simple terms."}
],
stream=True,
)
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
import os
import anthropic
client = anthropic.Anthropic(
api_key=os.environ["ANTIGRAVITY_API_KEY"],
base_url="http://localhost:8045",
)
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[
{"role": "user", "content": "Write a haiku about distributed systems."}
],
)
print(message.content[0].text)
import os
import anthropic
client = anthropic.Anthropic(
api_key=os.environ["ANTIGRAVITY_API_KEY"],
base_url="http://localhost:8045",
)
with client.messages.stream(
model="claude-opus-4-5",
max_tokens=2048,
system="You are a helpful coding assistant.",
messages=[{"role": "user", "content": "Implement a binary search in Rust."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.ANTIGRAVITY_API_KEY!,
baseURL: "http://localhost:8045/v1",
});
async function chat(prompt: string): Promise<string> {
const response = await client.chat.completions.create({
model: "gemini-2.5-flash",
messages: [{ role: "user", content: prompt }],
});
return response.choices[0].message.content ?? "";
}
// 通过 Imagen 3 生成图像
async function generateImage(prompt: string) {
const response = await client.images.generate({
model: "imagen-3.0-generate-002",
prompt,
size: "1024x1024", // 映射到 Imagen 3 宽高比
n: 1,
});
return response.data[0].url;
}
# 测试 OpenAI 兼容端点
curl -s http://localhost:8045/v1/chat/completions \
-H "Authorization: Bearer $ANTIGRAVITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-2.5-pro",
"messages": [{"role": "user", "content": "Hello!"}]
}' | jq '.choices[0].message.content'
# 测试 Anthropic 端点
curl -s http://localhost:8045/v1/messages \
-H "Authorization: Bearer $ANTIGRAVITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 256,
"messages": [{"role": "user", "content": "Hello!"}]
}' | jq '.content[0].text'
Claude Code 使用 Anthropic 协议。将其指向 Antigravity:
# 在启动 Claude Code 之前设置环境变量
export ANTHROPIC_API_KEY=$ANTIGRAVITY_API_KEY
export ANTHROPIC_BASE_URL=http://localhost:8045
claude # 启动 Claude Code — 它将使用 Antigravity 作为后端
或在项目根目录创建 .env 文件:
# .env
ANTHROPIC_API_KEY=your-antigravity-api-key
ANTHROPIC_BASE_URL=http://localhost:8045
http://localhost:8045/v1ANTIGRAVITY_API_KEY在 Cursor 设置中,设置:
http://localhost:8045/v1ANTIGRAVITY_API_KEY// ~/.continue/config.json
{
"models": [
{
"title": "Gemini Pro (Antigravity)",
"provider": "openai",
"model": "gemini-2.5-pro",
"apiKey": "YOUR_ANTIGRAVITY_API_KEY",
"apiBase": "http://localhost:8045/v1"
},
{
"title": "Claude (Antigravity)",
"provider": "anthropic",
"model": "claude-sonnet-4-5",
"apiKey": "YOUR_ANTIGRAVITY_API_KEY",
"apiBase": "http://localhost:8045"
}
]
}
配置存储在 ~/.antigravity_tools/gui_config.json:
{
"api_key": "sk-your-api-key",
"admin_password": "your-web-ui-password",
"proxy": {
"port": 8045,
"max_body_size": 104857600,
"admin_password": "your-web-ui-password"
},
"model_routes": [
{
"pattern": "gpt-4.*",
"target": "gemini-2.5-pro"
},
{
"pattern": "gpt-3.5.*",
"target": "gemini-2.5-flash"
}
]
}
| 变量 | 描述 | 默认值 |
|---|---|---|
API_KEY | 用于验证代理请求的 API 密钥 | 必需 |
WEB_PASSWORD | 网页界面管理员密码 | 回退到 API_KEY |
ABV_MAX_BODY_SIZE | 最大请求体大小(字节)(用于图像上传) | 104857600 (100MB) |
Antigravity 的模型路由器允许你将传入的模型名称重映射到实际的上游模型。这在客户端硬编码模型名称(如 gpt-4)时非常有用。
通过网页界面(API 代理 → 模型路由器)或 gui_config.json 配置:
{
"model_routes": [
{
"pattern": "gpt-4-turbo",
"target": "gemini-2.5-pro"
},
{
"pattern": "gpt-4o",
"target": "gemini-2.5-pro"
},
{
"pattern": "gpt-3\\.5.*",
"target": "gemini-2.5-flash"
},
{
"pattern": "claude-3-opus.*",
"target": "claude-opus-4-5"
}
]
}
分层路由(自动):Antigravity 按账户类型(Ultra → Pro → Free)和配额重置频率确定优先级,优先消耗快速重置的账户。
后台任务降级(自动):检测为后台任务的请求(例如 Claude CLI 标题生成)会自动重定向到 Flash 层级的模型,以保留高级配额。
http://localhost:8045)从其他工具导出并在账户页面导入:
[
{
"token": "session-token-1",
"type": "google",
"label": "account-work"
},
{
"token": "session-token-2",
"type": "anthropic",
"label": "account-personal"
}
]
Antigravity 在首次启动时会自动检测并迁移 v1 数据库格式 — 无需手动操作。
仪表板显示所有账户的实时配额:
智能推荐:仪表板算法选择剩余配额最多的账户,并提供一键切换。
403 检测:在上游被禁止的账户会自动标记并在轮换时跳过。
# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Node.js (用于前端)
node --version # 需要 v18+
# Tauri v2 CLI
cargo install tauri-cli --version "^2"
# 系统依赖 (Linux)
sudo apt install libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev
git clone https://github.com/lbjlaq/Antigravity-Manager.git
cd Antigravity-Manager
npm install # 安装前端依赖
cargo tauri dev # 在开发模式下运行
cargo tauri build # 构建发布版二进制文件 → src-tauri/target/release/bundle/
cd src-tauri
cargo build --release --features headless
./target/release/antigravity-manager --headless --port 8045
# 查找并终止进程
lsof -ti:8045 | xargs kill -9
# 或在 gui_config.json 中更改端口:
# "proxy": { "port": 8046 }
# Docker
docker logs antigravity-manager | grep -E "api_key|password"
# 本地安装
cat ~/.antigravity_tools/gui_config.json | grep -E '"api_key"|"admin_password"'
该账户已被上游标记。在账户视图中,它将标有 403 徽章并自动跳过。添加一个新账户并移除/重新授权被禁止的账户。
Antigravity 会自动处理此问题(在毫秒内轮换到下一个账户)。如果所有账户都已耗尽,请添加更多账户或等待配额重置。检查仪表板以了解每个账户的配额状态。
xattr -d com.apple.quarantine /Applications/Antigravity\ Tools.app
# 或使用以下命令安装:
brew install --cask antigravity-tools --no-quarantine
确保卷挂载正确:
docker run ... -v ~/.antigravity_tools:/root/.antigravity_tools ...
# 验证数据存在:
ls ~/.antigravity_tools/
# 验证代理正在运行
curl -s http://localhost:8045/v1/models \
-H "Authorization: Bearer $ANTIGRAVITY_API_KEY"
# 检查环境变量是否已导出(不仅仅是设置)
export ANTHROPIC_BASE_URL=http://localhost:8045
export ANTHROPIC_API_KEY=$ANTIGRAVITY_API_KEY
echo $ANTHROPIC_BASE_URL # 应该打印 URL
Antigravity-Manager/
├── src/ # React 前端 (TypeScript)
│ ├── components/ # UI 组件 (Dashboard, Accounts, 等)
│ └── pages/
├── src-tauri/ # Rust 后端
│ ├── src/
│ │ ├── main.rs # Tauri 应用入口
│ │ ├── proxy/ # Axum HTTP 代理服务器
│ │ │ ├── router.rs # 模型路由逻辑
│ │ │ ├── dispatcher.rs # 账户轮换
│ │ │ └── mapper.rs # 协议转换
│ │ ├── accounts/ # 账户存储 & OAuth
│ │ └── quota/ # 配额跟踪
│ └── Cargo.toml
├── docker/
│ └── Dockerfile
├── install.sh # Linux/macOS 安装程序
├── install.ps1 # Windows 安装程序
└── docker-compose.yml
每周安装次数
273
代码仓库
GitHub 星标数
10
首次出现
6 天前
安全审计
已安装于
github-copilot271
codex271
amp271
cline271
kimi-cli271
gemini-cli271
Skill by ara.so — Daily 2026 Skills collection.
Antigravity Manager is a professional AI account manager and proxy gateway. It takes Google (Gemini) and Anthropic (Claude) web session tokens and exposes them as standard API endpoints (OpenAI-compatible, Anthropic-native, and Gemini-native formats) with intelligent multi-account rotation, quota tracking, and automatic failover.
Key capabilities:
curl -fsSL https://raw.githubusercontent.com/lbjlaq/Antigravity-Manager/v4.1.30/install.sh | bash
Install a specific version:
curl -fsSL https://raw.githubusercontent.com/lbjlaq/Antigravity-Manager/v4.1.30/install.sh | bash -s -- --version 4.1.30
Dry run (preview without installing):
curl -fsSL https://raw.githubusercontent.com/lbjlaq/Antigravity-Manager/v4.1.30/install.sh | bash -s -- --dry-run
irm https://raw.githubusercontent.com/lbjlaq/Antigravity-Manager/main/install.ps1 | iex
brew tap lbjlaq/antigravity-manager https://github.com/lbjlaq/Antigravity-Manager
brew install --cask antigravity-tools
docker run -d --name antigravity-manager \
-p 8045:8045 \
-e API_KEY=$ANTIGRAVITY_API_KEY \
-e WEB_PASSWORD=$ANTIGRAVITY_WEB_PASSWORD \
-e ABV_MAX_BODY_SIZE=104857600 \
-v ~/.antigravity_tools:/root/.antigravity_tools \
lbjlaq/antigravity-manager:latest
Docker Compose:
# docker-compose.yml
version: "3.8"
services:
antigravity:
image: lbjlaq/antigravity-manager:latest
container_name: antigravity-manager
restart: unless-stopped
ports:
- "8045:8045"
environment:
- API_KEY=${ANTIGRAVITY_API_KEY}
- WEB_PASSWORD=${ANTIGRAVITY_WEB_PASSWORD}
- ABV_MAX_BODY_SIZE=104857600
volumes:
- ~/.antigravity_tools:/root/.antigravity_tools
docker compose up -d
docker logs antigravity-manager # view logs / recover forgotten keys
Download from GitHub Releases:
.dmg (Apple Silicon + Intel).msi or portable .zip.deb, .rpm, or .AppImageAntigravity uses two separate credentials:
| Credential | Env var | Config key | Purpose |
|---|---|---|---|
| API Key | API_KEY | api_key | Authenticates AI API calls (Authorization: Bearer ...) |
| Web Password | WEB_PASSWORD | admin_password | Logs into the management web UI |
Scenario A — onlyAPI_KEY set:
API_KEYAPI_KEYScenario B — both set (recommended):
WEB_PASSWORD only (API Key rejected for login)API_KEY onlyRecover credentials:
docker logs antigravity-manager
# or
grep -E '"api_key"|"admin_password"' ~/.antigravity_tools/gui_config.json
The proxy server runs on port 8045 by default.
POST http://localhost:8045/v1/chat/completions
Authorization: Bearer $ANTIGRAVITY_API_KEY
POST http://localhost:8045/v1/messages
Authorization: Bearer $ANTIGRAVITY_API_KEY
POST http://localhost:8045/v1/models/{model}:generateContent
Authorization: Bearer $ANTIGRAVITY_API_KEY
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ANTIGRAVITY_API_KEY"],
base_url="http://localhost:8045/v1",
)
response = client.chat.completions.create(
model="gemini-2.5-pro",
messages=[
{"role": "user", "content": "Explain quantum entanglement in simple terms."}
],
stream=True,
)
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
import os
import anthropic
client = anthropic.Anthropic(
api_key=os.environ["ANTIGRAVITY_API_KEY"],
base_url="http://localhost:8045",
)
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[
{"role": "user", "content": "Write a haiku about distributed systems."}
],
)
print(message.content[0].text)
import os
import anthropic
client = anthropic.Anthropic(
api_key=os.environ["ANTIGRAVITY_API_KEY"],
base_url="http://localhost:8045",
)
with client.messages.stream(
model="claude-opus-4-5",
max_tokens=2048,
system="You are a helpful coding assistant.",
messages=[{"role": "user", "content": "Implement a binary search in Rust."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.ANTIGRAVITY_API_KEY!,
baseURL: "http://localhost:8045/v1",
});
async function chat(prompt: string): Promise<string> {
const response = await client.chat.completions.create({
model: "gemini-2.5-flash",
messages: [{ role: "user", content: prompt }],
});
return response.choices[0].message.content ?? "";
}
// Image generation via Imagen 3
async function generateImage(prompt: string) {
const response = await client.images.generate({
model: "imagen-3.0-generate-002",
prompt,
size: "1024x1024", // maps to Imagen 3 aspect ratio
n: 1,
});
return response.data[0].url;
}
# Test OpenAI-compatible endpoint
curl -s http://localhost:8045/v1/chat/completions \
-H "Authorization: Bearer $ANTIGRAVITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-2.5-pro",
"messages": [{"role": "user", "content": "Hello!"}]
}' | jq '.choices[0].message.content'
# Test Anthropic endpoint
curl -s http://localhost:8045/v1/messages \
-H "Authorization: Bearer $ANTIGRAVITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 256,
"messages": [{"role": "user", "content": "Hello!"}]
}' | jq '.content[0].text'
Claude Code uses the Anthropic protocol. Point it at Antigravity:
# Set environment variables before starting Claude Code
export ANTHROPIC_API_KEY=$ANTIGRAVITY_API_KEY
export ANTHROPIC_BASE_URL=http://localhost:8045
claude # start Claude Code — it will use Antigravity as the backend
Or create a .env in your project root:
# .env
ANTHROPIC_API_KEY=your-antigravity-api-key
ANTHROPIC_BASE_URL=http://localhost:8045
http://localhost:8045/v1ANTIGRAVITY_API_KEYIn Cursor settings, set:
http://localhost:8045/v1ANTIGRAVITY_API_KEY// ~/.continue/config.json
{
"models": [
{
"title": "Gemini Pro (Antigravity)",
"provider": "openai",
"model": "gemini-2.5-pro",
"apiKey": "YOUR_ANTIGRAVITY_API_KEY",
"apiBase": "http://localhost:8045/v1"
},
{
"title": "Claude (Antigravity)",
"provider": "anthropic",
"model": "claude-sonnet-4-5",
"apiKey": "YOUR_ANTIGRAVITY_API_KEY",
"apiBase": "http://localhost:8045"
}
]
}
Config is stored at ~/.antigravity_tools/gui_config.json:
{
"api_key": "sk-your-api-key",
"admin_password": "your-web-ui-password",
"proxy": {
"port": 8045,
"max_body_size": 104857600,
"admin_password": "your-web-ui-password"
},
"model_routes": [
{
"pattern": "gpt-4.*",
"target": "gemini-2.5-pro"
},
{
"pattern": "gpt-3.5.*",
"target": "gemini-2.5-flash"
}
]
}
| Variable | Description | Default |
|---|---|---|
API_KEY | API key for authenticating proxy requests | required |
WEB_PASSWORD | Web UI admin password | falls back to API_KEY |
ABV_MAX_BODY_SIZE | Max request body in bytes (for image uploads) | 104857600 (100MB) |
Antigravity's model router lets you remap incoming model names to actual upstream models. This is useful when clients hard-code model names like gpt-4.
Configuration via Web UI (API Proxy → Model Router) or gui_config.json:
{
"model_routes": [
{
"pattern": "gpt-4-turbo",
"target": "gemini-2.5-pro"
},
{
"pattern": "gpt-4o",
"target": "gemini-2.5-pro"
},
{
"pattern": "gpt-3\\.5.*",
"target": "gemini-2.5-flash"
},
{
"pattern": "claude-3-opus.*",
"target": "claude-opus-4-5"
}
]
}
Tiered routing (automatic): Antigravity prioritizes accounts by type (Ultra → Pro → Free) and quota reset frequency, consuming fast-reset accounts first.
Background task demotion (automatic): Requests detected as background tasks (e.g., Claude CLI title generation) are automatically redirected to Flash-tier models to preserve premium quota.
http://localhost:8045)Export from another tool and import in the Accounts page:
[
{
"token": "session-token-1",
"type": "google",
"label": "account-work"
},
{
"token": "session-token-2",
"type": "anthropic",
"label": "account-personal"
}
]
Antigravity auto-detects and migrates v1 database format on first launch — no manual steps needed.
The dashboard shows live quota across all accounts:
Smart Recommendation : The dashboard algorithmically selects the account with the most headroom and offers one-click switching.
403 detection : Accounts banned upstream are automatically flagged and skipped during rotation.
# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Node.js (for frontend)
node --version # requires v18+
# Tauri v2 CLI
cargo install tauri-cli --version "^2"
# System deps (Linux)
sudo apt install libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev
git clone https://github.com/lbjlaq/Antigravity-Manager.git
cd Antigravity-Manager
npm install # install frontend deps
cargo tauri dev # run in development mode
cargo tauri build # build release binaries → src-tauri/target/release/bundle/
cd src-tauri
cargo build --release --features headless
./target/release/antigravity-manager --headless --port 8045
# Find and kill the process
lsof -ti:8045 | xargs kill -9
# or change port in gui_config.json:
# "proxy": { "port": 8046 }
# Docker
docker logs antigravity-manager | grep -E "api_key|password"
# Local install
cat ~/.antigravity_tools/gui_config.json | grep -E '"api_key"|"admin_password"'
The account has been flagged upstream. In the Accounts view it will be marked with a 403 badge and automatically skipped. Add a fresh account and remove/re-authorize the banned one.
Antigravity handles this automatically (rotates to next account within milliseconds). If all accounts are exhausted, add more accounts or wait for quota reset. Check the dashboard for per-account quota status.
xattr -d com.apple.quarantine /Applications/Antigravity\ Tools.app
# or install with:
brew install --cask antigravity-tools --no-quarantine
Ensure the volume mount is correct:
docker run ... -v ~/.antigravity_tools:/root/.antigravity_tools ...
# Verify data is present:
ls ~/.antigravity_tools/
# Verify the proxy is running
curl -s http://localhost:8045/v1/models \
-H "Authorization: Bearer $ANTIGRAVITY_API_KEY"
# Check env vars are exported (not just set)
export ANTHROPIC_BASE_URL=http://localhost:8045
export ANTHROPIC_API_KEY=$ANTIGRAVITY_API_KEY
echo $ANTHROPIC_BASE_URL # should print the URL
Antigravity-Manager/
├── src/ # React frontend (TypeScript)
│ ├── components/ # UI components (Dashboard, Accounts, etc.)
│ └── pages/
├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── main.rs # Tauri app entry
│ │ ├── proxy/ # Axum HTTP proxy server
│ │ │ ├── router.rs # Model routing logic
│ │ │ ├── dispatcher.rs # Account rotation
│ │ │ └── mapper.rs # Protocol conversion
│ │ ├── accounts/ # Account storage & OAuth
│ │ └── quota/ # Quota tracking
│ └── Cargo.toml
├── docker/
│ └── Dockerfile
├── install.sh # Linux/macOS installer
├── install.ps1 # Windows installer
└── docker-compose.yml
Weekly Installs
273
Repository
GitHub Stars
10
First Seen
6 days ago
Security Audits
Gen Agent Trust HubFailSocketWarnSnykFail
Installed on
github-copilot271
codex271
amp271
cline271
kimi-cli271
gemini-cli271
AI Elements:基于shadcn/ui的AI原生应用组件库,快速构建对话界面
56,200 周安装