Library / SDK
NovaSky-AI/SkyRL avatar
NovaSky-AI/SkyRL

SkyRL: a full-stack RL library split into four installable layers

SkyRL: A Modular Full-stack RL Library for LLMs

2,306 stars431 forksPythonApache-2.0

At a glance

What is it?
SkyRL packages LLM reinforcement learning as four separate components: a training framework, a Tinker API backend, an agent layer and a Gymnasium environment library. The split is the interesting part, and it is also where the adoption cost sits.
Who is it for?
Adopt SkyRL if you already have GPU capacity and want to run RL post-training on your own hardware, particularly if you need multi-turn tool use or a Tinker-compatible service you control. Do not adopt it if you lack a cluster to point it at, or if you only need single-turn preference optimisation, where the agent and gym layers add surface area you will never exercise.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem SkyRL targets: RL post-training without an API bill

Most reinforcement learning work on language models assumes you will call a hosted inference endpoint, or that you will write the training loop yourself around a single-turn reward function. SkyRL addresses a narrower and messier case: multi-turn, tool-using agents trained on hardware you own. The README frames the top-level library as combining two earlier projects, skyrl-train for the training framework and skyrl-tx for a cross-platform backend implementing the Tinker API, with a unified engine for training and inference. That last phrase matters more than the component list. Training and generation sharing one engine is what makes in-flight weight updates possible, and the docs link a tutorial titled Fully Async RL with In-Flight Weight Updates in SkyRL. If your loop is generate, score, update, regenerate, the engine boundary is where latency and staleness live.

The audience is implied rather than stated. The README points at four entry points: skyrl for training, skyrl-gym for building environments, skyrl-agent for agentic pipelines, and the quickstart docs for ramping up. Someone with a reward function and no cluster is not the target. Someone with a cluster and a task that takes twenty tool calls before a reward signal appears is.

Four components, and what each one actually owns

The repository is organised as four sibling directories, and the boundaries are worth reading before you install anything. skyrl is the unified library for RL on your own hardware. It absorbs skyrl-train and skyrl-tx, so a fresh checkout does not need to assemble those separately. skyrl-tx is described as a cross-platform library implementing a backend for the Tinker API, with a unified engine for training and inference. skyrl-agent is the agent layer for long-horizon, real-environment tasks. skyrl-gym is a set of tool-use tasks implemented in the Gymnasium API, covering math, coding, search and SQL.

The gym layer is the one that changes how you write code. Because environments conform to Gymnasium, a task is an environment with the usual reset and step shape, not a bespoke rollout class. That is a real constraint as well as a convenience: anything that does not fit a step-based interface has to be bent into one. The agent layer sits above and is aimed at multi-turn tool use, which the README ties to a paper, SkyRL-Agent, and to an integration with Harbor for terminal-use agents. Note the pin in the README: reproducing SkyRL-v0 results requires checking out commit a0d50c482436af7fac8caffa4533616a78431d66. That is a commit hash, not a release tag, so the reproduction path and the current main branch are explicitly different trees.

The Tinker API backend is the least obvious reason to care

Tinker is a hosted training API. SkyRL implements a backend for it, which means a training script written against the Tinker API can run on your own GPUs. The README states this directly in the 2026/02/13 news entry: run any training script written in the Tinker API on your local GPUs with SkyRL. The docs link a Tinker overview page and a blog post titled SkyRL Brings Tinker to Your GPUs.

This is the component with the clearest migration story. If you have Tinker-shaped code and a GPU box, you change the endpoint rather than the training logic. The cost is that you inherit whatever the Tinker API surface covers, and the material here does not enumerate that surface. Whether every Tinker endpoint has a SkyRL implementation is not something the README answers. Treat the claim as scoped to training scripts, which is what the sentence says, and check the Tinker docs page before assuming evaluation or data endpoints behave the same way.

Getting it running: what the README actually gives you

The setup instructions in the supplied material are pointers, not commands. The README directs you to a Development Guide at docs.skyrl.ai/docs/getting-started/development, a quickstart at docs.skyrl.ai/docs/index, a Supported Models page at docs.skyrl.ai/docs/getting-started/supported_models, and a recipes overview at docs.skyrl.ai/docs/recipes/overview. It does not print a pip install line, a git clone line, or a config snippet. Any command list I gave you here would be invented, so I am not giving one.

What the material does establish is the shape of the workflow. You check out the skyrl directory for training, skyrl-gym for environment authoring, skyrl-agent for agentic pipelines. There is a Slack workspace and a Hugging Face organisation linked for support. There are named recipes, including an end-to-end recipe for long-horizon knowledge work on the APEX-Agents dataset produced with Mercor, and a 397B RL training guide on Mercor's blog. Those are the concrete starting points, and they are external documents rather than in-repo configuration. If you need a copy-pasteable install before you will evaluate anything, this repository's README will frustrate you.

Where SkyRL is the wrong tool

Three failure modes are visible from the material alone. The first is hardware. SkyRL is explicitly for RL on your own hardware. If you do not have GPUs, the entire proposition collapses, and the Tinker backend is irrelevant because you have nothing to serve it on. The second is scope. The library is built around multi-turn, long-horizon, real-environment tasks. If your problem is single-turn preference optimisation over a fixed prompt set, you are paying for an agent layer, a gymnasium of tool-use environments and an async engine you will not use.

The third is version drift. The README pins a commit for SkyRL-v0 reproduction while releases have moved on to v0.3.0, with v0.1.0 in March 2026, v0.2.0 in April 2026 and v0.3.0 in July 2026. Three minor releases in four months is a fast cadence for a library whose APIs you are expected to build against. The README also notes that exact reproduction of SkyRL-v0 results needs that specific commit, which tells you the project's own reference results are not guaranteed to reproduce on current main. Plan for the possibility that a recipe written against v0.1.0 does not apply cleanly to v0.3.0.

What you would use instead, and how the approach differs

The natural alternative for anyone who reads this far and decides the operational burden is too high is a hosted RL fine-tuning service, where you submit a dataset and a reward function and the provider manages the rollout infrastructure. The difference is not quality, it is where the loop runs. With a hosted service you lose the ability to modify the engine, which is exactly the layer SkyRL exposes: a unified engine for training and inference. If you need to change how generation and weight updates interleave, a hosted API will not let you, and SkyRL will.

On the other side, if your interest is specifically the Tinker API rather than SkyRL's own training stack, the comparison is between running the backend yourself and using Tinker as a service. The README frames SkyRL's version as running a Tinker-like service on your own hardware. That trade is capacity and control against operational cost. Nothing in the material quantifies either side, so the decision comes down to whether you already operate GPU infrastructure. If you do, self-hosting removes a per-token dependency. If you do not, you are buying a cluster to avoid an API key.

Maintenance, licensing and what to check before you commit

The licence is Apache-2.0, which permits commercial use and modification and includes an explicit patent grant. It does not require you to publish modifications. That is the standard permissive position and it is the reason a library like this can be embedded in a product. I am not a lawyer and this is not legal advice; if you are redistributing a modified SkyRL, read the licence text and your own counsel's view of the NOTICE requirements.

Maintenance cost is where the four-component split bites. You are tracking four directories with independent concerns, and the release cadence is roughly quarterly at the minor-version level. The README's own news list shows integrations arriving between releases: Harbor in February 2026, Tinker in February 2026, the Mercor APEX-Agents recipe in September 2026. Each of those touches a different component. Upgrading means checking whether your environment code in skyrl-gym still matches the Gymnasium interface the current tree expects, and whether your agent pipeline still matches skyrl-agent. The pinned reproduction commit is the clearest signal that the project treats exact reproducibility as a per-commit property rather than a per-release one. Start from the quickstart and the recipes overview, confirm your checkpoint appears on the Supported Models page, and only then decide whether the agent and gym layers are worth the upgrade surface.

Editorial conclusion

Adopt SkyRL if you already have GPU capacity and want to run RL post-training on your own hardware, particularly if you need multi-turn tool use or a Tinker-compatible service you control. Do not adopt it if you lack a cluster to point it at, or if you only need single-turn preference optimisation, where the agent and gym layers add surface area you will never exercise. Before committing, verify two things against the docs: which models appear on the Supported Models page for your target checkpoint, and whether the SkyRL-v0 reproduction commit a0d50c482436af7fac8caffa4533616a78431d66 is the tree you actually need, since the README pins that hash rather than a release tag.

Official sources

  1. License: Apache-2.0
  2. NovaSky-AI/SkyRL on GitHub
  3. Project website
  4. README
  5. Releases
Community notes

Community notes