Team setup¶
One shared index¶
The index lives in your object store (or a local path). Nothing is sent anywhere else.
comindly link ../shared-lib ../service-a ../service-b --index-dir s3://your-bucket/comindly --no-llm
- Run it from CI on every merge to the default branch (see CI);
--incrementalre-parses only changed files. Each run is a new, atomically readable version. - What gets indexed: symbols and calls/imports across repos (Python, TypeScript/JavaScript, Go, Java, Kotlin, Rust; SCIP indexes when present), service contracts (HTTP routes and clients, SQS/SNS/S3, SQL tables), Terraform queues/topics/buckets and subscriptions, YAML config values, package versions, conventions and co-change recipes.
--no-llmkeeps indexing free and local; drop it to add LLM summaries, flow walkthroughs and a style guide (sends code to your configured LLM).
Each developer can run comindly doctor to check their setup (index, hooks, keys, signing).
Give agents the index¶
comindly serve --index-dir s3://your-bucket/comindly # MCP server (add to the agent's config)
comindly init-hooks claude # Claude Code hooks to paste into settings
- MCP tools: navigation (
search,find,zoom,thread,flow), impact (ripple,context_pack,preflight,contracts), conventions (guide) and the ledger (why,remember,review). - Hooks inject a short digest at session start and the records about a file just before an
agent edits it (about 60 ms; a remote index is read from a local mirror refreshed in the
background). Other agents:
comindly hook generic pre-editprints plain markdown.
Team settings¶
Settings everyone on an index must share live with the index (<index>/_team, a versioned LanceDB
table), so every member, CI job and agent runs the same: the LLM endpoint and model, the embedding model
(an index's vectors only work with the model that made them) and which LLM steps run while indexing. They
win over personal settings. Your own config.toml keeps what is personal: the index location, AWS
profile, your name and app preferences.
The team settings hold no secrets. Anyone who can read the index can see them; access to the index is the trust boundary.
Set them once, in the app (Settings → Team) or from the terminal:
comindly team set name="Platform" llm_model=gpt-6-luna enrich=true
comindly team # what is set, and where your API key comes from
Saving needs write access to the index; two people saving at once cannot overwrite each other (the second save is refused and asks to reload).
API keys¶
Everyone brings their own LLM API key. comindly looks for it, in order:
- the entry for the team's name in
~/.config/comindly/credentials, - the default key in that file,
OPENAI_API_KEY.
The file is created readable only by you. Set it from the app (Settings → Your API key) or the terminal:
comindly team key # prompts for the key; stored under the team's name
comindly team key --default # your default key, for any team
# ~/.config/comindly/credentials
llm_api_key = "sk-..." # default
[[team]]
name = "Platform"
llm_api_key = "sk-..."
CI sets OPENAI_API_KEY from its secret store.
Joining¶
A colleague needs only the index location and their own cloud access:
aws sso login --profile team-dev # their own access to the bucket
comindly join s3://bucket/comindly --profile team-dev # remembers both
or, in the app, Join a team on the first screen (index location, AWS profile). For LLM steps they add their own API key as above.