{
  "schema_version": 2,
  "id": "develop/ai/featureform/quickstart",
  "title": "Redis Feature Form quickstart",
  "url": "https://redis.io/docs/latest/develop/ai/featureform/quickstart/",
  "summary": "Register providers, define a feature, materialize it to Redis, and serve it.",
  "tags": [],
  "last_updated": "2026-09-11T15:54:40+01:00",
  "page_type": "content",
  "content_hash": "f64aa9897c512850fcf3897d1ffb5f0e03cf3aeb65bcb411037746fe32a4f989",
  "sections": [
    {
      "id": "overview",
      "title": "Overview",
      "role": "overview",
      "text": "Redis Feature Form is a feature platform for defining, deploying, and serving machine learning features, with Redis as the low-latency online store at inference time. This quickstart covers one workflow end to end — register providers, apply a definitions file, and read back the result — to confirm Feature Form is set up correctly in your environment."
    },
    {
      "id": "before-you-begin",
      "title": "Before you begin",
      "role": "content",
      "text": "Before you begin, you'll need: \n\n- A running [Feature Form deployment](https://redis.io/docs/latest/operate/featureform/deploy) with durable state\n- An existing [workspace](https://redis.io/docs/latest/develop/ai/featureform/manage-workspace)\n- A working [auth path](https://redis.io/docs/latest/operate/featureform/configure-auth) for `ff`\n- Reachable Postgres and Redis endpoints for your offline-store and online-store [providers](https://redis.io/docs/latest/develop/ai/featureform/register-providers)\n- Sample data loaded that matches the quickstart definitions file"
    },
    {
      "id": "install-the-ff-cli",
      "title": "Install the `ff` CLI",
      "role": "setup",
      "text": "The Feature Form CLI ships as the `redis-featureform` package on PyPI. **Do not run `pip install featureform`** — that's an unrelated upstream project. Install into a virtual environment:\n\n[code example]"
    },
    {
      "id": "1-confirm-identity-and-workspace-access",
      "title": "1. Confirm identity and workspace access",
      "role": "content",
      "text": "If you haven't yet, log in with `ff auth login`. Then:\n\n[code example]\n\nUse the returned workspace ID in later commands."
    },
    {
      "id": "2-confirm-the-built-in-env-secret-provider",
      "title": "2. Confirm the built-in `env` secret provider",
      "role": "content",
      "text": "[code example]\n\nIf a provider uses a secret reference like `env:VAR_NAME`, make sure `VAR_NAME` exists in the runtime environment that resolves secrets."
    },
    {
      "id": "3-register-your-providers",
      "title": "3. Register your providers",
      "role": "content",
      "text": "See [Register providers](https://redis.io/docs/latest/develop/ai/featureform/register-providers) for steps to register the offline and online providers before applying resources."
    },
    {
      "id": "4-review-your-definitions-file",
      "title": "4. Review your definitions file",
      "role": "content",
      "text": "Open the Python definitions file you plan to apply and confirm it declares the resources you want in the workspace. See [Typical file structure](https://redis.io/docs/latest/develop/ai/featureform/define-and-deploy-features#typical-file-structure) for the canonical shape."
    },
    {
      "id": "5-apply-the-file",
      "title": "5. Apply the file",
      "role": "content",
      "text": "[code example]\n\nFor a dry run first:\n\n[code example]"
    },
    {
      "id": "6-inspect-the-results",
      "title": "6. Inspect the results",
      "role": "content",
      "text": "[code example]\n\nYou should see the expected graph entries plus the catalog locations created by the applied resources."
    },
    {
      "id": "7-query-the-materialized-data",
      "title": "7. Query the materialized data",
      "role": "content",
      "text": "Read sampled rows from a dataset, training set, or feature view in your applied graph. Use a resource name from the `ff graph feature list` or `ff catalog list` output in step 6:\n\n[code example]\n\nSee [Query data](https://redis.io/docs/latest/develop/ai/featureform/query-data) for the full set of flags and supported kinds."
    },
    {
      "id": "next-steps",
      "title": "Next steps",
      "role": "content",
      "text": "- [Serve features](https://redis.io/docs/latest/develop/ai/featureform/serve-features) at inference time from a feature view in your graph.\n- [Update features](https://redis.io/docs/latest/develop/ai/featureform/update-features) to iterate on a definitions file you've already applied."
    }
  ],
  "examples": [
    {
      "id": "install-the-ff-cli-ex0",
      "language": "bash",
      "code": "python3 -m venv .venv && source .venv/bin/activate\npip install redis-featureform\nff --help",
      "section_id": "install-the-ff-cli"
    },
    {
      "id": "1-confirm-identity-and-workspace-access-ex0",
      "language": "bash",
      "code": "ff rbac whoami\nff workspace get --name <workspace-name>",
      "section_id": "1-confirm-identity-and-workspace-access"
    },
    {
      "id": "2-confirm-the-built-in-env-secret-provider-ex0",
      "language": "bash",
      "code": "ff secret-provider list --workspace <workspace-id>",
      "section_id": "2-confirm-the-built-in-env-secret-provider"
    },
    {
      "id": "5-apply-the-file-ex0",
      "language": "bash",
      "code": "ff apply \\\n  --workspace <workspace-id> \\\n  --file path/to/your/definitions.py \\\n  --wait \\\n  --wait-for finished",
      "section_id": "5-apply-the-file"
    },
    {
      "id": "5-apply-the-file-ex1",
      "language": "bash",
      "code": "ff apply \\\n  --workspace <workspace-id> \\\n  --file path/to/your/definitions.py \\\n  --plan",
      "section_id": "5-apply-the-file"
    },
    {
      "id": "6-inspect-the-results-ex0",
      "language": "bash",
      "code": "ff graph workspace stats --workspace <workspace-id>\nff graph feature list --workspace <workspace-id>\nff catalog list --workspace <workspace-id>",
      "section_id": "6-inspect-the-results"
    },
    {
      "id": "7-query-the-materialized-data-ex0",
      "language": "bash",
      "code": "ff dataframe query <resource-name> \\\n  --workspace <workspace-id> \\\n  --kind dataset \\\n  --limit 5 \\\n  --insecure",
      "section_id": "7-query-the-materialized-data"
    }
  ]
}
