search indexing collection manager + search usage questions #15
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
kahliburke/Kaimon.jl#15
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
First-time user..
I'm trying to understand the search configuration:
Another few usage questions:
As seen in the image above, I indexed a project (not sure why it says stale, but ok..). When I then try to search, I get a status error
what's going on here?
Thanks for the detailed questions! Let me address each:
Collection Manager navigation
Yes, there are more fields below "Dirs" — but you'll need the new version, there's a UI bug that's blocking some of them.
Window sizing
The Collection Manager is a modal overlay. Its size is currently fixed relative to the terminal — you can't resize it independently. Making the terminal window larger will give it more space. We'll look at making the modal sizing more adaptive in a future release.
Indexing multiple packages
Two approaches:
Index each package individually — each gets its own Qdrant collection (e.g.,
mypackage_a,mypackage_b). You can search a specific collection withqdrant_search_code(query="...", collection="mypackage_a")or search across all withsmlabnotes_searchif you have the SMLabNotes extension.Add all packages as external projects in the Collection Manager — press
ato add each project path. They'll each get their own collection but all appear in the search UI. You can then search any of them by selecting the collection in the Search tab.There isn't currently a single "search all collections at once" in the core Qdrant tools — each search targets one collection. This is a known limitation we're considering for a future release.
Gate vs Search relationship
The gate and search are independent. You do NOT need an active gate session to perform searches. The search system uses:
The gate is only needed for the
extool (code execution), session management, etc. Indexing and searching are purely Qdrant + Ollama."Status error" on search
The error in your screenshot indicates either:
qdrant(if installed via Docker:docker run -p 6333:6333 qdrant/qdrant)ollama serveollama pull qwen3-embedding:0.6bCheck the Search tab status indicators — they show whether Qdrant and Ollama are reachable. Both need green indicators for search to work.
The "stale" label means the index hasn't been synced recently — it's not an error, just informational. It will auto-sync when files change if a gate session is connected to that project.
Let me know if you have more questions!
@haakon-e Hi, thanks for trying things out here. In addition to Claude's response looking at your issues, I wanted to do the human thing too!
Many of these issues are being worked on currently in the 1.1 branch. That's been a little messy due to another unreleased dependency, but now that Tachikoma 2.0.0 was released tonight, the 1.1 branch is looking good and should be easy to install.
I put up a Gist which could automate this, it looks for old versions of those packages and attempts to set you up with the latest and greatest. You'll see some of your concerns have been addressed, maybe not all of them yet. Would you give it a try and then perhaps let me know what remains on your list?
Thank you for the detailed comments! I was able to install v1.1 as an app, really neat workflow!
Gate.serve()to work correctly?KaimonandJuliaFormattercannot both be installed in the base environment due to incompatible versions ofCommonMark. I removedJuliaFormatterfor now (they also have anAppworkflow) to continue experimenting with this package.A few nits that would improve my experience:
m>a, I add the path. Most subdirs are automatically added, however:cmd+arroworoption+arrowis not available to move word-by-word (instead of character-by-character). This is mostly an annoyance because the paths are absolute, so a lot of total characters need to be scrolled past.a, but it's not related any active session, so there's no indicator in the collection manager for which collection this is. It would be useful if I could add a "name" (suggestion: by default use the relative path from the nearest.gitroot), see:a. Isave, but it does not appear in the collection manager. Am I doing this incorrectly?I'm still not able to get the search functionality working.
qdrantis running in docker,ollamais running. One new piece of progress in the collection manager is that as I'm pressings(sync) repeatedly, I see the number of Vectors increase. That said, still getting the bad request from above. Will try to tinker a bit more with this.The other location where I've wanted to copy text is in the activity tab. Sometimes the AI tries to run something that I'd want to experiment with manually, but it seems I'm not able to copy text. ↩︎
@haakon-e Hey glad to see you using stuff here, although you're not necessarily using it the way I intended :)
The thing you show about the name not showing up after
addlooks like a legit bug I'll fix shortly.The reason the interface is fairly minimal here is that you're actually not supposed to need to do much if anything inside of it.
When you run
kaimonfor the first time, it should prompt you about installing it into the global environment. That's there to allow any Julia REPL you start to connect and be available as a "Gate session". If you don't want to do so, you don't have to, you'd just need to add it to the project(s) you wish to use. You could have a Julia startup file you use with those projects, or you can start things manually if you want. Look at the code added to~/.Julia/config/startup.jland you'll see that it's just a couple lines of code:In the search the paths are relative to the project root. So I never have ~ in there and actually doubt that it would interpret ~ properly. It should look more like this:
I don't disagree that there could be more refinement here or there, but isn't that always the case? The configuration is just there to get it pointed towards your source code and get it indexing. In general the only reason to even 'add' a project manually here is if it's not a Julia project but you still want it indexed.
In general the workflow is, simply
julia --projectin a project directory, then if the source is in a standard place it will just work. It also will autodetect file types etc.If you're on the Discourse please feel free to reach out and maybe we can address whatever you're being blocked by.
@haakon-e This issue has become a bit sprawling. I have identified one concrete bug which I am going to fix in reference to this issue #. Then I'm going to close this issue but I hope you do not take that as me dismissing your questions. I just would like to move the conversation to a different venue. If you're on the Julia discourse, that might be a good approach or perhaps I can get GH discussions set up for this project.
I greatly appreciate the feedback and the time you took to write it up, please submit another issue with specifics as they come up. I'm happy to continue the conversation.
Thanks again for helping me grasp the basics here! I did eventually realize that adding
to my
startup.jlfile indeed is the most convenient approach.Let me clarify that I realize that some of the comments/suggestions above are at great level of specificity, mostly during the initial phase of familiarizing myself with the tool, and in no way detracts from the immense joy I've had actually using it with Claude code. Really, it's orders of magnitude better than the countless
julia -e '....'iterations of the past.I do have a discourse account and will adopt that for "usage questions" in the future. Thank you again for engaging with me!
@haakon-e
So there is a configuration that you're encouraged to set up which does the startup snipped automatically (press g in Config tab for global gate setup):
But it essentially just adds that.
I fixed the add project index bug, it was basically just not parsing the project name from paths which ended in '/'
@haakon-e If you're wondering about the magic that creates GIFs like the one above, well that's from our good friend Tachikoma.jl which this project is built on.
If you'd like to send me a 'recording' of a session inside Kaimon and what's happening, you can press ctrl-r to start the recording and then ctrl-r again to save it. There is an option to save a gif/svg if you have the font set up but regardless what it will save is the .tach file which is a recording of all the frame rendering in a compressed format. Send it to me and I can see exactly what you were doing along the way. Just one option.
Thank you for that feedback, that's exactly why I use this tool 24/7. When you get it dialed in, I think it's really super. Happy to help you get there if I can. Also, no complaints about putting this into the GitHub issue, I'm grateful to hear about your experiences, to assist in smoothing out any rough edges, and to continue to improve this platform. 1.1 has a lot of neat things in it which you probably haven't gotten to yet, such as extensions, TCP based remote session, and more.
Fixed the concrete bug:
basenamereturned empty string for paths ending in/, causing blank collection names on add. Fix:String(rstrip(abspath(path), '/'))in the collection manager save path.Also addressed in 1.1:
Thanks @haakon-e for the detailed feedback!