> For the complete documentation index, see [llms.txt](https://docs.yagsl.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.yagsl.com/readme.md).

# Welcome to YAGSL

{% hint style="warning" %}
If your swerve drive uses only [Falcon500](https://store.ctr-electronics.com/falcon-500-powered-by-talon-fx/)/[Kraken](https://store.ctr-electronics.com/kraken-x60/)/[TalonFXS](https://store.ctr-electronics.com/products/talon-fxs), [Pigeon2.0](https://store.ctr-electronics.com/pigeon-2/), and [CANCoder](https://store.ctr-electronics.com/cancoder/) from [CTRE](https://pro.docs.ctr-electronics.com/en/latest/index.html) please also consider the [Tuner X Swerve Drive Generator](https://pro.docs.ctr-electronics.com/en/latest/docs/tuner/tuner-swerve/index.html)!
{% endhint %}

<figure><img src="/files/upJUeUFlxj0yVIs52SP7" alt=""><figcaption></figcaption></figure>

## Overview

YAGSL is a Swerve Library developed by current and former BroncBotz mentors for all FRC teams. YAGSL is a JSON configuration parser that builds a [YAMS](https://yams.yamgen.com/) `SwerveDrive` for your robot — describe your hardware once, generate the config at [**config.yagsl.com**](https://config.yagsl.com), and drive. See [What is YAGSL?](/explanation/what-is-yagsl.md) for how the pieces fit together.

{% embed url="<https://datawrapper.dwcdn.net/ZVxvE/13/>" %}

## This documentation is organized into four sections

* [**Tutorial**](/tutorial/tutorial.md) — never used YAGSL before? Start here. A single linear walkthrough from a bare WPILib project to a driving swerve robot.
* [**How-to Guides**](https://github.com/thenetworkgrinch/YAGSL-gitbook/tree/main/how-to/README.md) — already have a robot running? Task-focused recipes for tuning PIDF, determining inversion, diagnosing drift, and other work you'll come back to.
* [**Reference**](https://github.com/thenetworkgrinch/YAGSL-gitbook/tree/main/reference/README.md) — precise JSON schema field tables, supported hardware type strings, and where to find the YAMS API docs.
* [**Explanation**](https://github.com/thenetworkgrinch/YAGSL-gitbook/tree/main/explanation/README.md) — swerve drive theory and the reasoning behind how YAGSL and YAMS behave.

{% hint style="info" %}
Upgrading an existing robot from before **2026.8.05**? Your `swerve/` config directory uses the old schema — see [Schema Changes](/reference/schema-changes.md) before you do anything else.
{% endhint %}

## Get started

{% embed url="<https://www.youtube.com/watch?v=4Tcyn_oj_G0&list=PLdhNPDifsCMLLe5pZoyHGXrMMVxNpJOxP>" %}

{% content-ref url="/pages/VUjPRU3oP9Kpxefm9ap7" %}
[Your First Swerve Robot](/tutorial/tutorial.md)
{% endcontent-ref %}

{% content-ref url="/pages/QcM0FunHvaMONGWx5YYK" %}
[Tune PIDF gains](/how-to-guides/tune-pidf-gains.md)
{% endcontent-ref %}

{% content-ref url="/pages/VLPyZoQy6yIAwWwW5pmV" %}
[The 8 steps](/how-to-guides/the-8-steps.md)
{% endcontent-ref %}

{% content-ref url="/pages/kLO6AjaFJTb3Q1dvCozW" %}
[Schema Changes (Migrating from pre-2026.8.05)](/reference/schema-changes.md)
{% endcontent-ref %}

## YAGSL Online Installation

```
https://yet-another-software-suite.github.io/YAGSL/yagsl/yagsl.json
```

## Our Philosophy

Your program does not revolve around your swerve drive. Your constants file doesn't have to take 10 minutes to find the right option. Different robots should be able to work with the same code — swap the `swerve/` config directory and the same subsystem code drives a different robot.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.yagsl.com/readme.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
