modelflaredev commited on
Commit
4d4f548
·
verified ·
1 Parent(s): 4f73b53

Upload coding-agents static Space files

Browse files
Files changed (2) hide show
  1. README.md +19 -6
  2. index.html +218 -18
README.md CHANGED
@@ -1,11 +1,24 @@
1
  ---
2
- title: Coding Agents
3
- emoji: 😻
4
- colorFrom: purple
5
- colorTo: gray
6
  sdk: static
7
- pinned: false
 
8
  short_description: Codex / Claude Code / Gemini CLI → Modelflare
9
  ---
10
 
11
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: Coding Agents → Modelflare
3
+ emoji: 🛠️
4
+ colorFrom: indigo
5
+ colorTo: pink
6
  sdk: static
7
+ pinned: true
8
+ license: mit
9
  short_description: Codex / Claude Code / Gemini CLI → Modelflare
10
  ---
11
 
12
+ # Coding Agents → Modelflare
13
+
14
+ Hub for **Codex**, **Claude Code**, and **Gemini CLI** on [Modelflare](https://modelflare.dev/?utm_source=huggingface&utm_medium=space&utm_campaign=coding_agents).
15
+
16
+ - Console: https://modelflare.dev/?utm_source=huggingface&utm_medium=space&utm_campaign=coding_agents
17
+ - Docs: https://docs.modelflare.dev/?utm_source=huggingface&utm_medium=space&utm_campaign=coding_agents
18
+ - Codex guide: https://docs.modelflare.dev/guides/clients/codex/
19
+ - Claude Code: https://docs.modelflare.dev/guides/clients/claude-code/
20
+ - Gemini CLI: https://docs.modelflare.dev/guides/clients/gemini-cli/
21
+ - SDK Space: https://huggingface.co/spaces/Modelflare/openai-sdk
22
+ - Start: https://huggingface.co/spaces/Modelflare/start
23
+
24
+ Model ids must exist on the key’s group; live catalog is the console.
index.html CHANGED
@@ -1,19 +1,219 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  </html>
 
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Coding Agents → Modelflare</title>
7
+ <meta name="description" content="Connect Codex, Claude Code, and Gemini CLI to Modelflare. Short steps, env snippets, deep links to official docs." />
8
+ <style>
9
+ :root {
10
+ --bg:#0b1020; --card:#121a2f; --text:#e8ecf7; --muted:#9aa6c2;
11
+ --accent:#8b5cf6; --accent2:#ec4899; --border:rgba(255,255,255,.08); --ok:#34d399; --warn:#fbbf24;
12
+ }
13
+ *{box-sizing:border-box}
14
+ body{
15
+ margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
16
+ background:radial-gradient(1200px 600px at 10% -10%,#2a1850 0%,transparent 50%),
17
+ radial-gradient(900px 500px at 100% 0%,#3b0f2e 0%,transparent 45%),var(--bg);
18
+ color:var(--text);min-height:100vh;line-height:1.55;
19
+ }
20
+ .wrap{max-width:880px;margin:0 auto;padding:40px 18px 64px}
21
+ .lang{display:flex;gap:8px;margin-bottom:16px}
22
+ .lang button{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:6px 12px;cursor:pointer}
23
+ .lang button.on{color:#fff;border-color:rgba(139,92,246,.5);background:rgba(139,92,246,.2)}
24
+ .badge{display:inline-flex;gap:8px;align-items:center;padding:6px 12px;border-radius:999px;background:rgba(139,92,246,.15);border:1px solid rgba(139,92,246,.35);color:#d6c7ff;font-size:13px;margin-bottom:18px}
25
+ h1{font-size:clamp(28px,5vw,40px);line-height:1.15;margin:0 0 12px}
26
+ .lead{color:var(--muted);font-size:17px;margin:0 0 24px;max-width:680px}
27
+ .cta{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:28px}
28
+ a.btn{display:inline-flex;align-items:center;padding:12px 16px;border-radius:12px;text-decoration:none;font-weight:600}
29
+ a.primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff}
30
+ a.ghost{border:1px solid var(--border);color:var(--text)}
31
+ .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:28px}
32
+ .card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:18px}
33
+ .card h3{margin:0 0 8px;font-size:16px}
34
+ .card p{margin:0;color:var(--muted);font-size:14px}
35
+ h2{font-size:18px;margin:28px 0 10px}
36
+ h3.sec{font-size:15px;margin:18px 0 8px;color:#d6c7ff}
37
+ ol,ul{color:var(--muted);padding-left:1.2em}
38
+ ol li,ul li{margin:6px 0}
39
+ pre{background:#070b16;border:1px solid var(--border);border-radius:14px;padding:14px 16px;overflow:auto;font-size:12.5px;color:#d7def0;position:relative}
40
+ .copy{position:absolute;top:8px;right:8px;font-size:11px;border:1px solid var(--border);background:#121a2f;color:var(--muted);border-radius:8px;padding:4px 8px;cursor:pointer}
41
+ .foot{margin-top:24px;color:var(--muted);font-size:13px}
42
+ .note{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px 16px;color:var(--muted);font-size:14px;margin-top:16px}
43
+ .note strong{color:var(--ok)}
44
+ .tip{border-left:3px solid var(--warn);padding-left:12px;margin:12px 0;color:var(--muted);font-size:14px}
45
+ table{width:100%;border-collapse:collapse;font-size:13px;margin:12px 0 20px}
46
+ th,td{border:1px solid var(--border);padding:10px 12px;text-align:left;vertical-align:top}
47
+ th{background:rgba(139,92,246,.12);color:#d6c7ff;font-weight:600}
48
+ td{color:var(--muted)}
49
+ code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
50
+ .hidden{display:none}
51
+ a{color:#c4b5fd}
52
+
53
+ </style>
54
+ </head>
55
+ <body>
56
+ <div class="wrap">
57
+ <div class="lang">
58
+ <button type="button" class="on" data-lang="zh">中文</button>
59
+ <button type="button" data-lang="en">English</button>
60
+ </div>
61
+
62
+ <section id="zh">
63
+ <div class="badge">🛠️ Coding Agents × Modelflare</div>
64
+ <h1>用 Codex / Claude Code / Gemini CLI 接 Modelflare</h1>
65
+ <p class="lead">同一把 API Key,按客户端选对 base URL。下面是最短步骤与环境变量;完整安装脚本与排错见官方文档。</p>
66
+ <div class="cta">
67
+ <a class="btn primary" href="https://modelflare.dev/?utm_source=huggingface&utm_medium=space&utm_campaign=coding_agents" target="_blank" rel="noopener">打开控制台领 Key →</a>
68
+ <a class="btn ghost" href="https://docs.modelflare.dev/guides/endpoints/?utm_source=huggingface&utm_medium=space&utm_campaign=coding_agents" target="_blank" rel="noopener">端点选择指南</a>
69
+ <a class="btn ghost" href="https://huggingface.co/spaces/Modelflare/openai-sdk" target="_blank" rel="noopener">OpenAI SDK 教程</a>
70
+ <a class="btn ghost" href="https://huggingface.co/spaces/Modelflare/start" target="_blank" rel="noopener">Start 落地页</a>
71
+ <a class="btn ghost" href="https://huggingface.co/spaces/Modelflare/api-recipes" target="_blank" rel="noopener">API Recipes</a>
72
+ </div>
73
+ <div class="tip"><strong>重要:</strong>模型 id 必须已在当前 key 所属<strong>分组</strong>开通;否则会 <code>model_not_found</code> / 无权限。实时目录以控制台为准,不要假设下方示例 id 对你的账号可用。</div>
74
+
75
+ <h2>1) Codex(Responses API)</h2>
76
+ <ol>
77
+ <li>控制台创建 key,并确保分组可访问示例模型 <code>gpt-5.6-sol</code>(或你分组里实际开通的 Responses 模型)。</li>
78
+ <li>一键安装:<code>curl -fsSL https://modelflare.dev/install/codex.sh | sh</code>;或手动写 <code>~/.codex/config.toml</code> + <code>auth.json</code>。</li>
79
+ <li><code>base_url</code> 必须是 <code>https://modelflare.dev/v1</code>,<code>wire_api = "responses"</code>。</li>
80
+ </ol>
81
+ <h3 class="sec">环境 / 配置要点</h3>
82
+ <pre><button class="copy" type="button">复制</button><code># ~/.codex/config.toml(节选)
83
+ model_provider = "modelflare"
84
+ model = "gpt-5.6-sol"
85
+
86
+ [model_providers.modelflare]
87
+ name = "Modelflare"
88
+ base_url = "https://modelflare.dev/v1"
89
+ wire_api = "responses"
90
+ requires_openai_auth = true
91
+
92
+ # ~/.codex/auth.json
93
+ # { "auth_mode": "apikey", "OPENAI_API_KEY": "YOUR_MODELFLARE_API_KEY" }</code></pre>
94
+ <p class="foot">完整步骤与 Windows 脚本:<a href="https://docs.modelflare.dev/guides/clients/codex/?utm_source=huggingface&utm_medium=space&utm_campaign=coding_agents" target="_blank" rel="noopener">docs → Codex</a></p>
95
+
96
+ <h2>2) Claude Code(Anthropic Messages)</h2>
97
+ <ol>
98
+ <li>创建 key,确保分组可访问 <code>claude-opus-4-8</code> / <code>claude-sonnet-5</code>(或你分组里的 Claude 模型)。</li>
99
+ <li>一键:<code>curl -fsSL https://modelflare.dev/install/claude.sh | sh</code>;或写 <code>~/.claude/settings.json</code>。</li>
100
+ <li><strong>注意:</strong><code>ANTHROPIC_BASE_URL</code> 是站点根 <code>https://modelflare.dev</code>(<strong>不要</strong>加 <code>/v1</code>)。CLI 会自己拼 Messages 路径。</li>
101
+ </ol>
102
+ <pre><button class="copy" type="button">复制</button><code># ~/.claude/settings.json 中的 env
103
+ export ANTHROPIC_BASE_URL="https://modelflare.dev"
104
+ export ANTHROPIC_AUTH_TOKEN="YOUR_MODELFLARE_API_KEY"
105
+ export ANTHROPIC_MODEL="claude-opus-4-8"
106
+ export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-4-8"
107
+ export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5"
108
+ export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-sonnet-5"</code></pre>
109
+ <p class="foot">完整指南:<a href="https://docs.modelflare.dev/guides/clients/claude-code/?utm_source=huggingface&utm_medium=space&utm_campaign=coding_agents" target="_blank" rel="noopener">docs → Claude Code</a></p>
110
+
111
+ <h2>3) Gemini CLI(原生 Gemini)</h2>
112
+ <ol>
113
+ <li><code>npm install -g @google/gemini-cli@latest</code></li>
114
+ <li>设置 <code>GEMINI_API_KEY</code> + <code>GOOGLE_GEMINI_BASE_URL=https://modelflare.dev</code></li>
115
+ <li><code>gemini --model YOUR_MODEL_ID</code>(模型 id 从控制台目录选)</li>
116
+ </ol>
117
+ <pre><button class="copy" type="button">复制</button><code>export GEMINI_API_KEY="YOUR_MODELFLARE_API_KEY"
118
+ export GOOGLE_GEMINI_BASE_URL="https://modelflare.dev"
119
+ gemini --model YOUR_MODEL_ID</code></pre>
120
+ <p class="foot">完整指南:<a href="https://docs.modelflare.dev/guides/clients/gemini-cli/?utm_source=huggingface&utm_medium=space&utm_campaign=coding_agents" target="_blank" rel="noopener">docs → Gemini CLI</a></p>
121
+
122
+ <div class="note">
123
+ <strong>还想用 OpenAI SDK?</strong> Chat Completions 请看
124
+ <a href="https://huggingface.co/spaces/Modelflare/openai-sdk">openai-sdk</a> 与
125
+ <a href="https://huggingface.co/spaces/Modelflare/api-recipes">api-recipes</a>。
126
+ Gradio Chat Demo 需 HF PRO,即将上线;当前请用控制台 + API。
127
+ </div>
128
+ </section>
129
+
130
+ <section id="en" class="hidden">
131
+ <div class="badge">🛠️ Coding Agents × Modelflare</div>
132
+ <h1>Codex / Claude Code / Gemini CLI → Modelflare</h1>
133
+ <p class="lead">One API key, pick the right base URL per client. Short steps and env snippets below; full installers and troubleshooting live in the official docs.</p>
134
+ <div class="cta">
135
+ <a class="btn primary" href="https://modelflare.dev/?utm_source=huggingface&utm_medium=space&utm_campaign=coding_agents" target="_blank" rel="noopener">Open Console → Get Key</a>
136
+ <a class="btn ghost" href="https://docs.modelflare.dev/guides/endpoints/?utm_source=huggingface&utm_medium=space&utm_campaign=coding_agents" target="_blank" rel="noopener">Endpoint picker</a>
137
+ <a class="btn ghost" href="https://huggingface.co/spaces/Modelflare/openai-sdk" target="_blank" rel="noopener">OpenAI SDK guide</a>
138
+ <a class="btn ghost" href="https://huggingface.co/spaces/Modelflare/start" target="_blank" rel="noopener">Start landing</a>
139
+ <a class="btn ghost" href="https://huggingface.co/spaces/Modelflare/api-recipes" target="_blank" rel="noopener">API Recipes</a>
140
+ </div>
141
+ <div class="tip"><strong>Important:</strong> model ids must be enabled on the key’s <strong>group</strong>. Otherwise you get <code>model_not_found</code> / unauthorized. The live catalog is the console — do not assume sample ids below are enabled for your account.</div>
142
+
143
+ <h2>1) Codex (Responses API)</h2>
144
+ <ol>
145
+ <li>Create a key whose group can access <code>gpt-5.6-sol</code> (or another Responses model on your group).</li>
146
+ <li>Installer: <code>curl -fsSL https://modelflare.dev/install/codex.sh | sh</code>; or write <code>~/.codex/config.toml</code> + <code>auth.json</code> by hand.</li>
147
+ <li><code>base_url</code> must be <code>https://modelflare.dev/v1</code> with <code>wire_api = "responses"</code>.</li>
148
+ </ol>
149
+ <h3 class="sec">Config sketch</h3>
150
+ <pre><button class="copy" type="button">Copy</button><code># ~/.codex/config.toml (excerpt)
151
+ model_provider = "modelflare"
152
+ model = "gpt-5.6-sol"
153
+
154
+ [model_providers.modelflare]
155
+ name = "Modelflare"
156
+ base_url = "https://modelflare.dev/v1"
157
+ wire_api = "responses"
158
+ requires_openai_auth = true
159
+
160
+ # ~/.codex/auth.json
161
+ # { "auth_mode": "apikey", "OPENAI_API_KEY": "YOUR_MODELFLARE_API_KEY" }</code></pre>
162
+ <p class="foot">Full guide: <a href="https://docs.modelflare.dev/guides/clients/codex/?utm_source=huggingface&utm_medium=space&utm_campaign=coding_agents" target="_blank" rel="noopener">docs → Codex</a></p>
163
+
164
+ <h2>2) Claude Code (Anthropic Messages)</h2>
165
+ <ol>
166
+ <li>Create a key with access to <code>claude-opus-4-8</code> / <code>claude-sonnet-5</code> (or Claude models on your group).</li>
167
+ <li>Installer: <code>curl -fsSL https://modelflare.dev/install/claude.sh | sh</code>; or write <code>~/.claude/settings.json</code>.</li>
168
+ <li><strong>Note:</strong> <code>ANTHROPIC_BASE_URL</code> is the site origin <code>https://modelflare.dev</code> (<strong>not</strong> <code>/v1</code>). The CLI appends the Messages path.</li>
169
+ </ol>
170
+ <pre><button class="copy" type="button">Copy</button><code># env block used in ~/.claude/settings.json
171
+ export ANTHROPIC_BASE_URL="https://modelflare.dev"
172
+ export ANTHROPIC_AUTH_TOKEN="YOUR_MODELFLARE_API_KEY"
173
+ export ANTHROPIC_MODEL="claude-opus-4-8"
174
+ export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-4-8"
175
+ export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5"
176
+ export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-sonnet-5"</code></pre>
177
+ <p class="foot">Full guide: <a href="https://docs.modelflare.dev/guides/clients/claude-code/?utm_source=huggingface&utm_medium=space&utm_campaign=coding_agents" target="_blank" rel="noopener">docs → Claude Code</a></p>
178
+
179
+ <h2>3) Gemini CLI (native Gemini)</h2>
180
+ <ol>
181
+ <li><code>npm install -g @google/gemini-cli@latest</code></li>
182
+ <li>Set <code>GEMINI_API_KEY</code> + <code>GOOGLE_GEMINI_BASE_URL=https://modelflare.dev</code></li>
183
+ <li><code>gemini --model YOUR_MODEL_ID</code> (pick an id from the console catalog)</li>
184
+ </ol>
185
+ <pre><button class="copy" type="button">Copy</button><code>export GEMINI_API_KEY="YOUR_MODELFLARE_API_KEY"
186
+ export GOOGLE_GEMINI_BASE_URL="https://modelflare.dev"
187
+ gemini --model YOUR_MODEL_ID</code></pre>
188
+ <p class="foot">Full guide: <a href="https://docs.modelflare.dev/guides/clients/gemini-cli/?utm_source=huggingface&utm_medium=space&utm_campaign=coding_agents" target="_blank" rel="noopener">docs → Gemini CLI</a></p>
189
+
190
+ <div class="note">
191
+ <strong>Prefer the OpenAI SDK?</strong> See
192
+ <a href="https://huggingface.co/spaces/Modelflare/openai-sdk">openai-sdk</a> and
193
+ <a href="https://huggingface.co/spaces/Modelflare/api-recipes">api-recipes</a>.
194
+ Gradio Chat Demo needs HF PRO (upcoming); use console + API for now.
195
+ </div>
196
+ </section>
197
+ </div>
198
+
199
+ <script>
200
+ const zh=document.getElementById('zh'), en=document.getElementById('en');
201
+ document.querySelectorAll('.lang button').forEach(btn=>{
202
+ btn.addEventListener('click',()=>{
203
+ document.querySelectorAll('.lang button').forEach(b=>b.classList.remove('on'));
204
+ btn.classList.add('on');
205
+ const l=btn.dataset.lang;
206
+ zh.classList.toggle('hidden',l!=='zh');
207
+ en.classList.toggle('hidden',l!=='en');
208
+ });
209
+ });
210
+ document.querySelectorAll('pre .copy').forEach(btn=>{
211
+ btn.addEventListener('click',async()=>{
212
+ const code=btn.parentElement.querySelector('code').innerText;
213
+ try{await navigator.clipboard.writeText(code);const t=btn.textContent;btn.textContent=t.includes('Copy')?'Copied':'已复制';setTimeout(()=>btn.textContent=t,1200)}catch(_){}
214
+ });
215
+ });
216
+ </script>
217
+
218
+ </body>
219
  </html>