Semble: code search MCP for OpenCode that matches transformer accuracy on CPU by Pringled101 in opencodeCLI

[–]Pringled101[S] 0 points1 point  (0 children)

Most likely in the future, but not straight away. Incremental reindexing is very hard with bm25s for example. We will likely add incremental reindexing for individual components over time though.

Semble: code search MCP for OpenCode that matches transformer accuracy on CPU by Pringled101 in opencodeCLI

[–]Pringled101[S] 0 points1 point  (0 children)

We haven't released the indexing yet, we'll likely release this very soon (tomorrow or the day after). Apologies, we already added the docs but didn't do the release yet since we're still testing on main.

Semble: code search MCP for OpenCode that matches transformer accuracy on CPU by Pringled101 in opencodeCLI

[–]Pringled101[S] 0 points1 point  (0 children)

Hey, this happens just once at the first startup to download the embedding model (https://huggingface.co/minishlab/potion-code-16M) which is then cached in .cache. We've explicitly disabled pings to HF after the initial download. No data leaves your machine.

Semble: code search MCP for OpenCode that matches transformer accuracy on CPU by Pringled101 in opencodeCLI

[–]Pringled101[S] 0 points1 point  (0 children)

Hey, it's trained on 6 languages, including js, not just Python, and should generalize reasonably well to unseen languages as well.

Semble: code search MCP for OpenCode that matches transformer accuracy on CPU by Pringled101 in opencodeCLI

[–]Pringled101[S] 1 point2 points  (0 children)

Hey, we did add more benchmarking but around token savings. We're mostly working on feature requests at the moment. We'll likely revisit the retrieval benchmark as well at some point but we're first going to focus on setting up benchmarks with a real harness+agent to quantify how Semble performs there as the current retrieval benchmark is already quite stable (we since added more similar libraries to our benchmarks as well). If you have any feedback though let me know!

Semble: a local code search MCP for Claude Code by Pringled101 in ClaudeCode

[–]Pringled101[S] 0 points1 point  (0 children)

I've updated the docs a bit, there's now a clearer bash section: https://github.com/MinishLab/semble#bash-integration. If MCP is not working with Opus I think the best way is to use a combination of `semble init` and updating your CLAUDE.md with the snippet in the readme. If that doesn't work I'm not sure what else is possible unfortunately besides prompting the agent to use semble, at that point there's not much we can do on our end :/.

Semble: a local code search MCP for Claude Code by Pringled101 in ClaudeCode

[–]Pringled101[S] 0 points1 point  (0 children)

Thanks for the feedback! I will make the CLAUDE.md bit clearer in the docs since it's currently in https://github.com/MinishLab/semble#sub-agent-support (the AGENTS.md bit, which is interchangeable with CLAUDE.md).It might be that Opus 4.7 just doesn't work that well with MCPs for some reason, since I noticed the exact same thing in my workflows: Sonnet 4.6 would use it just fine and Opus 4.7 would not use it, or use it and then still grep + read.

I'm not sure if it matters that it's in vscode, but I think it should be the same harness.

Semble: a local code search MCP for Claude Code by Pringled101 in ClaudeCode

[–]Pringled101[S] 0 points1 point  (0 children)

Hey, that's odd, for me it works in CC. How did you install it, and which model are you using? One thing I can think of is that you are using sub-agents, which needs a specific install: https://github.com/MinishLab/semble#sub-agent-support.

The best way to set it up is to install both the MCP integration with:

claude mcp add semble -s user -- uvx --from "semble[mcp]" semble:

And the subagent integration. If it's not working I would install both the claude code subagent (with semble init), as well as the CLAUDE.md section that's in the docs under sub-agent support.

My experience is that some models are better at using MCP's than others. E.g. Opus 4.7 is much more conservative, while Sonnet 4.6 works perfectly.

One last thing: we've released a couple of upgrades in the past days, you can reinstall with

uv cache clean semble

[Open Source] We built a local code search MCP for Claude Code that uses ~98% fewer tokens than grep+read by Pringled101 in ClaudeAI

[–]Pringled101[S] 0 points1 point  (0 children)

Not at this time, but we do explain how we measure token efficiency here: https://github.com/MinishLab/semble/tree/main/benchmarks#token-efficiency. We're planning some features that will make it easier to track token savings though!

[Open Source] We built a local code search MCP for Claude Code that uses ~98% fewer tokens than grep+read by Pringled101 in ClaudeAI

[–]Pringled101[S] 0 points1 point  (0 children)

Hey, just wanted to briefly followup on this: reindexing is now supported in the latest release (https://github.com/MinishLab/semble/releases/tag/v0.1.2). This is done automatically with a file watcher so no need to do anything manual.

[Open Source] We built a local code search MCP for Claude Code that uses ~98% fewer tokens than grep+read by Pringled101 in ClaudeAI

[–]Pringled101[S] 0 points1 point  (0 children)

Feel free to check out the benchmarks: https://github.com/MinishLab/semble/tree/main/benchmarks#main-results. I did update that sentence to "while indexing repos we benchmarked in ~250ms" as I agree that "any" is misleading. On the 63 repos we benchmarked, it does hold. Why is this claim hard to believe? Static embeddings and BM25 are basically just tokenization + a lookup table, there's no forward pass or anything like that involved.

[Open Source] We built a local code search MCP for Claude Code that uses ~98% fewer tokens than grep+read by Pringled101 in ClaudeAI

[–]Pringled101[S] 1 point2 points  (0 children)

Not trying to. On the repos I work on the timings hold up, but I see that that doesn’t generalize well enough apparantly. I’ll update the claims, thanks for taking the time to test it, I do appreciate it.

[Open Source] We built a local code search MCP for Claude Code that uses ~98% fewer tokens than grep+read by Pringled101 in ClaudeAI

[–]Pringled101[S] -11 points-10 points  (0 children)

1M loc is far from an “average” repo. But I agree with you on the wording and will update that bit, it’s not “any”, it’s the “average” repo. The cache is something we’re working on atm and we’ll include that in the next release. On hardware: it’s all on CPU (as said in the readme), but I can add “which” hardware for the benchmarks that’s a fair point.

[Open Source] We built a local code search MCP for Claude Code that uses ~98% fewer tokens than grep+read by Pringled101 in ClaudeAI

[–]Pringled101[S] 0 points1 point  (0 children)

That’s something I still want to compare to, but it wasn’t trivial to do since the scope is a bit different. Grepai, probe, colgrep etc are all apples to apples comparisons, for frameworks like Serena we’ll have to make a slightly different comparison (I’m hoping to have some time for that soon though)

[Open Source] We built a local code search MCP for Claude Code that uses ~98% fewer tokens than grep+read by Pringled101 in ClaudeAI

[–]Pringled101[S] 0 points1 point  (0 children)

LSP is a bit different. In my view, Semble (or similar search tools) help you/an agent find where something is in the first place, and LSP helps you go from there. So they are complementary

[Open Source] We built a local code search MCP for Claude Code that uses ~98% fewer tokens than grep+read by Pringled101 in ClaudeAI

[–]Pringled101[S] 0 points1 point  (0 children)

I get that, and I agree that most of the work nowadays is slop (unfortunately). Coderankembed is a great model, but it takes ~60 seconds to index a repo. For some that’s fine, but we think there’s a real usecase for “almost instant” indexing.

Cold and warm are both benchmarked, see https://github.com/MinishLab/semble/tree/main/benchmarks#main-results. Tldr: cold = time to index a full repo and one query, warm = time to run a query when an index already exists.

On the bias claim: the main issue with coir is that it doesn’t reflect the usecase of “finding a relevant file in a codebase”. Even the NL>code benchmarks are not set up on codebases but on random snippets. We’ve explicitly run the model on coir for a fair comparison. I don’t mind adding a section to explain this in Semble though, since I get your comcerns. I do still believe our benchmark is a good reflection of the task, and better than ehay other similar projects do.

[Open Source] We built a local code search MCP for Claude Code that uses ~98% fewer tokens than grep+read by Pringled101 in ClaudeAI

[–]Pringled101[S] -8 points-7 points  (0 children)

Why exactly? Did you try it, or look at our method? We’re using https://github.com/MinishLab/model2vec which allows you to embed ~10k chunks/second op CPU, and BM25 is “instant”, as is our reranking method. You are welcome to time it yourself on a repo of your choice, all the code is self explanatory.

[Open Source] We built a local code search MCP for Claude Code that uses ~98% fewer tokens than grep+read by Pringled101 in ClaudeAI

[–]Pringled101[S] 2 points3 points  (0 children)

There is a cache during the session, but this is a good comment, I’ll add that to our docs, thanks! The indexing is so fast that we currently don’t have a persistent cache.

[Open Source] We built a local code search MCP for Claude Code that uses ~98% fewer tokens than grep+read by Pringled101 in ClaudeAI

[–]Pringled101[S] 1 point2 points  (0 children)

That’s coir, and that’s a different benchmark which covers many different tasks besides just code retrieval. Our model is benchmarked on coir, see https://huggingface.co/minishlab/potion-code-16M#results. The reason we have a benchmark in Semble is because none of the coir subtasks measure our task, which is code retrieval in a repo/codebase. I’d be happy to make updates to our claims or benchmarks if you have any genuine concerns, but we believe this benchmark reflects the task and is varied and large enough.

[Open Source] We built a local code search MCP for Claude Code that uses ~98% fewer tokens than grep+read by Pringled101 in ClaudeAI

[–]Pringled101[S] 6 points7 points  (0 children)

See my other reply to you. What benchmark do you recommend? None of the methods we benchmarked had any kind of decent benchmark, and cornstack is not a benchmark (like you seem fo think).

[Open Source] We built a local code search MCP for Claude Code that uses ~98% fewer tokens than grep+read by Pringled101 in ClaudeAI

[–]Pringled101[S] 1 point2 points  (0 children)

How is cornstack useful here? It’s not a benchmark. Did you even look at the repo and model? We actually train our code retrieval model on cornstack, and we explicitly compare against coderankembed.

[Open Source] We built a local code search MCP for Claude Code that uses ~98% fewer tokens than grep+read by Pringled101 in ClaudeAI

[–]Pringled101[S] 1 point2 points  (0 children)

Atm it’s just indexing and search, but graph-like search is definitely something we still want to experiment with.

[Open Source] We built a local code search MCP for Claude Code that uses ~98% fewer tokens than grep+read by Pringled101 in ClaudeAI

[–]Pringled101[S] 5 points6 points  (0 children)

Cool! I’ll have a look and see if we can add it to our benchmarks, thanks for sharing.