Skip to content

feat: Phase 1 - Added different data modes to UI server#6223

Open
ntkathole wants to merge 1 commit intofeast-dev:masterfrom
ntkathole:rest_ui_phase1
Open

feat: Phase 1 - Added different data modes to UI server#6223
ntkathole wants to merge 1 commit intofeast-dev:masterfrom
ntkathole:rest_ui_phase1

Conversation

@ntkathole
Copy link
Copy Markdown
Member

@ntkathole ntkathole commented Apr 4, 2026

What this PR does / why we need it:

Implements Phase 1 for #5411

Usage example:

# Current behavior (unchanged)
feast ui

# REST mode — mounts /api/v1/* routes from the REST registry server
feast ui --mode rest

# External REST — proxies /api/v1/* to a separate registry server
feast ui --mode rest-external --rest-api-url http://registry-host:6570/api/v1

# With proxy prefix
feast ui --mode rest --root_path /feast

Files Modified

  • sdk/python/feast/cli/ui.py - Added two new CLI options:

--mode / -m: Accepts proto (default), rest, or rest-external
--rest-api-url: Required when using --mode=rest-external, specifies the external REST registry URL

Added validation: rest-external mode requires --rest-api-url

  • sdk/python/feast/feature_store.py - Updated serve_ui() method:

Added mode and rest_api_url parameters, passed through to ui_server.start_server()

  • sdk/python/feast/ui_server.py - Rewritten with three mode-specific setup functions:
Function Mode What it does
_setup_proto_mode() proto Identical to original - GET /registry returns serialized proto blob
_setup_rest_mode() rest Creates RegistryServer, mounts all REST routes from feast.api.registry.rest under /api/v1/ as a sub-application. Also keeps /registry for backward compat
_setup_rest_external_mode() rest-external Reverse-proxies all /api/v1/{path} requests to the external URL via httpx.Client. Also keeps /registry for backward compat
_build_projects_list() all Generates projects-list.json with a "mode" field and mode-aware registryPath (/registry for proto, /api/v1 for REST modes)

Which issue(s) this PR fixes:

#5411

Checks

  • I've made sure the tests are passing.
  • My commits are signed off (git commit -s)
  • My PR title follows conventional commits format

Testing Strategy

  • Unit tests
  • Integration tests
  • Manual tests
  • Testing is not required for this change

Open with Devin

@ntkathole ntkathole self-assigned this Apr 4, 2026
@ntkathole ntkathole requested a review from a team as a code owner April 4, 2026 04:25
devin-ai-integration[bot]

This comment was marked as resolved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants