-
Notifications
You must be signed in to change notification settings - Fork 104
feat: add AI Libraries page to website #602
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
jbrinkman
wants to merge
21
commits into
valkey-io:main
Choose a base branch
from
jbrinkman:fix/ai-libraries-595
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 20 commits
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
64c93e8
feat: add AI Libraries page to website
jbrinkman 740f330
fix: use forced symlinks and proper quoting in init script
jbrinkman 5d30c03
feat: Add integrations and clients page to replace ai page
rileydes-improving f0e6b44
Remove 21 catalog entries that don't meet the inclusion bar
Jonathan-Improving 4ce89fa
Reword the licence rule so it stops contradicting itself
Jonathan-Improving a0e3c84
Content audit: apply field corrections and add 7 verified entries
Jonathan-Improving 1a761e2
Content audit: final field edits, plus restore a field I dropped
Jonathan-Improving f25d92a
Drop LocalAI: its install requirement can't be expressed in the schema
Jonathan-Improving bd0acb3
Document docsNote properly so submitters know when and how to use it
Jonathan-Improving f146b49
Add vLLM Semantic Router
Jonathan-Improving 6e631e3
Adjusting design based of feedback
rileydes-improving 4efc95c
Temp Pipeline for Feedback
rileydes-improving a30b7bc
Cleaning up comment verboseness to match repository patterns
rileydes-improving ab9d26e
Enhance Libraries catalog with search term highlighting and improved …
rileydes-improving 0fd47c0
Add pull request template link for adding libraries
rileydes-improving 72778c4
Adding valkey glide php client
rileydes-improving b11242d
Refactor card layout in libraries catalog for consistent height throu…
rileydes-improving c0141f0
Merging Reviewer Feedback from Test Branch
rileydes-improving 1989d78
Fix spring-data-valkey's installCommand so one line reaches Valkey
Jonathan-Improving 1057868
Address Code Rabbit Suggestions and cleaning up development pipeline
rileydes-improving 5fbe28b
Addressing remaining greptile/code rabbit comments
rileydes-improving File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,135 @@ | ||
| <!-- Thanks for contributing to valkey.io! Everything you need is in this template. --> | ||
|
|
||
| ### What are you adding? | ||
|
|
||
| <!-- Name of the client, tool, or integration, and a one-line summary. --> | ||
|
|
||
| - [ ] Client library (`type: "clients"` → `_data/libraries/clients/`) | ||
| - [ ] Tool or framework (`type: "tools"` → `_data/libraries/integrations/`) | ||
| - [ ] AI or agent library (`type: "ai"` → `_data/libraries/integrations/`) | ||
|
|
||
| ### Entry details | ||
|
|
||
| - **Name:** | ||
| - **Repository:** | ||
| - **License (SPDX):** | ||
| - **Maintained by the Valkey project (`isFirstParty`)?** yes / no | ||
|
|
||
| --- | ||
|
|
||
| ## How entries work | ||
|
|
||
| Each entry is a single flat JSON file under `_data/libraries/`, in one of two | ||
| group directories, and registered by path in `_data/libraries/manifest.json`: | ||
|
|
||
| - Client libraries → `_data/libraries/clients/` (appear on the **Clients** page) | ||
| - Tools & frameworks (`type: "tools"`) → `_data/libraries/integrations/` | ||
| - AI & agent libraries (`type: "ai"`) → `_data/libraries/integrations/` | ||
|
|
||
| Tools and AI libraries both live in `integrations/` and are shown together on | ||
| the **Integrations** page. The `type` value must match the directory the file | ||
| lives in. Name the file after your entry, lowercase and hyphenated | ||
| (e.g. `valkey-glide-python.json`). The CI build loads every file in the manifest | ||
| and **fails on any malformed or invalid entry**, so problems are caught before merge. | ||
|
|
||
| ## Fields | ||
|
|
||
| Entries are flat JSON objects. Use only the fields below — extra fields are | ||
| ignored by the templates and may fail review. | ||
|
|
||
| **Required for all entries:** | ||
|
|
||
| - `name` (string) — official name; also used to derive the card slug. | ||
| - `description` (string) — 1–2 factual, vendor-neutral sentences, ideally under ~200 characters. | ||
| - `type` (string) — exactly one of `"clients"`, `"tools"`, or `"ai"`, matching the directory. | ||
| - `license` (string) — SPDX identifier, e.g. `"Apache-2.0"`, `"MIT"`, `"BSD-3-Clause"`. Must be an OSI-approved open-source license. | ||
| - `repository` (string) — public source-code repository URL. | ||
| - `isFirstParty` (boolean) — `true` for repos under `github.com/valkey-io/`, otherwise `false`. | ||
|
|
||
| **Required for clients — `features` (9-character bit-string):** | ||
|
|
||
| A string of nine `"0"`/`"1"` characters; `"1"` means supported. Positions, in order: | ||
|
|
||
| | Position | Key | Feature | | ||
| | --- | --- | --- | | ||
| | 1 | `replica` | Replica reads | | ||
| | 2 | `backoff` | Retry & backoff | | ||
| | 3 | `pubsub` | Pub/Sub restoration | | ||
| | 4 | `scan` | SCAN family | | ||
| | 5 | `latency` | Low-latency routing | | ||
| | 6 | `az` | AZ affinity | | ||
| | 7 | `csc` | Client-side caching | | ||
| | 8 | `capa` | Advanced capabilities | | ||
| | 9 | `pool` | Connection pooling | | ||
|
|
||
| Example: `"111101000"` = replica, backoff, pubsub, scan, and az supported; the rest not. | ||
|
|
||
| **Optional fields:** | ||
|
|
||
| - `language` (string) — primary language. Required in practice for clients and any library imported into code (ORM adapters, SDK wrappers, agent frameworks). Omit for standalone tools. If a library ships separate packages per language, create one entry per language. | ||
| - `tags` (array of strings) — for filtering and discovery. Clients use `["Clients"]`; tools and AI libraries use category tags. Prefer an existing tag: | ||
| - Clients: `["Clients"]` | ||
| - Tools: `CLI & GUI`, `Deploy & operate`, `Proxies & gateways`, `Frameworks & ORMs`, `Queues & background jobs`, `Data movement`, `Observability & testing` | ||
| - AI: `RAG & retrieval`, `Agent memory`, `Agent frameworks`, `Inference & serving` | ||
| - `documentation` (string or null) — official docs/landing URL, or `null` if none exists. | ||
| - `docsNote` (string) — reviewer-only note explaining a `null` `documentation`; not rendered. Use only with `documentation: null`, and include a `(checked YYYY-MM-DD)` date. Do not present an unverified URL as documentation. | ||
| - `installCommand` (string) — primary install command, e.g. `"pip install valkey-glide"`. | ||
| - `isGlide` (boolean) — marks a Valkey GLIDE client. | ||
|
|
||
| ## Example entries | ||
|
|
||
| Client (`_data/libraries/clients/valkey-glide-python.json`): | ||
|
|
||
| ```json | ||
| { | ||
| "name": "Valkey GLIDE Python", | ||
| "language": "Python", | ||
| "license": "Apache-2.0", | ||
| "description": "Designed for reliability, optimized performance, and high-availability. GLIDE is a multi-language client with one shared Rust core and per-language bindings.", | ||
| "repository": "https://github.com/valkey-io/valkey-glide/tree/main/python", | ||
| "documentation": "https://glide.valkey.io/getting-started/quickstart/?lang=python", | ||
| "isFirstParty": true, | ||
| "installCommand": "pip install valkey-glide", | ||
| "features": "111101000", | ||
| "isGlide": true, | ||
| "type": "clients", | ||
| "tags": ["Clients"] | ||
| } | ||
| ``` | ||
|
|
||
| Integration (`_data/libraries/integrations/valkey-cli.json`): | ||
|
|
||
| ```json | ||
| { | ||
| "name": "valkey-cli", | ||
| "language": "C", | ||
| "license": "BSD-3-Clause", | ||
| "description": "The interactive terminal client shipped with valkey-server, with cluster-aware routing, --scan, --bigkeys and latency diagnostics built in.", | ||
| "repository": "https://github.com/valkey-io/valkey", | ||
| "documentation": "https://valkey.io/topics/cli/", | ||
| "isFirstParty": true, | ||
| "type": "tools", | ||
| "tags": ["CLI & GUI"] | ||
| } | ||
| ``` | ||
|
|
||
| ## Register in the manifest | ||
|
|
||
| Add the file's path (relative to `_data/libraries/`) to the matching array in | ||
| `_data/libraries/manifest.json` — `clients` or `integrations`. List it exactly | ||
| once; manifest order is render order. A file not in the manifest will not appear | ||
| on the site. | ||
|
|
||
| --- | ||
|
|
||
| ### Submission checklist | ||
|
|
||
| - [ ] Valid JSON, placed in the directory matching its `type`, and registered once in `_data/libraries/manifest.json`. | ||
| - [ ] All required fields present: `name`, `description`, `type`, `license`, `repository`, `isFirstParty` — plus a 9-character `features` string for clients. | ||
| - [ ] Tested compatible with Valkey 7.2 or above. | ||
| - [ ] OSI-approved open-source license. | ||
| - [ ] Repository is publicly accessible, active within the last 6 months, and has a README with basic usage. | ||
| - [ ] Description is factual and vendor-neutral. | ||
| - [ ] Commits are signed per the DCO using `--signoff`. | ||
|
|
||
| By submitting this pull request, I confirm that my contribution is made under the terms of the BSD-3-Clause License. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,124 @@ | ||
| # Local Testing for Valkey Website | ||
|
|
||
| This guide explains how to build and test the Valkey website locally, including all content from the `valkey-doc` repository. | ||
|
|
||
| ## Prerequisites | ||
|
|
||
| 1. **Zola** - Static site generator | ||
| ```bash | ||
| # macOS | ||
| brew install zola | ||
|
|
||
| # Or download from https://www.getzola.org/documentation/getting-started/installation/ | ||
| ``` | ||
|
|
||
| 2. **Local copies of repositories** - All repos should be in the same parent directory: | ||
| ``` | ||
| ~/projects/ | ||
| ├── valkey-io.github.io/ (this repo) | ||
| └── valkey-doc/ (documentation repo) | ||
| ``` | ||
|
|
||
| ## Quick Start | ||
|
|
||
| ### 1. Clone required repositories | ||
|
|
||
| ```bash | ||
| cd ~/projects # or your preferred directory | ||
|
|
||
| # Clone the website repo (if you haven't already) | ||
| git clone https://github.com/valkey-io/valkey-io.github.io.git | ||
|
|
||
| # Clone the documentation repo | ||
| git clone https://github.com/valkey-io/valkey-doc.git | ||
| ``` | ||
|
|
||
| ### 2. Build with external content | ||
|
|
||
| From the `valkey-io.github.io` directory: | ||
|
|
||
| ```bash | ||
| # Run the init script to create symlinks | ||
| ./build/init-topics-and-clients.sh ../valkey-doc/topics \ | ||
| ../valkey-doc/clients | ||
|
|
||
| # Start Zola development server with extra watch path for client symlinks | ||
| zola serve --extra-watch-path build-clients | ||
| ``` | ||
|
|
||
| ### 3. View the site | ||
|
|
||
| Open your browser to `http://127.0.0.1:1111/` | ||
|
|
||
| ## What the init script does | ||
|
|
||
| The `init-topics-and-clients.sh` script: | ||
| 1. Creates symlinks in the website directory: | ||
| - `build-topics` → `../valkey-doc/topics` | ||
| - `build-clients` → `../valkey-doc/clients` | ||
| 2. Creates stub files for topics (allows Zola to generate pages) | ||
| 3. Copies topic images to the content directory | ||
|
|
||
| ## Viewing specific pages | ||
|
|
||
| - **Client Libraries**: http://127.0.0.1:1111/clients/ | ||
| - **Documentation Topics**: http://127.0.0.1:1111/topics/ | ||
| - **Commands**: http://127.0.0.1:1111/commands/ (requires additional setup - see main README.md) | ||
|
|
||
| ## Making changes | ||
|
|
||
| ### Editing page content | ||
|
|
||
| 1. Edit the relevant file under `content/` for introductory text | ||
| 2. Edit the matching template under `templates/` for layout changes | ||
| 3. Zola will automatically reload | ||
|
|
||
| ## Troubleshooting | ||
|
|
||
| ### Zola fails to start | ||
|
|
||
| 1. Check Zola is installed: `zola --version` | ||
| 2. Make sure you're in the `valkey-io.github.io` directory | ||
| 3. Check for syntax errors in config.toml | ||
|
|
||
| ### Changes not appearing | ||
|
|
||
| 1. Stop Zola (Ctrl+C) | ||
| 2. Re-run the init script (symlinks may have been removed) | ||
| 3. Restart Zola: `zola serve --extra-watch-path build-clients` | ||
| 4. Hard refresh browser (Cmd+Shift+R or Ctrl+Shift+R) | ||
|
|
||
| ## Building for production | ||
|
|
||
| To build static files without running a server: | ||
|
|
||
| ```bash | ||
| # Run init script first | ||
| ./build/init-topics-and-clients.sh ../valkey-doc/topics \ | ||
| ../valkey-doc/clients | ||
|
|
||
| # Build static site | ||
| zola build | ||
|
|
||
| # Output will be in ./public/ | ||
| ``` | ||
|
|
||
| ## Cleaning up | ||
|
|
||
| To remove generated files and symlinks: | ||
|
|
||
| ```bash | ||
| # Remove symlinks | ||
| rm -f build-topics build-clients | ||
|
|
||
| # Remove generated topic stub files | ||
| rm -f content/topics/*.md | ||
|
|
||
| # Remove Zola build output | ||
| rm -rf public/ | ||
| ``` | ||
|
|
||
| ## Additional Resources | ||
|
|
||
| - [Zola Documentation](https://www.getzola.org/documentation/getting-started/overview/) | ||
| - [Main README](README.md) - Full website build instructions | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,55 @@ | ||
| # Language chip colors for the client/integration catalog (see templates/libraries.html). | ||
| # | ||
| # Colors are the per-language "color" values from GitHub Linguist's | ||
| # lib/linguist/languages.yml, which is MIT-licensed data (colors, not logos), so | ||
| # there is no trademark exposure — unlike bundling brand logos. See: | ||
| # https://github.com/github-linguist/linguist/blob/main/lib/linguist/languages.yml | ||
| # https://github.com/github-linguist/linguist/blob/main/LICENSE (MIT) | ||
| # | ||
| # Each entry is keyed by the language slug the template computes from the | ||
| # `language` field (lowercased; `#` -> `-sharp`, `.` and spaces -> `-`), e.g. | ||
| # "C#" -> "c-sharp", "Node.Js" -> "node-js". | ||
| # | ||
| # Fields: | ||
| # color — chip background (Linguist hex). | ||
| # fg — chip text/monogram color; use "#000" on light chips, "#fff" on dark. | ||
| # mono — 1-2 char monogram shown in the badge. | ||
| # | ||
| # Note: Node.js is a runtime, not a Linguist language, so it has no Linguist | ||
| # color of its own; we reuse the JavaScript color (#f1e05a) for the "node-js" | ||
| # slug since Node.js clients are JavaScript/TypeScript. | ||
|
|
||
| [python] | ||
| color = "#3572A5" | ||
| fg = "#fff" | ||
| mono = "Py" | ||
|
|
||
| [node-js] | ||
| color = "#f1e05a" | ||
| fg = "#000" | ||
| mono = "Js" | ||
|
|
||
| [java] | ||
| color = "#b07219" | ||
| fg = "#fff" | ||
| mono = "Jv" | ||
|
|
||
| [c-sharp] | ||
| color = "#178600" | ||
| fg = "#fff" | ||
| mono = "C#" | ||
|
|
||
| [go] | ||
| color = "#00ADD8" | ||
| fg = "#fff" | ||
| mono = "Go" | ||
|
|
||
| [php] | ||
| color = "#4F5D95" | ||
| fg = "#fff" | ||
| mono = "PHP" | ||
|
|
||
| [swift] | ||
| color = "#F05138" | ||
| fg = "#fff" | ||
| mono = "Sw" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| { | ||
| "name": "iovalkey", | ||
| "language": "Node.Js", | ||
| "license": "MIT", | ||
| "description": "A friendly fork of a widely used Node.js client, tracking Valkey. Promise-based API, Lua scripting and cluster support.", | ||
| "repository": "https://github.com/valkey-io/iovalkey", | ||
| "documentation": null, | ||
| "isFirstParty": true, | ||
| "docsNote": "No dedicated Valkey-branded docs site; only redis.github.io API docs from the ioredis lineage exist (checked 2026-09-03).", | ||
| "installCommand": "npm install iovalkey", | ||
| "features": "111000001", | ||
| "type": "clients", | ||
| "tags": [ | ||
| "Clients" | ||
| ] | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| { | ||
| "name": "predis", | ||
| "language": "PHP", | ||
| "license": "MIT", | ||
| "description": "A pure-PHP client with no extension to compile. Supports clustering, replication and transparent key prefixing.", | ||
| "repository": "https://github.com/predis/predis", | ||
| "documentation": "https://github.com/predis/predis/wiki", | ||
| "isFirstParty": false, | ||
| "installCommand": "composer require predis/predis", | ||
| "features": "110000000", | ||
| "type": "clients", | ||
| "tags": [ | ||
| "Clients" | ||
| ] | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| { | ||
| "name": "redisson", | ||
| "language": "Java", | ||
| "license": "Apache-2.0", | ||
| "description": "A Java client that exposes Valkey as familiar JDK structures — Map, Lock, Queue, ExecutorService — plus client-side caching.", | ||
| "repository": "https://github.com/redisson/redisson", | ||
| "documentation": "https://redisson.pro/docs/", | ||
| "isFirstParty": false, | ||
| "installCommand": "implementation 'org.redisson:redisson:4.+'", | ||
| "features": "111100111", | ||
| "type": "clients", | ||
| "tags": [ | ||
| "Clients" | ||
| ] | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| { | ||
| "name": "Valkey GLIDE C#", | ||
| "language": "C#", | ||
| "license": "Apache-2.0", | ||
| "description": "Designed for reliability, optimized performance, and high-availability. The .NET client over the shared Rust core, with StackExchange.Redis API compatibility.", | ||
| "repository": "https://github.com/valkey-io/valkey-glide-csharp", | ||
| "documentation": "https://glide.valkey.io/getting-started/quickstart/?lang=csharp", | ||
| "isFirstParty": true, | ||
| "installCommand": "dotnet add package Valkey.Glide", | ||
| "features": "111100001", | ||
| "isGlide": true, | ||
| "type": "clients", | ||
| "tags": [ | ||
| "Clients" | ||
| ] | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| { | ||
| "name": "Valkey GLIDE Go", | ||
| "language": "Go", | ||
| "license": "Apache-2.0", | ||
| "description": "Designed for reliability, optimized performance, and high-availability. GLIDE is a multi-language client with one shared Rust core and per-language bindings.", | ||
| "repository": "https://github.com/valkey-io/valkey-glide/tree/main/go", | ||
| "documentation": "https://glide.valkey.io/getting-started/quickstart/?lang=go", | ||
| "isFirstParty": true, | ||
| "installCommand": "go get github.com/valkey-io/valkey-glide/go", | ||
| "features": "111101000", | ||
| "isGlide": true, | ||
| "type": "clients", | ||
| "tags": [ | ||
| "Clients" | ||
| ] | ||
| } |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.