> For the complete documentation index, see [llms.txt](https://docs.feast.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.feast.dev/master/reference/online-stores/chronon.md).

# Chronon (contrib)

## Description

The [Chronon](https://chronon.ai/) online store lets Feast read online features from a Chronon service.

This integration is a bridge, not a Feast-managed online store. Chronon owns materialization and serving. Feast builds Chronon request URLs from `ChrononSource` metadata and converts Chronon responses into Feast values for `get_online_features`.

## Getting started

Configure the Chronon online store with the base URL of your Chronon service:

{% code title="feature\_store.yaml" %}

```yaml
project: my_project
registry: data/registry.db
provider: chronon
offline_store:
  type: chronon
online_store:
  type: chronon
  path: http://localhost:8080
  timeout: 30
  verify_ssl: true
```

{% endcode %}

Each online feature view must use a `ChrononSource` with exactly one of `chronon_join` or `chronon_group_by`:

```python
source = ChrononSource(
    name="driver_stats_source",
    materialization_path="data/chronon/driver_stats",
    chronon_join="team/driver_stats.v1",
    online_endpoint="https://chronon.example.com",
    timestamp_field="event_timestamp",
)
```

If `online_endpoint` is set on the source, it overrides the online store `path` for that feature view.

## Request routing

Feast builds Chronon URLs from the source metadata:

| Source field       | URL shape                                        |
| ------------------ | ------------------------------------------------ |
| `chronon_join`     | `/v1/features/join/{quoted_chronon_join}`        |
| `chronon_group_by` | `/v1/features/groupby/{quoted_chronon_group_by}` |

The request body is a list of entity rows. Chronon responses are expected to be JSON objects with a `results` list whose length matches the number of requested entity keys. Successful rows preserve missing/null feature values. A `Failure` row (or an unknown/missing status) raises `RuntimeError`, even when the HTTP status is 200, so a backend error is not silently treated as an unknown entity. A failure in any row fails the entire retrieval call. HTTP errors also raise.

Retries are opt-in through `connection_retries` (0–5, default 0). This uses Feast's shared HTTP session manager, including retries for the read-only POST request on connection failures, read timeouts, and HTTP 429, 500, 502, 503, and 504. HTTP 400 and per-row Chronon failures are not retried. There are at most `1 + connection_retries` attempts, with the session manager's exponential backoff and `Retry-After` handling. `timeout` applies to each attempt's connection/read timeout, not a total wall-clock deadline; account for additional attempts and backoff in your inference latency budget.

## Local service testing

The repository includes `infra/scripts/chronon/start-local-chronon-service.sh` for live integration testing against Chronon's quickstart service. The script expects a local [airbnb/chronon](https://github.com/airbnb/chronon) checkout with the quickstart Mongo implementation and service jars built.

Use `CHRONON_REPO` when the Chronon checkout is not located at `<feast repo>/chronon`:

```bash
CHRONON_REPO=/path/to/chronon infra/scripts/chronon/start-local-chronon-service.sh
```

For a preflight-only check:

```bash
CHRONON_PREFLIGHT_ONLY=1 CHRONON_REPO=/path/to/chronon infra/scripts/chronon/start-local-chronon-service.sh
```

## Configuration reference

| Parameter            | Required | Default                 | Description                                               |
| -------------------- | -------- | ----------------------- | --------------------------------------------------------- |
| `type`               | yes      | `chronon`               | Must be set to `chronon`.                                 |
| `path`               | no       | `http://localhost:8080` | Chronon online service base URL.                          |
| `timeout`            | no       | `30`                    | HTTP request timeout in seconds.                          |
| `connection_retries` | no       | `0`                     | Additional HTTP attempts, an integer from 0 to 5.         |
| `verify_ssl`         | no       | `true`                  | Whether TLS certificates are verified for HTTPS requests. |

## Functionality Matrix

The set of functionality supported by online stores is described in detail [here](/master/reference/online-stores/overview.md#functionality). Below is a matrix indicating which functionality is supported by the Chronon online store.

|                                                           | Chronon |
| --------------------------------------------------------- | ------- |
| write feature values to the online store                  | no      |
| read feature values from the online store                 | yes     |
| update infrastructure (e.g. tables) in the online store   | no      |
| teardown infrastructure (e.g. tables) in the online store | no      |
| generate a plan of infrastructure changes                 | no      |
| support for on-demand transforms                          | no      |
| readable by Python SDK                                    | yes     |
| readable by Java                                          | no      |
| readable by Go                                            | no      |
| support for entityless feature views                      | no      |
| support for concurrent writing to the same key            | n/a     |
| support for ttl (time to live) at retrieval               | Chronon |
| support for deleting expired data                         | Chronon |
| collocated by feature view                                | Chronon |
| collocated by feature service                             | Chronon |
| collocated by entity key                                  | Chronon |

To compare this set of functionality against other online stores, please see the full [functionality matrix](/master/reference/online-stores/overview.md#functionality-matrix).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.feast.dev/master/reference/online-stores/chronon.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
