> ## Documentation Index
> Fetch the complete documentation index at: https://cognis.vasanth.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Feature flags

> Every feature flag in the workspace, what it pulls in, and where it lives.

Cognis is feature-light by default. Every external integration — providers, vector stores, checkpoint backends, observability exporters — is feature-gated so the core crates compile with no network deps. Pick what you need; pay for nothing else.

## cognis (umbrella)

| Feature            | Pulls in                          |
| ------------------ | --------------------------------- |
| `openai` (default) | OpenAI provider + embeddings      |
| `ollama` (default) | Ollama provider + embeddings      |
| `anthropic`        | Anthropic Messages                |
| `google`           | Gemini chat + embeddings          |
| `azure`            | Azure OpenAI                      |
| `voyage`           | Voyage embeddings                 |
| `all-providers`    | Every provider above              |
| `cache-sqlite`     | SQLite-backed model cache         |
| `tools-http`       | HTTP request primitives for tools |

```bash theme={null}
cargo add cognis --features anthropic,google,vectorstore-faiss
cargo add cognis --features all-providers
```

## cognis-core, cognis-macros

These crates compile with **no** network features ever. Anything that does I/O lives in a sibling crate.

## cognis-llm

| Feature            | Effect                             |
| ------------------ | ---------------------------------- |
| `openai` (default) | `reqwest` + OpenAI client          |
| `ollama` (default) | `reqwest` + Ollama client (no key) |
| `anthropic`        | `reqwest` + Anthropic client       |
| `google`           | `reqwest` + Gemini client          |
| `azure`            | `reqwest` + Azure OpenAI client    |
| `all-providers`    | All of the above                   |

OpenRouter uses the OpenAI client with `Provider::OpenRouter`; no separate feature.

## cognis-rag

### Embeddings

| Feature            | Provider                                    |
| ------------------ | ------------------------------------------- |
| `openai` (default) | OpenAI text-embedding-3-\*                  |
| `ollama` (default) | Local Ollama embeddings                     |
| `google`           | Google text-embedding-004, gemini-embedding |
| `voyage`           | Voyage AI                                   |

### Vector stores

| Feature                | Backend                     |
| ---------------------- | --------------------------- |
| `vectorstore-faiss`    | Local FAISS index (no HTTP) |
| `vectorstore-chroma`   | Chroma server               |
| `vectorstore-qdrant`   | Qdrant server               |
| `vectorstore-pinecone` | Pinecone (managed)          |
| `vectorstore-weaviate` | Weaviate server             |
| `all-vectorstores`     | All of the above            |

### Loaders

| Feature       | Loader      |
| ------------- | ----------- |
| `csv-loader`  | CSV         |
| `html-loader` | HTML        |
| `yaml-loader` | YAML        |
| `toml-loader` | TOML        |
| `web-loader`  | HTTP fetch  |
| `pdf-loader`  | PDF         |
| `all-loaders` | All loaders |

`InMemoryVectorStore`, `FakeEmbeddings`, `CachedEmbeddings`, `BatchedEmbeddings`, the indexing pipeline, and the in-memory record manager are always available.

## cognis-graph

| Feature           | Pulls in                                   |
| ----------------- | ------------------------------------------ |
| `sqlite`          | `sqlx/sqlite` for `SqliteCheckpointer`     |
| `postgres`        | `sqlx/postgres` for `PostgresCheckpointer` |
| `serializer-cbor` | CBOR-encoded checkpoint payloads           |

`InMemoryCheckpointer` and the engine are always available.

## cognis-trace

| Feature             | Pulls in                                                                  |
| ------------------- | ------------------------------------------------------------------------- |
| `stdout` (default)  | `StdoutExporter`                                                          |
| `langfuse`          | `reqwest`, `secrecy`, `base64`, plus Langfuse exporter / prompts / scorer |
| `all`               | Every exporter                                                            |
| `integration_tests` | Tests against real services (off by default)                              |

`MockExporter` is always built — useful in tests.

## Picking the minimum set

<Tabs>
  <Tab title="Local Ollama only">
    ```toml theme={null}
    cognis = { version = "0.3", features = ["ollama"] }
    ```
  </Tab>

  <Tab title="OpenAI + RAG with FAISS">
    ```toml theme={null}
    cognis = { version = "0.3", features = ["openai"] }
    cognis-rag = { version = "0.3", features = ["vectorstore-faiss", "openai"] }
    ```
  </Tab>

  <Tab title="Multi-provider with traces">
    ```toml theme={null}
    cognis = { version = "0.3", features = ["all-providers", "cache-sqlite"] }
    cognis-trace = { version = "0.3", features = ["langfuse"] }
    ```
  </Tab>

  <Tab title="Stateful agents on Postgres">
    ```toml theme={null}
    cognis = { version = "0.3", features = ["openai"] }
    cognis-graph = { version = "0.3", features = ["postgres"] }
    cognis-trace = { version = "0.3", features = ["langfuse"] }
    ```
  </Tab>
</Tabs>

## See also

<CardGroup cols={2}>
  <Card title="Installation" icon="download" href="/get-started/installation">
    Where features live in your `Cargo.toml`.
  </Card>

  <Card title="Environment variables" icon="key" href="/reference/env-vars">
    What `Client::from_env()` reads.
  </Card>
</CardGroup>
