Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Cursor-000?style=for-the-badge" alt="Cursor"></a>&nbsp;
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Gemini_CLI-4285F4?style=for-the-badge&logo=google&logoColor=white" alt="Gemini CLI"></a>&nbsp;
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Codex_CLI-412991?style=for-the-badge" alt="Codex CLI"></a>&nbsp;
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/OpenCode-22C55E?style=for-the-badge&logo=gnometerminal&logoColor=white" alt="OpenCode"></a>
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/OpenCode-22C55E?style=for-the-badge&logo=gnometerminal&logoColor=white" alt="OpenCode"></a>&nbsp;
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Tabnine-4B32C3?style=for-the-badge&logo=tabnine&logoColor=white" alt="Tabnine"></a>
</p>

<p align="center">
Expand Down Expand Up @@ -109,6 +110,7 @@ Restart your editor. Done. Every question now hits the index instead of re-readi
| Gemini CLI | `.gemini/settings.json` | `GEMINI.md` |
| OpenAI Codex | `~/.codex/config.toml` (user-global, per-project section) | |
| OpenCode | `opencode.json` | |
| Tabnine | `.tabnine/agent/settings.json` | `TABNINE.md` |

Multiple editors in the same project? All get configured in one command.

Expand Down
6 changes: 6 additions & 0 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -981,6 +981,7 @@ <h1 class="hero-title">Index once.<br><span class="accent">Save 94%.</span></h1>
<span class="editor-badge"><img src="https://cdn.simpleicons.org/googlegemini/88A5F8" alt="Gemini">Gemini CLI</span>
<span class="editor-badge"><svg width="28" height="28" viewBox="0 0 24 24" fill="#ffffff"><path d="M22.282 9.821a5.985 5.985 0 0 0-.516-4.91 6.046 6.046 0 0 0-6.51-2.9A6.065 6.065 0 0 0 4.981 4.18a5.985 5.985 0 0 0-3.998 2.9 6.046 6.046 0 0 0 .743 7.097 5.98 5.98 0 0 0 .51 4.911 6.051 6.051 0 0 0 6.515 2.9A5.985 5.985 0 0 0 13.26 24a6.056 6.056 0 0 0 5.772-4.206 5.99 5.99 0 0 0 3.997-2.9 6.056 6.056 0 0 0-.747-7.073zM13.26 22.43a4.476 4.476 0 0 1-2.876-1.04l.141-.081 4.779-2.758a.795.795 0 0 0 .392-.681v-6.737l2.02 1.168a.071.071 0 0 1 .038.052v5.583a4.504 4.504 0 0 1-4.494 4.494zM3.6 18.304a4.47 4.47 0 0 1-.535-3.014l.142.085 4.783 2.759a.771.771 0 0 0 .78 0l5.843-3.369v2.332a.08.08 0 0 1-.033.062L9.74 19.95a4.5 4.5 0 0 1-6.14-1.646zM2.34 7.896a4.485 4.485 0 0 1 2.366-1.973V11.6a.766.766 0 0 0 .388.676l5.815 3.355-2.02 1.168a.076.076 0 0 1-.071 0l-4.83-2.786A4.504 4.504 0 0 1 2.34 7.872zm16.597 3.855l-5.833-3.387L15.119 7.2a.076.076 0 0 1 .071 0l4.83 2.791a4.494 4.494 0 0 1-.676 8.105v-5.678a.79.79 0 0 0-.407-.667zm2.01-3.023l-.141-.085-4.774-2.782a.776.776 0 0 0-.785 0L9.409 9.23V6.897a.066.066 0 0 1 .028-.061l4.83-2.787a4.5 4.5 0 0 1 6.68 4.66zm-12.64 4.135l-2.02-1.164a.08.08 0 0 1-.038-.057V6.075a4.5 4.5 0 0 1 7.375-3.453l-.142.08L8.704 5.46a.795.795 0 0 0-.393.681zm1.097-2.365l2.602-1.5 2.607 1.5v2.999l-2.597 1.5-2.607-1.5z"/></svg>Codex CLI</span>
<span class="editor-badge"><img src="https://opencode.ai/favicon.svg" alt="OpenCode" style="width:28px;height:28px">OpenCode</span>
<span class="editor-badge"><img src="https://www.tabnine.com/favicon.ico" alt="Tabnine" style="width:28px;height:28px;border-radius:6px">Tabnine</span>
</div>
</div>

Expand Down Expand Up @@ -1266,6 +1267,11 @@ <h2>Deep dives</h2>
<div style="font-size:22px;font-weight:700;color:var(--text);margin-bottom:10px;letter-spacing:-0.01em">How to Reduce AI Coding Agent Costs</div>
<div style="font-size:15px;color:var(--text2);line-height:1.6">5 practical ways to cut your Claude Code, Cursor, and Copilot bills.</div>
</a>
<a href="blog/cce-cursor-setup-guide.html" style="text-decoration:none;display:block;background:var(--bg2);border:1px solid var(--border);border-radius:14px;padding:36px;transition:border-color .3s,transform .3s;box-shadow:0 2px 8px rgba(0,0,0,.2);" onmouseover="this.style.borderColor='rgba(0,200,240,.25)';this.style.transform='translateY(-3px)'" onmouseout="this.style.borderColor='var(--border)';this.style.transform='none'">
<div style="font-family:var(--mono);font-size:12px;color:var(--text3);margin-bottom:12px">May 6, 2026 · 5 min read</div>
<div style="font-size:22px;font-weight:700;color:var(--text);margin-bottom:10px;letter-spacing:-0.01em">How to Use CCE with Cursor: Complete Setup Guide</div>
<div style="font-size:15px;color:var(--text2);line-height:1.6">Step-by-step guide to setting up Code Context Engine with Cursor. Works alongside Cursor's built-in indexing.</div>
</a>
<a href="blog/benchmark-fastapi.html" style="text-decoration:none;display:block;background:var(--bg2);border:1px solid var(--border);border-radius:14px;padding:36px;transition:border-color .3s,transform .3s;box-shadow:0 2px 8px rgba(0,0,0,.2);" onmouseover="this.style.borderColor='rgba(0,200,240,.25)';this.style.transform='translateY(-3px)'" onmouseout="this.style.borderColor='var(--border)';this.style.transform='none'">
<div style="font-family:var(--mono);font-size:12px;color:var(--text3);margin-bottom:12px">May 4, 2026 · 5 min read</div>
<div style="font-size:22px;font-weight:700;color:var(--text);margin-bottom:10px;letter-spacing:-0.01em">How We Cut Claude Code Token Usage by 94%</div>
Expand Down
2 changes: 1 addition & 1 deletion src/context_engine/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -711,7 +711,7 @@ def init(ctx: click.Context) -> None:
else:
_ok("MCP server already configured in " + click.style(".mcp.json", fg="cyan"))

# Configure MCP for other detected editors (Cursor, VS Code, Gemini, Codex)
# Configure MCP for other detected editors (Cursor, VS Code, Gemini, Codex, Tabnine)
from context_engine.editors import _editor_section # noqa: SLF001
detected = detect_editors(project_dir)
for editor_key in detected:
Expand Down
14 changes: 13 additions & 1 deletion src/context_engine/editors.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Detects installed editors and writes MCP server config in each editor's
format. Supports Claude Code, VS Code/Copilot, Cursor, Gemini CLI,
OpenAI Codex CLI, and OpenCode.
OpenAI Codex CLI, OpenCode, and Tabnine.

Two scopes exist for an editor's config:
- "project" (default): config_path / detect markers resolve under the
Expand Down Expand Up @@ -80,6 +80,13 @@
"format": "opencode",
"detect": ["opencode.json", "opencode.jsonc"],
},
"tabnine": {
"name": "Tabnine",
"config_path": ".tabnine/agent/settings.json",
"servers_key": "mcpServers",
"format": "json",
"detect": [".tabnine"],
},
}

# ── Instruction file definitions ──────────────────────────────────────
Expand Down Expand Up @@ -126,6 +133,11 @@
"path": "GEMINI.md",
"detect": [".gemini", "GEMINI.md"],
},
"tabnine": {
"name": "TABNINE.md",
"path": "TABNINE.md",
"detect": [".tabnine", "TABNINE.md"],
},
}


Expand Down
Loading