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

# Quickstart

## Try CyborgDB in 5 minutes

Run this end-to-end — install, create an encrypted index, upsert, and query — with no server and no config:

```bash theme={null}
pip install cyborgdb-core
```

```python Python icon="python" theme={null}
import cyborgdb_core as cyborgdb
import secrets

# Ephemeral in-memory backing store — no server, no config.
client = cyborgdb.Client(storage_config=cyborgdb.StorageConfig.memory())

# Generate an encryption key for the index.
# WARNING: store this key securely — data encrypted with a lost key is unrecoverable.
index_key = secrets.token_bytes(32)

# Create an encrypted index.
index = client.create_index(index_name="my_index", index_key=index_key)

# Upsert some items (index_key is required on every data operation).
items = [
    {"id": "item_1", "vector": [0.1, 0.2, 0.3, 0.4], "contents": "Hello!"},
    {"id": "item_2", "vector": [0.5, 0.6, 0.7, 0.8], "contents": "Bonjour!"},
    {"id": "item_3", "vector": [0.9, 0.10, 0.11, 0.12], "contents": "Hola!"},
]
index.upsert(items, index_key=index_key)

# Query the encrypted index — request distance and metadata.
results = index.query(
    query_vectors=[0.1, 0.2, 0.3, 0.4],
    top_k=2,
    include=["distance", "metadata"],
    index_key=index_key,
)

# Contents live in separately encrypted item records — retrieve them with get().
top_items = index.get([r["id"] for r in results], index_key=index_key)
by_id = {item["id"]: item for item in top_items}
for r in results:
    contents = by_id[r["id"]]["contents"].decode()
    print(f"ID: {r['id']}  Distance: {r['distance']:.4f}  Contents: {contents}")
```

<Warning>
  **Store `index_key` before you upsert any data.** CyborgDB has no key-recovery path — losing the key means losing the data. For anything past evaluation, keep the key in AWS Secrets Manager, Vault, or your KMS. See [Managing Keys](../embedded/guides/advanced/managing-keys).
</Warning>

<Note>
  Without an API key the client runs in free-tier mode, capped at 1,000,000 items per index. Pass a key from the [CyborgDB Admin Dashboard](https://cyborgdb.co) as the first argument (`cyborgdb.Client(api_key, storage_config=...)`) to lift the cap. See [Get an API Key](./get-api-key).
</Note>

***

## Deploying for real? Use the Service.

Embedded is the fastest path to a first query; the Service is what you deploy. It's a self-hosted REST API with client SDKs for Python, JavaScript, Go, and REST.

<CardGroup cols={2}>
  <Card title="Service Quickstart (Docker)" href="../service/guides/intro/quickstart-docker" icon="docker">
    Spin up the REST service in one `docker run` and reach a first query.
  </Card>

  <Card title="Service Quickstart (Python)" href="../service/guides/intro/quickstart-python" icon="python">
    Same REST service via `pip install cyborgdb-service`.
  </Card>
</CardGroup>

***

## Migrating from another vector database

Already on Pinecone, Qdrant, Weaviate, ChromaDB, or Milvus? Bring your workload over with **CyborgDB Migrate** — an interactive TUI wizard (or headless TOML config) that resumes on interrupt and preserves IDs and metadata.

<Card title="CyborgDB Migrate" href="./migrate" icon="arrow-right-arrow-left">
  ```bash theme={null}
  pip install "cyborgdb-migrate[pinecone]"   # or [qdrant], [weaviate], [chromadb], [milvus]
  cyborgdb-migrate
  ```
</Card>

***

## Framework integrations

<CardGroup cols={2}>
  <Card title="LangChain Integration" href="../integrations/langchain/introduction" icon="link">
    Drop-in replacement for existing vector stores:

    ```python theme={null}
    from cyborgdb_core.integrations.langchain import CyborgVectorStore

    store = CyborgVectorStore.from_texts(
        texts=["hello world", "goodbye world"],
        embedding="all-MiniLM-L6-v2",
        index_key=CyborgVectorStore.generate_key(save=True),
    )
    ```
  </Card>

  <Card title="More Integrations Coming" href="../integrations/about" icon="plus">
    LlamaIndex, Haystack, Semantic Kernel, and custom frameworks.
    [Request an integration →](https://www.cyborg.co/contact)
  </Card>
</CardGroup>

***

## Next steps

<CardGroup cols={3}>
  <Card title="Learn the Concepts" href="./about" icon="book">
    How CyborgDB enables confidential vector search.
  </Card>

  <Card title="Choose a Backing Store" href="./backing-stores" icon="database">
    Memory, disk (default), or S3 — pick per environment.
  </Card>

  <Card title="Deployment Models" href="./deployment-models" icon="server">
    Embedded vs. Service, and when to pick each for production.
  </Card>
</CardGroup>
