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

# Welcome to YAGSL

Brought to you by Yet Another Generic Swerve Library (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="https://567506766-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F754c0Fpq8fBi6k4ByS1k%2Fuploads%2Fgit-blob-aa613fd0fa12ea482c7e410ce1d910443d569c2b%2FYAGSL.png?alt=media" 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**](/how-to-guides/how-to.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**](/reference/reference.md) — precise JSON schema field tables, supported hardware type strings, and where to find the YAMS API docs.
* [**Explanation**](/explanation/explanation.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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
