Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"description": "OpenRL: a self-hosted, Kubernetes-native post-training API that serves the Tinker API.",
"owner": {
"name": "GKE Labs",
"url": "https://github.com/gke-labs/open-rl"
"url": "https://github.com/openrl-dev/openrl"
},
"plugins": [
{
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-and-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
id: meta
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0
with:
images: ghcr.io/gke-labs/open-rl/${{ matrix.image_name }}
images: ghcr.io/openrl-dev/openrl/${{ matrix.image_name }}
# Tags every push `sha-<short>`, the default branch `latest`, and a
# `v*` tag push `v<x.y.z>`. The literal `v` keeps the image tag equal
# to the git tag, which the bundle pins to. The sha outranks `latest`
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:
# main deploys everywhere; a fork also deploys its website/* branches, for previews
deploy:
needs: build
if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || github.repository_owner != 'gke-labs')
if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || github.repository_owner != 'openrl-dev')
runs-on: ubuntu-latest
permissions:
pages: write
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ kubectl delete pods -l timeslice.io/group=samplers --ignore-not-found
### Kustomize Deployment & Base Manifest Best Practices (`Tip`)
To prevent noisy container image tag diffs inside pull requests while ensuring clean deployments across Kubernetes environments, always follow this Kustomize pattern:
1. **Deploy via Kustomize (`-k`)**: Always apply directory manifests via `kubectl apply -k <directory>` rather than `kubectl apply -f <directory>`.
2. **Keep Base YAMLs at `:latest` or Placeholder**: In all base/rendered YAML template files (`04-api-server.yaml`, `05-worker-pod-template.yaml`, `07-accel-timeslicer-daemonset.yaml`, `09-sampler-pod-template.yaml`, `04-deployment.yaml`, etc.), keep container image tags permanently set to a static placeholder (`e.g. image: ghcr.io/gke-labs/open-rl/server:latest` or `/API server:latest`). **Never bump image tags inside these base template files.**
2. **Keep Base YAMLs at `:latest` or Placeholder**: In all base/rendered YAML template files (`04-api-server.yaml`, `05-worker-pod-template.yaml`, `07-accel-timeslicer-daemonset.yaml`, `09-sampler-pod-template.yaml`, `04-deployment.yaml`, etc.), keep container image tags permanently set to a static placeholder (`e.g. image: ghcr.io/openrl-dev/openrl/server:latest` or `/API server:latest`). **Never bump image tags inside these base template files.**
3. **Single Source of Truth for Version Bumps**: When releasing or bumping image versions (`e.g. 0.1.75 -> 0.1.76`), modify **only**:
- `VERSION` (`at repository root`)
- The `newTag:` field inside the target environment's `kustomization.yaml` (`e.g. k8s/deploy/distributed-fft-timeslice/kustomization.yaml`)
Expand Down
8 changes: 4 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ that we need help with, including:
* Bugs in our automation scripts

If anything doesn't make sense, or doesn't work when you run it, please
[open an issue](https://github.com/gke-labs/open-rl/issues/new) and let us know.
[open an issue](https://github.com/openrl-dev/openrl/issues/new) and let us know.

Please note that this project has a [Code of Conduct](CODE_OF_CONDUCT.md) that all
contributors are expected to follow.
Expand All @@ -36,17 +36,17 @@ We welcome many different types of contributions, including:
* Release management

Not everything happens through a GitHub pull request. If you would like to discuss an idea
before writing code, open a [GitHub issue](https://github.com/gke-labs/open-rl/issues) and
before writing code, open a [GitHub issue](https://github.com/openrl-dev/openrl/issues) and
let's talk it through.

<!-- TODO: OpenRL does not yet have a public developer meeting, mailing list, or chat
channel. Once these exist, add them here and in the README. -->

## Find an Issue

Issues labelled [`good first issue`](https://github.com/gke-labs/open-rl/labels/good%20first%20issue)
Issues labelled [`good first issue`](https://github.com/openrl-dev/openrl/labels/good%20first%20issue)
have extra context to help you make your first contribution.
[`help wanted`](https://github.com/gke-labs/open-rl/labels/help%20wanted) issues are suitable
[`help wanted`](https://github.com/openrl-dev/openrl/labels/help%20wanted) issues are suitable
for anyone who isn't a core maintainer and are a good next step after your first pull request.

Sometimes there won't be any issues with these labels. That's OK — there is likely still
Expand Down
2 changes: 1 addition & 1 deletion GOVERNANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ The OpenRL project and its leadership embrace the following values:

## Maintainers

OpenRL Maintainers have write access to the [project GitHub repository](https://github.com/gke-labs/open-rl).
OpenRL Maintainers have write access to the [project GitHub repository](https://github.com/openrl-dev/openrl).
They can merge their own patches or patches from others. The current maintainers can be found
in [MAINTAINERS.md](MAINTAINERS.md). Maintainers collectively manage the project's resources
and contributors.
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@ dashboard-apply:
# ---------------------------------------------------------------------------
# Images published by .github/workflows/build-and-push.yml. The names must match
# the manifests exactly or the pin silently does nothing.
IMAGE_REPO ?= ghcr.io/gke-labs/open-rl
IMAGE_REPO ?= ghcr.io/openrl-dev/openrl
RELEASE_IMAGES ?= server api-server client scheduler
# Gitignored; the release job uploads everything in here.
DIST_DIR ?= dist
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# OpenRL: self-hosted API for your RL Infrastructure

[![Release](https://img.shields.io/github/v/release/gke-labs/open-rl?label=release)](https://github.com/gke-labs/open-rl/releases/latest)
[![Release](https://img.shields.io/github/v/release/openrl-dev/openrl?label=release)](https://github.com/openrl-dev/openrl/releases/latest)

OpenRL implements [Tinker](https://tinker-docs.thinkingmachines.ai/) compatible API for fine-tuning language models that you can run on your own infrastructure (machine or a kubernetes cluster). You can use the Tinker SDK to orchestrate RL training loops by writing imperative Python code directly from your local machine.

Expand Down Expand Up @@ -161,7 +161,7 @@ Participation in this project is governed by our [Code of Conduct](CODE_OF_CONDU
<!-- TODO: Add a developer mailing list, chat channel, and public developer meeting once
these are set up. -->

- **Questions and discussion**: [GitHub Issues](https://github.com/gke-labs/open-rl/issues)
- **Questions and discussion**: [GitHub Issues](https://github.com/openrl-dev/openrl/issues)
- **Reporting a vulnerability**: see our [Security Policy](SECURITY.md) — please do not open a
public issue for security reports
- **How the project is run**: [GOVERNANCE.md](GOVERNANCE.md)
Expand Down
10 changes: 5 additions & 5 deletions RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ produces a release; nothing else does.
Images, published to GHCR by `.github/workflows/build-and-push.yml` and tagged with the git tag
verbatim:

- `ghcr.io/gke-labs/open-rl/server:<tag>`
- `ghcr.io/gke-labs/open-rl/api-server:<tag>`
- `ghcr.io/gke-labs/open-rl/client:<tag>` (the e2e client, `src/server/Dockerfile.client`)
- `ghcr.io/gke-labs/open-rl/scheduler:<tag>`
- `ghcr.io/openrl-dev/openrl/server:<tag>`
- `ghcr.io/openrl-dev/openrl/api-server:<tag>`
- `ghcr.io/openrl-dev/openrl/client:<tag>` (the e2e client, `src/server/Dockerfile.client`)
- `ghcr.io/openrl-dev/openrl/scheduler:<tag>`

Assets, attached to the GitHub Release:

Expand Down Expand Up @@ -71,7 +71,7 @@ Every bundle has its images pinned to the release tag. The API server reports th
4. **Verify on a clean cluster.**

```bash
kubectl apply --server-side -f https://github.com/gke-labs/open-rl/releases/download/v0.0.2/openrl-lora.yaml
kubectl apply --server-side -f https://github.com/openrl-dev/openrl/releases/download/v0.0.2/openrl-lora.yaml
kubectl -n openrl-system get pods -o jsonpath='{..image}'
```

Expand Down
4 changes: 2 additions & 2 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ If you discover a security vulnerability in OpenRL, please report it responsibly

To report a vulnerability, use GitHub Private Vulnerability Reporting:

* **[Report a vulnerability](https://github.com/gke-labs/open-rl/security/advisories/new)**
* **[Report a vulnerability](https://github.com/openrl-dev/openrl/security/advisories/new)**

<!-- TODO: Set up a project security email (e.g. openrl-security@googlegroups.com) and
add it here as an alternative reporting channel for reporters who cannot or prefer
Expand Down Expand Up @@ -49,7 +49,7 @@ When a security issue is confirmed, the OpenRL maintainers will:
2. Assign a CVE identifier if appropriate
3. Release a patched version
4. Publish a security advisory via
[GitHub Security Advisories](https://github.com/gke-labs/open-rl/security/advisories)
[GitHub Security Advisories](https://github.com/openrl-dev/openrl/security/advisories)

## Security Response Team

Expand Down
4 changes: 2 additions & 2 deletions docs/blog/from-mac-to-gke.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

RL fine-tuning is one of the most powerful ways to specialize language models — but the infrastructure behind it has traditionally been a nightmare. You're either wrestling with GPU allocation, rewriting training scripts for different backends, or managing job lifecycles by hand.

[OpenRL](https://github.com/google/open-rl) is a self-hosted, open-source API that makes this simple. Write your training loop once using the Tinker SDK, run it on your Mac to iterate fast, then point it at a GKE cluster when you're ready to scale. Same code, any backend.
[OpenRL](https://github.com/openrl-dev/openrl) is a self-hosted, open-source API that makes this simple. Write your training loop once using the Tinker SDK, run it on your Mac to iterate fast, then point it at a GKE cluster when you're ready to scale. Same code, any backend.

Let's walk through it.

Expand Down Expand Up @@ -66,7 +66,7 @@ Here's the key insight: **your client code doesn't change.** The Tinker API abst

```bash
# Deploy to GKE
kubectl apply --server-side -f https://github.com/gke-labs/open-rl/releases/latest/download/openrl-lora.yaml
kubectl apply --server-side -f https://github.com/openrl-dev/openrl/releases/latest/download/openrl-lora.yaml

# Port-forward to your local machine
kubectl -n openrl-system port-forward svc/open-rl-api-server-service 8000:8000
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ spec:
# claimRef: "open-rl-trainer-gpu-1"

# Container overrides (image, args, env)
image: "ghcr.io/gke-labs/open-rl/server:latest"
image: "ghcr.io/openrl-dev/openrl/server:latest"

status:
phase: "Scheduled" # Pending | Scheduled | Running | Failed | Terminated
Expand Down
2 changes: 1 addition & 1 deletion docs/designs/008-single-node-shared-training-sampling.md
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ patches:
restartPolicy: OnFailure
containers:
- name: trainer-worker
image: ghcr.io/gke-labs/open-rl/server:latest
image: ghcr.io/openrl-dev/openrl/server:latest
imagePullPolicy: IfNotPresent
command: ["uv", "run", "python", "-m", "server.training_requests_processor"]
env:
Expand Down
8 changes: 4 additions & 4 deletions docs/designs/014-openrl-website.md
Original file line number Diff line number Diff line change
Expand Up @@ -229,10 +229,10 @@ uses for keywords, strings, comments and highlighted lines.
openrl.dev. AAAA 2606:50c0:8001::153
openrl.dev. AAAA 2606:50c0:8002::153
openrl.dev. AAAA 2606:50c0:8003::153
www.openrl.dev. CNAME gke-labs.github.io.
www.openrl.dev. CNAME openrl-dev.github.io.
```

GitHub also asks for a `_github-pages-challenge-gke-labs` TXT record
GitHub also asks for a `_github-pages-challenge-openrl-dev` TXT record
to verify the domain for the organization; the value comes from the
organization's Pages settings.
- openrl.io: GitHub Pages serves one custom domain per site, so the
Expand Down Expand Up @@ -284,7 +284,7 @@ git worktree add ../open-rl-site -b website/scaffold upstream/main
cd ../open-rl-site
hugo server -s site -D
git push -u origin website/scaffold
gh pr create --repo gke-labs/open-rl --base main --head droot:website/scaffold
gh pr create --repo openrl-dev/openrl --base main --head droot:website/scaffold

# when the PR has merged
cd ../open-rl && git worktree remove ../open-rl-site
Expand Down Expand Up @@ -319,7 +319,7 @@ if the reviewers of those workflows agree.
1. openrl.dev as canonical, and where the DNS for each domain is
hosted.
2. Hugo and GitHub Pages, or a different pair.
3. Who has admin on gke-labs/open-rl for the Pages settings and the
3. Who has admin on openrl-dev/openrl for the Pages settings and the
organization-level domain verification.
4. Which self-hosted sans. Candidates with an Avenir-like feel under
the Open Font License: Figtree, Nunito Sans, Outfit.
Expand Down
8 changes: 4 additions & 4 deletions docs/designs/016-agent-friendly-openrl.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,8 @@ version OpenRL supports.
"settings_howto": "Pass as user_metadata on create_session or create_model, or as TINKER_TAGS=openrl.key=value,...",
"limits": {"vllm_max_model_len": 8192, "train_token_budget": 65536,
"session_ttl_seconds": 120, "session_reap_interval_seconds": 30},
"skill_url": "https://github.com/gke-labs/open-rl/releases/download/v0.0.6/openrl-skill.tar.gz",
"getting_started_url": "https://github.com/gke-labs/open-rl/blob/main/docs/getting-started.md"
"skill_url": "https://github.com/openrl-dev/openrl/releases/download/v0.0.6/openrl-skill.tar.gz",
"getting_started_url": "https://github.com/openrl-dev/openrl/blob/main/docs/getting-started.md"
}
}
```
Expand Down Expand Up @@ -373,12 +373,12 @@ the "verified on" stamp set to the release version, listed in
canonical; the asset is a copy, so a clone at the tag and the asset are
the same thing. `get_server_capabilities` reports
`openrl.skill_url` for the running version
(`https://github.com/gke-labs/open-rl/releases/download/<version>/openrl-skill.tar.gz`),
(`https://github.com/openrl-dev/openrl/releases/download/<version>/openrl-skill.tar.gz`),
so an agent that starts from an endpoint finds the matching reference in
one call. The tarball is the primary install path, since it works for
every agent, for scripted installs, and for air-gapped clusters. Claude
Code users get a second path, a `.claude-plugin/marketplace.json` so
`/plugin marketplace add gke-labs/open-rl` works and can pin a tag; other
`/plugin marketplace add openrl-dev/openrl` works and can pin a tag; other
agents' package mechanisms can be added the same way, beside the tarball
rather than instead of it. Installing is still a manual step for every agent, so the
getting-started guide gets one install command right after
Expand Down
12 changes: 6 additions & 6 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ Apply the release. Server-side apply is required because the Workload CRD is
larger than the client-side apply limit:

```bash
kubectl apply --server-side -f https://github.com/gke-labs/open-rl/releases/latest/download/openrl-lora.yaml
kubectl apply --server-side -f https://github.com/openrl-dev/openrl/releases/latest/download/openrl-lora.yaml
```

This installs the API server, the scheduler, Redis, and a shared volume into
Expand All @@ -142,7 +142,7 @@ runs LoRA workers as above and adds full fine-tuning workers, which can take
turns on a shared GPU. Apply it instead of the LoRA release:

```bash
kubectl apply --server-side -f https://github.com/gke-labs/open-rl/releases/latest/download/openrl-fft.yaml
kubectl apply --server-side -f https://github.com/openrl-dev/openrl/releases/latest/download/openrl-fft.yaml
```

It adds two DaemonSets that coordinate GPU sharing on each GPU node, the
Expand Down Expand Up @@ -201,8 +201,8 @@ configured default.
## 3. Get the examples

```bash
git clone https://github.com/gke-labs/open-rl.git
cd open-rl
git clone https://github.com/openrl-dev/openrl.git
cd openrl
uv --project examples sync
```

Expand Down Expand Up @@ -238,7 +238,7 @@ How to install them depends on the agent:
directly; each one links its references by relative path.
- **Claude Code:** both repositories publish a plugin marketplace.
```
/plugin marketplace add gke-labs/open-rl
/plugin marketplace add openrl-dev/openrl
/plugin install openrl@open-rl
/plugin marketplace add thinking-machines-lab/tinker-cookbook
/plugin install tinker@tinker-skills
Expand Down Expand Up @@ -354,7 +354,7 @@ still running to release their GPUs, then everything the release created. This
also deletes the shared volume and its data:

```bash
kubectl delete -f https://github.com/gke-labs/open-rl/releases/latest/download/openrl-lora.yaml
kubectl delete -f https://github.com/openrl-dev/openrl/releases/latest/download/openrl-lora.yaml
```

Use `openrl-fft.yaml` if you applied the FFT release. If you created the GKE
Expand Down
Loading
Loading