Metadata-Version: 2.4
Name: indexio
Version: 0.1.1
Summary: Lightweight semantic indexing and retrieval for project knowledge sources
Author-email: Arash Shahidi <A.Shahidi@campus.lmu.de>
License-Expression: MIT
Project-URL: Homepage, https://github.com/arashshahidi1997/indexio
Project-URL: Documentation, https://arashshahidi1997.github.io/indexio/
Project-URL: Repository, https://github.com/arashshahidi1997/indexio
Project-URL: Issues, https://github.com/arashshahidi1997/indexio/issues
Keywords: rag,embeddings,chromadb,semantic-search,indexing
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Text Processing :: Indexing
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pyyaml>=6
Requires-Dist: langchain-text-splitters>=0.3
Requires-Dist: langchain-chroma>=0.2
Requires-Dist: langchain-huggingface>=0.1
Provides-Extra: code
Requires-Dist: tree-sitter>=0.23; extra == "code"
Requires-Dist: tree-sitter-python>=0.23; extra == "code"
Provides-Extra: chat
Requires-Dist: fastapi>=0.110; extra == "chat"
Requires-Dist: uvicorn[standard]>=0.29; extra == "chat"
Requires-Dist: pydantic-settings>=2.2; extra == "chat"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: mkdocs>=1.6; extra == "dev"
Requires-Dist: mkdocs-material>=9.5; extra == "dev"
Dynamic: license-file

# indexio

Lightweight semantic indexing and retrieval for project knowledge sources for prompt and context engineering.

Indexes document sources (markdown, code, etc.) into a ChromaDB vector store and provides semantic search. Standalone library — no knowledge of projio or other ecosystem packages.

## Install

```bash
pip install indexio
# or editable from source:
make dev
```

## Quick start

```bash
# Write a starter config into your project
indexio init

# Build the index
indexio build

# Query
indexio query "how does authentication work"

# Show store status
indexio status
```

`indexio status` compares the current source matches to the last build manifest and groups sources into buckets such as `indexed`, `changed`, and `not yet built`.

## Chat server

A built-in RAG chatbot backend and embeddable widget.

`indexio` owns the chat API, demo page, and widget assets.
`projio` owns site-builder-specific mounting for ecosystem docs sites.

```bash
# Install with chat support
pip install indexio[chat]

# Start the chat server
indexio serve

# With a custom LLM
indexio serve \
    --llm-backend openai --llm-model gpt-4 --llm-base-url https://api.openai.com
```

Open the URL printed by the server, such as `http://localhost:9100/`.
If that port is already in use, `indexio serve` will automatically pick the next free port and print it.

Embed the widget directly in any docs site:

```html
<script>
  window.INDEXIO_CHAT = {
    apiUrl: "http://localhost:9100/chat/",
    title: "My Docs Assistant",
    storageKey: "myproject_chat_v1",
  };
</script>
<script src="http://localhost:9100/chatbot/chatbot.js"></script>
<link href="http://localhost:9100/chatbot/chatbot.css" rel="stylesheet">
```

Settings are also configurable via `INDEXIO_CHAT_*` environment variables.

If your project uses `projio` to build docs sites, prefer enabling chatbot injection there instead of wiring the widget tags by hand.

## Python API

```python
from indexio import load_indexio_config, build_index, query_index

cfg = load_indexio_config(".indexio/config.yaml", root="/path/to/project")
build_index(config_path=".indexio/config.yaml", root="/path/to/project")
results = query_index(config_path=".indexio/config.yaml", root="/path/to/project", query="embeddings")
```
