Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
c45d1f2
docs: AI-native machine-readable layer (llms.txt, raw markdown, copy-…
MagicLex Jul 31, 2026
f9f0f82
mcp: read-only docs MCP server (search / get_page / sections / list)
MagicLex Jul 31, 2026
2b6f293
docs: enable mermaid diagrams (pymdownx.superfences custom_fences)
MagicLex Jul 31, 2026
2d89bd3
docs: fix wrong config defaults for superset and trino
MagicLex Jul 31, 2026
26dfce2
docs: fix delivery guarantee, at-most-once should be exactly-once
MagicLex Jul 31, 2026
7debe60
docs: concepts keystone (FTI, AI systems, read/serve path) + home red…
MagicLex Jul 31, 2026
bff34e4
docs: generated reference pages for config variables and REST status …
MagicLex Jul 31, 2026
baa3108
docs: SaaS is run.hopsworks.ai, drop 'serverless' and app.hopsworks.ai
MagicLex Jul 31, 2026
e47af4a
docs: new platform architecture diagram, theme-adaptive inline SVG
MagicLex Jul 31, 2026
a66bee8
docs: make the architecture diagram a clickable navigation map
MagicLex Jul 31, 2026
efcd5a9
docs: shared clickable-SVG diagram kit; FTI diagram is now a clickabl…
MagicLex Jul 31, 2026
7212966
docs: feature store architecture as a clickable SVG diagram
MagicLex Jul 31, 2026
561d64d
docs: explanatory concept diagrams (drift, point-in-time join, versio…
MagicLex Jul 31, 2026
90ab0ff
docs: H1 on every concept page, demote orphan headings
MagicLex Jul 31, 2026
db36938
docs: reframe Prediction Services as AI Systems, add Deployment API
MagicLex Jul 31, 2026
1feb14e
docs: fix two book contradictions, skew and deployment versioning
MagicLex Jul 31, 2026
b9a034e
docs: standardise on 'vector index', not 'vector database'
MagicLex Jul 31, 2026
6cb9674
docs: merge duplicated concept pages (monitoring, versioning, connector)
MagicLex Jul 31, 2026
cbe31ef
docs: reorder Concepts nav into dependency order
MagicLex Jul 31, 2026
89db6ab
docs: Tier-2 book additions on the read/serve and model path
MagicLex Jul 31, 2026
8117092
docs: define MLOps, draw the lineage chain, name concept drift
MagicLex Jul 31, 2026
c6fa361
docs: new concept pages for streaming pipelines and agents/LLM
MagicLex Jul 31, 2026
7c104f0
docs: Tier-3 corrections (get_feature_vector order, TTL, validation, …
MagicLex Jul 31, 2026
585d9fd
docs: standardize all kit diagrams, add MIT/MDT/ODT taxonomy SVG
MagicLex Jul 31, 2026
911434e
docs: re-cut all data_transformations diagrams onto the kit
MagicLex Jul 31, 2026
04fcb67
docs: re-cut every remaining concept diagram onto the kit
MagicLex Jul 31, 2026
2beb03e
docs: visual refurbish aligned to the product design system
MagicLex Jul 31, 2026
dbe4d67
docs: flat header and legible search, per the flat design system
MagicLex Jul 31, 2026
f1cb5f8
docs: slim the top chrome (header + tabs)
MagicLex Jul 31, 2026
d4f3138
docs: left-sidebar navigation mimicking the app, drop top tabs
MagicLex Jul 31, 2026
42f351f
docs: clean sidebar, drop the floating grey box
MagicLex Jul 31, 2026
5994f6d
docs: remove dead CSS after the nav rework
MagicLex Jul 31, 2026
dad0ca3
docs: drill-in navigation, AI-agents page, and chrome fixes
MagicLex Aug 4, 2026
abb4e89
mcp-server: hosted streamable-HTTP transport
MagicLex Aug 4, 2026
08c1e83
docs: drop unused brewer_* config vars from the generated reference
MagicLex Aug 4, 2026
2dc421c
docs: home hero, quick cards and interactive first-feature-vector ste…
MagicLex Aug 5, 2026
5bcdc0d
docs: recapture auth screenshots on a live 5.x cluster, drop dead 2FA…
MagicLex Aug 5, 2026
6963c91
docs: home stepper heading speaks the product, not the API
MagicLex Aug 5, 2026
621af24
docs: recapture jobs and airflow screenshots on a live 5.x cluster
MagicLex Aug 5, 2026
0934cf4
docs: recapture alert configuration screenshots, fix typo
MagicLex Aug 5, 2026
a0aedb3
docs: hopsworks-version screenshot follows the version to the help menu
MagicLex Aug 5, 2026
f68ade1
docs: recapture jupyter and python environment screenshots
MagicLex Aug 5, 2026
5d7d7bf
docs: recapture admin screenshots on a live 5.x cluster
MagicLex Aug 5, 2026
d4742a3
docs: recapture feature store screenshots on a live 5.x cluster
MagicLex Aug 5, 2026
d40ec8b
docs: recapture model serving and registry screenshots on a live 5.x …
MagicLex Aug 5, 2026
56a5818
docs: serving guides follow the current deployment form
MagicLex Aug 5, 2026
2b82ff6
docs: capture group-to-project mapping screenshots
MagicLex Aug 5, 2026
551f18f
docs: recapture git and feature group screenshots on a live 5.x cluster
MagicLex Aug 5, 2026
fa82b59
docs: rebuild jobs GIFs as crisp frame-based animations
MagicLex Aug 5, 2026
360875a
docs: border every content image and extend diagram zoom to screenshots
MagicLex Aug 5, 2026
fef28db
docs: design-system notes cover image borders and zoom
MagicLex Aug 5, 2026
9d7e421
docs: recapture project, sharing, tags, secrets and api-key screenshots
MagicLex Aug 5, 2026
26e68fa
docs: recapture trino and superset screenshots on live services
MagicLex Aug 5, 2026
baa640d
docs: feature group creation is API-only, UI shows them in the Catalog
MagicLex Aug 5, 2026
50ffb99
docs: document the project terminal
MagicLex Aug 5, 2026
591e26f
docs: admin guides follow the cluster-settings sidebar and current forms
MagicLex Aug 5, 2026
b85be61
docs: drop the last em dashes in the admin tree
MagicLex Aug 5, 2026
c628f75
docs: guides follow the 5.x UI flows
MagicLex Aug 5, 2026
993e3ed
docs: finish the UI-flow alignment sweep
MagicLex Aug 5, 2026
dcecf62
docs: rebuild python and jupyter GIFs on the live 5.x UI
MagicLex Aug 5, 2026
6c30981
docs: clear pre-existing em dashes in the job scheduling guides
MagicLex Aug 5, 2026
9a726fa
docs: repo-wide em dash sweep, zero left in Markdown
MagicLex Aug 5, 2026
31b8b95
docs: scheduler screenshot and project GIFs from the live cluster
MagicLex Aug 5, 2026
0a82217
docs: fix table style lint in the mcp-server readme
MagicLex Aug 5, 2026
e9a8cda
docs: markdownlint ignores venvs and build output
MagicLex Aug 5, 2026
31585c5
docs: markdownlint-cli2 config ignores vendored envs; fix list indent
MagicLex Aug 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,5 @@ uv tool install md-snakeoil && snakeoil --line-length 88 --rules "E,F,B,C4,ISC,P

- @docs/README.md — full command reference, content structure, and links to detail docs
- @docs/content.md — writing conventions, code blocks, linking, and assets
- @docs/design-system.md — visual language: tokens, logo, nav, search, diagrams; read before any CSS/nav/visual change
- @docs/caveats/README.md — known gotchas; add new ones as separate files in this folder
1 change: 1 addition & 0 deletions .claude/docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,5 @@ Do not write prose in API reference pages in this repo — edit the docstrings i
## More

- @docs/content.md — writing conventions, Python code blocks, linking, assets
- @docs/design-system.md — visual language: tokens, logo, nav, search, diagrams
- @docs/caveats/README.md — known gotchas; add new ones as separate files
92 changes: 92 additions & 0 deletions .claude/docs/design-system.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Design System

The visual language of docs.hopsworks.ai.
Read this before changing anything visual (CSS, nav, logo, diagrams) so the site stays one coherent system.

## Principle

Match the Hopsworks product app, not a generic docs theme.
The reference is `hopsworks-front` (Quartz design system, `tailwind-quartz`): flat, restrained, grid-aligned, brand green confined to the logo and small accents.
When in doubt, open the app and copy its treatment rather than inventing one.

Two hard lessons already learned, do not repeat them:

- Do not invent per-section nav icons. The docs navigate by content type (Concepts, Guides, API), the app navigates by entity (Feature Group, Model, Deployment). There is no icon mapping between them, so any guessed glyph reads as foreign. The app's visual language is the rail plus the green active pill plus the mark plus the typography, not a glyph per category.
- The "same visual language" is achieved with structure and color, not decoration.

## Where the design lives

| Concern | File | Notes |
| ------- | ---- | ----- |
| Tokens + all component styling | `docs/css/custom.css` | Single stylesheet. Tokens at the top, components below. |
| Nav collapse toggle | `docs/js/nav-collapse.js` | Header button, hides the sidebar, widens content. |
| Drill-in navigation | `docs/js/drill-nav.js` | Shows only the current level; ancestors live in the breadcrumb. |
| Diagram zoom | `docs/js/diagram-zoom.js` | Corner handle + full-screen overlay for `.hops-diagram` and all content images (wrapped in `.hops-img-zoom` at runtime; inline images under 200px are left alone). Content images also carry a 1px `--hops-border-strong` border via CSS. |
| Code language labels | `docs/js/code-lang.js` | Language tag on code blocks. |
| Theme features + assets wiring | `mkdocs.yml` | `theme.features`, `extra_javascript`, `extra_css`. |

## Color tokens

One palette, defined once for light and once for dark (`[data-md-color-scheme="slate"]`), in `docs/css/custom.css`.
Never hardcode a hex in a rule. Use a token so light and dark both track.

| Token | Light | Dark | Use |
| ----- | ----- | ---- | --- |
| `--hops-accent` | `#21b182` | `#1eb182` | Non-text accents: logo tint, active markers, focus rings. |
| `--hops-accent-text` | `#0e8a63` | `#3ccd9f` | Links and active nav text (AA contrast). |
| `--hops-surface` | `#f5f5f5` | dark grey | Raised fills (search field, code inline). |
| `--hops-border` | `#e2e2e2` | white 9% | 1px separators. |
| `--hops-border-strong` | `#cbcbcb` | white 18% | Card and hover borders. |
| `--hops-tint` | green 8% | green 16% | Active-nav wash behind the pill. |
| `--hops-nav-fg` | `#4b5563` | fg--light | Nav item at rest. |
| `--hops-sidebar-bg` | `#f6f7f9` | near-black | The nav panel fill. |

Brand green is an accent, not a fill. Do not paint bands or large surfaces green.

## Logo

`docs/assets/images/hops-mark-green.png`, the green hop mark alone (the wordmark is the header title text).
Size it `height: 1.5rem; width: auto`. Never force a square: the mark is 142x150, a fixed width/height compresses it.

## Header

Flat, near-white, no shadow. The only chrome is a 1px bottom border (`--hops-border`).
Header icons and the repo link ride a muted foreground so the logo leads.

## Left navigation

The rail is the spine of the site. Rules, in order of importance:

- It is a text rail, no per-section icons (see the lesson above).
- The active item is a single green pill (`--hops-tint` wash, `--hops-accent-text` text), never two split boxes; the pill is on the `.md-nav__container`.
- Deep trees (up to ~5 levels, e.g. `concepts/fs/feature_group/...`) are handled by showing one level at a time, not by exposing the whole tree:
- `navigation.indexes`: every section has an Overview/index page acting as a hub.
- `navigation.prune`: only the active branch is rendered.
- `navigation.path`: breadcrumbs above the H1 carry the hierarchy above the current level.
- `drill-nav.js`: the rail shows only the current level (active item plus siblings, or children on a section page); ancestors collapse into the breadcrumb, which is the way back up.
- Collapse toggle (`nav-collapse.js`): a header button hides the whole sidebar and lets the content reclaim the width. It is a plain show/hide, not an icon rail. Desktop only; mobile uses the drawer. State persists in localStorage.
- The sidebar is its own panel (`--hops-sidebar-bg`). The panel fill and the right divider are painted by `.md-sidebar--primary::before` (full-bleed, spanning past the header) so the divider is flush with the header, not notched 30px below it. Do not put the divider border back on the `.md-sidebar--primary` box.

## Search

Header search (not sidebar). Bordered pill on `--hops-surface`.
The magnifier icon inherits the header's white by default and vanishes on the light field; it is forced to the muted foreground in `.md-header .md-search__form .md-search__icon`. Keep that override.

## Diagrams

Two kinds, do not mix them up:

- Navigational / architecture charts: clickable inline SVG built on the shared `.hops-diagram` CSS kit. Use `currentColor` plus tinted brand fills so they adapt to light/dark, and version-safe relative `href`s for the clickable nodes.
- Illustrations only: mermaid. Mermaid's `click` directives break rendering under Material's strict `securityLevel`, so mermaid is never used for clickable navigation.

`diagram-zoom.js` adds a corner handle and full-screen overlay to any `.hops-diagram`.

## Theme features

Set in `mkdocs.yml` under `theme.features`. Current set and why:
`navigation.indexes` (section hubs), `navigation.prune` (render active branch only), `navigation.path` (breadcrumbs), `navigation.top` (back to top), `toc.follow` (right TOC tracks scroll), `content.code.copy`.
Note the absence of `navigation.sections` (keeps sections collapsible) and `navigation.expand` (collapse by default). Keep both absent.

## Content tone

Covered in `content.md`: one sentence per line, reference not editorial, and no em dashes (a commit hook enforces the last one). This charter is visual; that one is editorial.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -133,3 +133,6 @@ target/

# Local agent settings, user-specific
/.claude/settings.local.json

# Local build stub for the CI-generated Java API dir
docs/javadoc
4 changes: 4 additions & 0 deletions .markdownlint-cli2.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
// Lint the repo's own Markdown, not vendored envs or build output.
"ignores": ["**/node_modules/**", "**/.venv/**", "site/**", "docs/javadoc/**"]
}
4 changes: 4 additions & 0 deletions .markdownlint.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
MD041: false
# Don't count a front-matter `title:` as a second H1 (mkdocs uses it for the
# <title> tag while the page body keeps its own H1, e.g. docs/index.md).
MD025:
front_matter_title: ""
MD013: false
MD033: false
MD045: false
Expand Down
64 changes: 64 additions & 0 deletions docs/ai.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Docs for AI agents

The Hopsworks documentation is published in machine-readable form so agents and LLM tools can consume it directly.
There are two ways to use it: a live MCP server, and a set of static text artifacts.

## MCP server

`mcp.hopsworks.ai` is a read-only [Model Context Protocol](https://modelcontextprotocol.io) server over this documentation.
It indexes the same Markdown that builds this site and exposes retrieval tools to any MCP-capable client.
It is read-only: there is no write, create, or delete path, and it makes no outbound network calls.
The endpoint is rate-limited per client IP.

The tools it exposes:

| Tool | Purpose |
| ---- | ------- |
| `search_docs(query, limit)` | Full-text (BM25) search across all pages; returns page ids, URLs, and snippets. |
| `get_page(page_id)` | Full Markdown of a page by its canonical id. |
| `list_sections(page_id)` | Heading structure and anchors of a page. |
| `get_section(page_id, anchor)` | One section of a page by anchor. |
| `list_pages(prefix)` | Browse the doc map, optionally scoped by a path prefix. |

A `page_id` is the path of a page without the `.md` extension, for example `concepts/fs/feature_group/fg_overview`.

### Connect from Claude Code

Add the server at user scope so it is available in every project:

```bash
claude mcp add --transport http hopsworks-docs -s user https://mcp.hopsworks.ai/mcp
```

### Connect from Claude Desktop

Add the server to `claude_desktop_config.json`:

```json
{
"mcpServers": {
"hopsworks-docs": {
"type": "http",
"url": "https://mcp.hopsworks.ai/mcp"
}
}
}
```

### Any other MCP client

Point the client at the streamable-HTTP endpoint `https://mcp.hopsworks.ai/mcp`.
Clients that only speak stdio can run the server locally instead: see the `mcp-server/` directory in the [documentation repository](https://github.com/logicalclocks/logicalclocks.github.io) for the self-host command.

## Text artifacts

Every build also emits static files, so an agent can ingest the docs without an MCP client.

- [`llms.txt`](https://docs.hopsworks.ai/llms.txt) is a curated index of the documentation that mirrors the site navigation, following the [llmstxt.org](https://llmstxt.org) convention.
- [`llms-full.txt`](https://docs.hopsworks.ai/llms-full.txt) is the full-text Markdown corpus of every page, for bulk ingestion.
- Every page has a raw Markdown sibling: append `.md` to any page URL, for example `https://docs.hopsworks.ai/concepts/fti_pipelines.md`.

## Copy for LLM

Every page carries a **Copy for LLM** button at the top.
It copies the page's raw Markdown to your clipboard, ready to paste into a chat or prompt.
Binary file modified docs/assets/images/admin/audit/audit-log-vars.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/auth-config.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/monitoring/grafana.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/monitoring/monitoring_tab.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/operation-logs/operation-logs-msg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/operation-logs/operation-logs.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/project-mapping/create-hw-mapping.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/project-mapping/edit-hw-mapping.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/project-mapping/edit-mapping.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/projects/project_list.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/projects/project_quotas.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/superset/admin-superset.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/superset/database-connections.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/superset/roles.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/superset/superset-configuration.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/superset/superset-landing.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/superset/users.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/trino/query-history.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/trino/trino-cluster.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/admin/trino/worker-status.png
Binary file modified docs/assets/images/admin/trino/workers.png
Binary file modified docs/assets/images/admin/user-management/active-users.png
Binary file modified docs/assets/images/admin/user-management/blocked-users.png
Binary file modified docs/assets/images/admin/user-management/change-password.png
Binary file modified docs/assets/images/admin/user-management/create-user.png
Binary file modified docs/assets/images/admin/user-management/new-user.png
Binary file modified docs/assets/images/admin/user-management/reset-password.png
Binary file modified docs/assets/images/admin/user-management/temp-password.png
Binary file modified docs/assets/images/admin/variables/configuration.png
Binary file modified docs/assets/images/admin/variables/new-variable.png
Binary file modified docs/assets/images/alerts/advanced-config.png
Binary file modified docs/assets/images/alerts/configure-alerts.png
Binary file modified docs/assets/images/alerts/pagerduty-config.png
Binary file modified docs/assets/images/alerts/slack-config.png
Binary file modified docs/assets/images/alerts/smtp-config.png
Binary file modified docs/assets/images/alerts/webhook-config.png
Binary file modified docs/assets/images/auth/2fa-enabled.png
Binary file modified docs/assets/images/auth/account-created.png
Binary file modified docs/assets/images/auth/enable2fa.png
Binary file modified docs/assets/images/auth/login.png
Binary file modified docs/assets/images/auth/otp.png
Binary file modified docs/assets/images/auth/profile.png
Binary file removed docs/assets/images/auth/register-2fa.png
Diff not rendered.
Binary file modified docs/assets/images/auth/register.png
Binary file modified docs/assets/images/auth/resetPassword.png
Binary file modified docs/assets/images/auth/updatePassword.png
Loading
Loading