Skip to content

Repository files navigation

AI Pulp UI

Note: Everything in this repository was generated using VS Code and the models GPT-5.2 and Sonnet 4.5.

If you find any bugs or have any requests feel free to raise a github issue.

React + TypeScript frontend for managing Pulp resources via the Pulp REST API.

Supported content plugins

Plugin Repositories Remotes Distributions Publications Content browsing
RPM ✅ (packages)
File ✅ (files)
DEB ✅ (packages)
Container n/a
Ansible ✅ (collection) n/a
Gem
Hugging Face
Maven n/a
NPM n/a
OSTree n/a
Python
Rust n/a

Notes:

  • Publications only exist for plugins that use them (Gem, Python, Hugging Face, plus RPM/File/DEB).
  • Maven repositories have no sync operation (Maven acts as a pull-through cache via its remote).
  • Ansible remotes managed by the UI are collection remotes (/remotes/ansible/collection/).
  • The corresponding plugin must be installed on the Pulp backend for its section to work.

The UI talks to the backend at http://localhost:8080/pulp/api/v3/ (by default).

  • In dev (npm run dev), the UI runs on http://localhost:3000.
  • In Docker (see below), the UI is served from the Pulp container at http://localhost:8080/ai-pulp-ui/.

You can override the backend with the PULP_BACKEND environment variable (default: http://localhost:8080).

Screenshots

Login

Dashboard

Tasks

Requirements

  • Node.js 18+ and npm
  • Docker or Podman (for the Docker image, or ./tests/run_container.sh)
  • A running Pulp backend on http://localhost:8080
    • Option A (recommended for tests): use ./tests/run_container.sh ... to start an ephemeral Pulp container for the duration of a command
    • Option B: run your own Pulp instance locally and use npm run dev

Quickstart

Install dependencies:

npm install

Run the UI with an ephemeral Pulp backend (starts Pulp, then runs Vite):

./tests/run_container.sh npm run dev -- --host 0.0.0.0

Use a custom backend:

PULP_BACKEND=http://my-pulp-host:8080 npm run dev

Open:

  • UI: http://localhost:3000
  • Pulp API: http://localhost:8080/pulp/api/v3/

API & Proxy

  • By default, the frontend uses a relative API base of /pulp/api/v3 (see src/services/api.ts).
  • In dev, Vite proxies /pulp/* to http://localhost:8080 by default, or to PULP_BACKEND if set (see vite.config.ts).

Authentication

  • The login form validates credentials against GET /pulp/api/v3/groups/.
  • Credentials are used as HTTP Basic auth and stored as a base64 token in localStorage under authToken.

Build

npm run build

Preview the production build (static server only):

npm run preview

If you want the preview build to talk to a live Pulp backend, serve it behind a reverse proxy that forwards /pulp/* to http://localhost:8080 (the Vite dev proxy only applies to npm run dev).

Alternatively, you can build with PULP_BACKEND set to make the UI call the backend by absolute URL (note: this may require CORS to be enabled on the backend):

PULP_BACKEND=http://my-pulp-host:8080 npm run build

Docker (build & run)

This repo’s Dockerfile builds the React UI and bakes the static assets into the upstream Pulp image (ghcr.io/pulp/pulp:latest).

  • Pulp (API + services) is served on port 80 inside the container.
  • The UI is served as a SPA under /ai-pulp-ui/ via nginx/ai-pulp-ui.conf.

Build the image

docker build \
  --tag ai-pulp-ui:local \
  .

Build-time configuration (optional):

  • VITE_BASE (default: /ai-pulp-ui/) — where the UI is hosted in the container
  • PULP_BACKEND (default: http://localhost:8080) — backend origin embedded into the UI bundle
  • PULP_EXPOSED_BACKEND (default: http://localhost:8080) — used for “Open” links for distributions (external base URL)

Example (if you will access the container from another machine/hostname):

docker build \
  --tag ai-pulp-ui:local \
  --build-arg PULP_BACKEND=http://my-host:8080 \
  --build-arg PULP_EXPOSED_BACKEND=http://my-host:8080 \
  .

Note: these are build-time values (Vite embeds them into the bundle). If they change, rebuild the image.

Run the container

docker run --rm \
  --name ai-pulp-ui \
  --publish 8080:80 \
  ai-pulp-ui:local

Open:

  • UI: http://localhost:8080/ai-pulp-ui/
  • Pulp API: http://localhost:8080/pulp/api/v3/

If you need to set/reset the admin password inside the running container:

docker exec -it ai-pulp-ui pulpcore-manager reset-admin-password --password password

Tests

Unit/integration tests (Vitest):

npm test

E2E tests (Playwright) against an ephemeral Pulp backend:

./tests/run_container.sh npm run test:e2e

Open the Playwright HTML report:

npx playwright show-report

Notes:

Repo Layout

  • src/ React UI (components, services, contexts)
  • e2e/ Playwright tests
  • tests/run_container.sh helper to start an ephemeral Pulp container and run a command with that backend available

Pulp Docs

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages