{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-09",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "slug": "axolotl",
    "name": "Axolotl",
    "vendor": "Axolotl AI",
    "vendorUrl": "https://axolotl.ai",
    "kind": "framework",
    "category": "fine-tuning",
    "summary": "Open-source command-line tool and Python package for fine-tuning open language models from one YAML config, covering LoRA, QLoRA, full fine-tuning, preference tuning and GRPO on the owner's GPUs.",
    "url": "https://www.anchorterminal.com/tools/axolotl",
    "markdownUrl": "https://www.anchorterminal.com/tools/axolotl.md",
    "slimMarkdownUrl": "https://www.anchorterminal.com/tools/axolotl.min.md",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/axolotl.json",
    "repo": "https://github.com/axolotl-ai-cloud/axolotl",
    "license": "Apache-2.0",
    "transports": [],
    "packages": [
      {
        "registry": "pypi",
        "name": "axolotl"
      },
      {
        "registry": "oci",
        "name": "axolotlai/axolotl"
      }
    ],
    "auth": "none",
    "authNotes": "No account or key of its own. Gated models and Hub uploads use the owner's Hugging Face token, and Weights \u0026 Biases, MLflow or Trackio logging uses those services' own credentials from the environment.",
    "pricing": "free",
    "pricingNotes": "Free and Apache-2.0, with no price list or hosted plan on axolotl.ai. The owner pays for the GPU, whether local, a rented machine or Hugging Face Jobs billed by the minute. Dedicated support is by email with no published price.",
    "priceSummary": "Free · OSS",
    "where": "library",
    "x402": {
      "level": "no",
      "evidence": "No x402, MPP or L402 in the docs or the source (checked 2026-10-08).",
      "endpoints": []
    },
    "toolCount": null,
    "popularity": {
      "githubStars": 12541,
      "npmWeekly": null,
      "pypiWeekly": 2124,
      "asOf": "2026-10-08"
    },
    "docsUrl": "https://docs.axolotl.ai/",
    "capabilities": [
      "finetune.sft",
      "finetune.lora",
      "finetune.preference",
      "finetune.rl",
      "finetune.export"
    ],
    "tags": [
      "open-source",
      "framework",
      "self-hosted",
      "local",
      "free",
      "python",
      "docker",
      "open-weights"
    ],
    "lastRelease": "2026-09-30",
    "graded": true,
    "anchor": {
      "graded": true,
      "score": 64.8,
      "grade": "B",
      "agentReady": false,
      "rank": 307,
      "ranked": true,
      "rankOf": 842,
      "categoryRank": 2,
      "methodology": "0.4",
      "run": "2026-10-01",
      "scores": {
        "ergonomics": 60,
        "maintenance": 88,
        "payments": 60,
        "reliability": 64,
        "schema": 80,
        "security": 52,
        "transparency": 56
      },
      "pending": [
        "performance",
        "tasks"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 64,
          "points": 12.8,
          "reason": "Scored on the local-software lines. Installs from PyPI (`axolotl` 0.20.0) or the `axolotlai/axolotl` Docker image, with Python 3.12 or later and PyTorch 2.13 or later stated (20). Public GitHub Actions and 536 test files; of the last six push runs of the Tests workflow on main, three passed, two failed and one was cancelled, and the latest on 8 October failed (15 of 25). 109 open issues against 199 commits since 10 July, two of the 15 newest labelled bug (17 of 25). Release notes carry a Deprecations section naming removals, but 0.x minors break configs, such as `relora_steps` renamed in 0.17.0 with no shim (12 of 15). Version 0.20.0, no stability declaration (0)."
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 80,
          "points": 13,
          "reason": "Read as a framework an agent drives through a CLI. `axolotl config-schema` prints the Pydantic config as JSON Schema, whole or per field, and the docs carry a config reference and a generated API reference (20 of 25). No llms.txt on either host (404), but `axolotl agent-docs` prints Markdown references bundled in the package (8 of 10). A method-choice guide and a support matrix mark each option stable, experimental or deprecated (15 of 20). Typed config fields with defaults and validators (12 of 15). An examples folder by model family, a debugging guide and an FAQ (12 of 15). Tagged releases with long notes, no changelog file (13 of 15)."
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 60,
          "points": 9.75,
          "reason": "Read as a CLI. One YAML file drives preprocess, train, evaluate, merge, quantise and export, and agent docs load one topic at a time (18 of 25). Output is sized by saving an adapter or a merged model and by choosing export quantisation, with `--debug-num-examples` for previews (10 of 20). Config validation raises named errors and there is a debugging guide; error text was not tested in this run (12 of 20). `--resume-from-checkpoint` is the safe retry (12 of 20). Example configs and CLI overrides for common fields, Python only (8 of 15)."
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 52,
          "points": 9.1,
          "reason": "Read as local software. No account or key of its own; Hugging Face and tracker tokens come from the environment (20 of 30). No read-only or approval mode, `trust_remote_code` is off unless the config sets it, and a config path may be a remote URL (8 of 20). A trainer returns no untrusted content to the agent (10 of 15). Runs log locally and to Weights \u0026 Biases, MLflow or Trackio when configured, with no audit log of its own (8 of 15). `.github/SECURITY.md` gives an email address for reports and supports only the latest release; no security.txt, bounty, certification or published advisory found (6 of 20)."
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 60,
          "points": 7.5,
          "reason": "Scored by the self-hosted rule. Free software with no price list or hosted plan on axolotl.ai, so 20 + 20 + 20 for public pricing, free use and no sign-up. Dedicated support is by email with no published price. No x402, MPP or L402 (0)."
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 88,
          "points": 7.7,
          "reason": "Version 0.20.0 on PyPI on 30 September 2026 (30). Three releases since 10 July, 0.18.0 on 17 July, 0.19.0 on 10 September and 0.20.0 on 30 September (20). 199 commits since 10 July and a commit on 8 October; 109 open issues, and nine of the 15 newest had no reply (16 of 25). Current PyPI package and Docker images (15). Dependencies pinned and updated by Dependabot, with mixed CI results on main this week (7 of 10)."
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 56,
          "points": 4.9,
          "note": "editorial 75, provenance 36",
          "reason": "Apache-2.0 in the repository, though the PyPI metadata carries no licence field (30). Training data stays on the owner's machine and the telemetry page lists what is sent to PostHog, but there is no privacy policy and no retention period (15 of 30). Deprecations are named in release notes and marked in the support matrix, with no dated removal policy (10 of 20). Telemetry is on by default, disclosed in the README and docs, announced at start-up, and turned off with `AXOLOTL_DO_NOT_TRACK=1` or `DO_NOT_TRACK=1` (20)."
        }
      ],
      "assessment": {
        "date": "2026-10-08",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "Read as a CLI. One YAML file drives preprocess, train, evaluate, merge, quantise and export, and agent docs load one topic at a time (18 of 25). Output is sized by saving an adapter or a merged model and by choosing export quantisation, with `--debug-num-examples` for previews (10 of 20). Config validation raises named errors and there is a debugging guide; error text was not tested in this run (12 of 20). `--resume-from-checkpoint` is the safe retry (12 of 20). Example configs and CLI overrides for common fields, Python only (8 of 15).",
          "maintenance": "Version 0.20.0 on PyPI on 30 September 2026 (30). Three releases since 10 July, 0.18.0 on 17 July, 0.19.0 on 10 September and 0.20.0 on 30 September (20). 199 commits since 10 July and a commit on 8 October; 109 open issues, and nine of the 15 newest had no reply (16 of 25). Current PyPI package and Docker images (15). Dependencies pinned and updated by Dependabot, with mixed CI results on main this week (7 of 10).",
          "payments": "Scored by the self-hosted rule. Free software with no price list or hosted plan on axolotl.ai, so 20 + 20 + 20 for public pricing, free use and no sign-up. Dedicated support is by email with no published price. No x402, MPP or L402 (0).",
          "reliability": "Scored on the local-software lines. Installs from PyPI (`axolotl` 0.20.0) or the `axolotlai/axolotl` Docker image, with Python 3.12 or later and PyTorch 2.13 or later stated (20). Public GitHub Actions and 536 test files; of the last six push runs of the Tests workflow on main, three passed, two failed and one was cancelled, and the latest on 8 October failed (15 of 25). 109 open issues against 199 commits since 10 July, two of the 15 newest labelled bug (17 of 25). Release notes carry a Deprecations section naming removals, but 0.x minors break configs, such as `relora_steps` renamed in 0.17.0 with no shim (12 of 15). Version 0.20.0, no stability declaration (0).",
          "schema": "Read as a framework an agent drives through a CLI. `axolotl config-schema` prints the Pydantic config as JSON Schema, whole or per field, and the docs carry a config reference and a generated API reference (20 of 25). No llms.txt on either host (404), but `axolotl agent-docs` prints Markdown references bundled in the package (8 of 10). A method-choice guide and a support matrix mark each option stable, experimental or deprecated (15 of 20). Typed config fields with defaults and validators (12 of 15). An examples folder by model family, a debugging guide and an FAQ (12 of 15). Tagged releases with long notes, no changelog file (13 of 15).",
          "security": "Read as local software. No account or key of its own; Hugging Face and tracker tokens come from the environment (20 of 30). No read-only or approval mode, `trust_remote_code` is off unless the config sets it, and a config path may be a remote URL (8 of 20). A trainer returns no untrusted content to the agent (10 of 15). Runs log locally and to Weights \u0026 Biases, MLflow or Trackio when configured, with no audit log of its own (8 of 15). `.github/SECURITY.md` gives an email address for reports and supports only the latest release; no security.txt, bounty, certification or published advisory found (6 of 20).",
          "transparency": "Apache-2.0 in the repository, though the PyPI metadata carries no licence field (30). Training data stays on the owner's machine and the telemetry page lists what is sent to PostHog, but there is no privacy policy and no retention period (15 of 30). Deprecations are named in release notes and marked in the support matrix, with no dated removal policy (10 of 20). Telemetry is on by default, disclosed in the README and docs, announced at start-up, and turned off with `AXOLOTL_DO_NOT_TRACK=1` or `DO_NOT_TRACK=1` (20)."
        },
        "sources": [
          {
            "what": "vendor home page",
            "url": "https://axolotl.ai",
            "seen": "2026-10-08"
          },
          {
            "what": "docs home, install and requirements",
            "url": "https://docs.axolotl.ai/",
            "seen": "2026-10-08"
          },
          {
            "what": "repository README, cloned at commit 3035553",
            "url": "https://github.com/axolotl-ai-cloud/axolotl",
            "seen": "2026-10-08"
          },
          {
            "what": "telemetry documentation",
            "url": "https://docs.axolotl.ai/docs/telemetry.html",
            "seen": "2026-10-08"
          },
          {
            "what": "telemetry source (PostHog host, opt-out variables)",
            "url": "https://github.com/axolotl-ai-cloud/axolotl/blob/main/src/axolotl/telemetry/manager.py",
            "seen": "2026-10-08"
          },
          {
            "what": "security policy",
            "url": "https://github.com/axolotl-ai-cloud/axolotl/blob/main/.github/SECURITY.md",
            "seen": "2026-10-08"
          },
          {
            "what": "CLI source (`config-schema`, `agent-docs`)",
            "url": "https://github.com/axolotl-ai-cloud/axolotl/blob/main/src/axolotl/cli/main.py",
            "seen": "2026-10-08"
          },
          {
            "what": "release notes for 0.17.0 to 0.20.0",
            "url": "https://github.com/axolotl-ai-cloud/axolotl/releases",
            "seen": "2026-10-08"
          },
          {
            "what": "workflow runs on main",
            "url": "https://api.github.com/repos/axolotl-ai-cloud/axolotl/actions/runs?branch=main\u0026per_page=30",
            "seen": "2026-10-08"
          },
          {
            "what": "repository statistics and open issues",
            "url": "https://api.github.com/repos/axolotl-ai-cloud/axolotl",
            "seen": "2026-10-08"
          },
          {
            "what": "PyPI release history",
            "url": "https://pypi.org/pypi/axolotl/json",
            "seen": "2026-10-08"
          },
          {
            "what": "PyPI download counts",
            "url": "https://pypistats.org/api/packages/axolotl/recent",
            "seen": "2026-10-08"
          },
          {
            "what": "support matrix",
            "url": "https://docs.axolotl.ai/docs/support-matrix.html",
            "seen": "2026-10-08"
          },
          {
            "what": "Hugging Face AutoTrain docs, maintenance notice",
            "url": "https://huggingface.co/docs/autotrain/index",
            "seen": "2026-10-08"
          },
          {
            "what": "domain registration (RDAP)",
            "url": "https://rdap.org/domain/axolotl.ai",
            "seen": "2026-10-08"
          }
        ],
        "openQuestions": [
          "The legal entity behind Axolotl AI was not found on axolotl.ai, in the docs or in the repository.",
          "No terms of service or privacy policy is published (axolotl.ai/terms and /privacy return 404), so `provenance.terms` and `provenance.privacy` are left out.",
          "unchecked: the output of `axolotl config-schema` and the CLI's error messages were read in source, not run.",
          "unchecked: the telemetry retention period and who can read the PostHog project.",
          "unchecked: why the Tests workflow failed on main on 8 October 2026; the run logs were not read.",
          "The repository's `AGENTS.md` and `CLAUDE.md` carry instructions addressed to AI coding agents about contributions. Recorded as a fact; none was acted on."
        ]
      },
      "negative": 0,
      "verdict": "Axolotl runs a whole fine-tuning job from one YAML file and ships a JSON Schema of its config plus bundled agent docs. It is 0.x software with telemetry on by default, no terms or privacy policy, and the owner supplies the GPU.",
      "bestFor": "A team that wants a repeatable, config-driven fine-tune of an open model on its own or rented GPUs, including multi-GPU and multi-node runs.",
      "strengths": [
        "Apache-2.0, free, and the weights stay on the owner's hardware",
        "`axolotl config-schema` prints the full config as JSON Schema, and `axolotl agent-docs` prints bundled Markdown references by topic",
        "SFT, LoRA, QLoRA, DPO, IPO, KTO, ORPO, GRPO and reward modelling from one config format",
        "Three releases in the 90 days to 8 October 2026, each with a Deprecations section naming removed options",
        "Telemetry is documented field by field and `AXOLOTL_DO_NOT_TRACK=1` turns it off"
      ],
      "weaknesses": [
        "Telemetry to PostHog is on by default and delays training start by 10 seconds until the variable is set either way",
        "No terms of service, privacy policy, legal entity or security.txt found on axolotl.ai",
        "Version 0.20.0, with removals in minor releases (FSDP1 in 0.20.0, `relora_steps` renamed in 0.17.0 with no shim)",
        "Three of the last six push runs of the Tests workflow on main passed, and the nightly run against upstream failed on 7 and 8 October 2026",
        "Not a hosted service, so there is no job API, status page or SLA"
      ],
      "agentNotes": [
        "Set `AXOLOTL_DO_NOT_TRACK=1` before any command, or training waits 10 seconds and sends usage events to PostHog",
        "Run `axolotl agent-docs` and `axolotl config-schema --field \u003cname\u003e` before writing a config; both work offline from the installed package",
        "Install torch first, then `uv pip install --no-build-isolation axolotl[deepspeed]`, on Python 3.12 or later with PyTorch 2.13 or later",
        "Take example configs from the same release tag as the installed version; minor releases remove and rename config keys",
        "Resume an interrupted run with `axolotl train config.yml --resume-from-checkpoint \u003cpath\u003e`, then `axolotl merge-lora` and `axolotl export` only when shipping"
      ],
      "metrics": {
        "kind": "local",
        "measured": false
      },
      "reviewCount": 0,
      "avgRating": 0,
      "history": [
        {
          "basis": "public evidence",
          "confidence": "medium",
          "grade": "B",
          "methodology": "0.4",
          "pending": [
            "performance",
            "tasks"
          ],
          "run": "2026-10-01",
          "runLabel": "October 2026 research run",
          "score": 64.8
        }
      ],
      "editorialScores": {
        "ergonomics": 60,
        "maintenance": 88,
        "payments": 60,
        "reliability": 64,
        "schema": 80,
        "security": 52,
        "transparency": 75
      },
      "provenanceScore": 36
    },
    "connect": {
      "install": "uv pip install torch==2.14.0 torchvision \u0026\u0026 uv pip install --no-build-isolation axolotl[deepspeed]   # or: docker run --gpus '\"all\"' --ipc=host --rm -it axolotlai/axolotl:main-latest",
      "headless": {
        "command": "axolotl train config.yml",
        "env": {
          "AXOLOTL_DO_NOT_TRACK": "1"
        }
      }
    },
    "letme": {
      "capability": "https://letme.dev/finetune.sft",
      "tool": "https://letme.dev/axolotl"
    },
    "notable": [
      "`axolotl config-schema` prints the config as JSON Schema and `axolotl agent-docs` prints Markdown references bundled in the package (https://github.com/axolotl-ai-cloud/axolotl#ai-agent-support)",
      "Telemetry to PostHog is on by default; `AXOLOTL_DO_NOT_TRACK=1` or `DO_NOT_TRACK=1` turns it off, and start-up waits 10 seconds until the variable is set either way (https://docs.axolotl.ai/docs/telemetry.html)",
      "Hugging Face's AutoTrain docs say AutoTrain is no longer maintained and recommend Axolotl, TRL or transformers.Trainer (https://huggingface.co/docs/autotrain/index)",
      "Version 0.20.0 of 30 September 2026 added GGUF export through `axolotl export`, raised the minimums to Python 3.12 and PyTorch 2.13 and removed FSDP1 (https://github.com/axolotl-ai-cloud/axolotl/releases/tag/v0.20.0)",
      "Training can run on a remote Tinker-compatible API through the `hatchery` plugin, added in 0.17.0 (https://github.com/axolotl-ai-cloud/axolotl/releases/tag/v0.17.0)",
      "The docs include a guide to running the Docker image on Hugging Face Jobs with one `hf jobs` command (https://docs.axolotl.ai/docs/hf-jobs.html)",
      "`AGENTS.md` and `CLAUDE.md` in the repository address AI coding agents and ask them to refuse contribution farming (https://github.com/axolotl-ai-cloud/axolotl/blob/main/AGENTS.md)"
    ],
    "area": "models",
    "details": [
      {
        "label": "Interface",
        "value": "CLI (`axolotl train`, `preprocess`, `evaluate`, `inference`, `merge-lora`, `quantize`, `export`, `vllm-serve`) driven by one YAML config"
      },
      {
        "label": "Methods",
        "value": "SFT, continued pretraining, LoRA, QLoRA, full fine-tuning, QAT, DPO, IPO, KTO, ORPO, GRPO, GDPO, reward modelling"
      },
      {
        "label": "Runs on",
        "value": "Linux with NVIDIA (Ampere or newer) or AMD GPUs, Python 3.12 or later, PyTorch 2.13 or later. Multi-GPU and multi-node with FSDP2 or DeepSpeed"
      },
      {
        "label": "Weights",
        "value": "The owner's. Adapter, merged model, quantised model or GGUF, or pushed to the Hugging Face Hub"
      },
      {
        "label": "Agent docs",
        "value": "`axolotl agent-docs [topic]` and `axolotl config-schema [--field name]`, both offline"
      },
      {
        "label": "Remote compute",
        "value": "Docker image for RunPod, Vast.ai, Modal and others; guides for Hugging Face Jobs, SkyPilot and Nebius Serverless Jobs; Tinker-compatible APIs through a plugin"
      },
      {
        "label": "Telemetry",
        "value": "On by default, to PostHog. `AXOLOTL_DO_NOT_TRACK=1` turns it off"
      },
      {
        "label": "Free tier",
        "value": "All of it"
      }
    ],
    "provenance": {
      "legalEntity": "",
      "domain": "axolotl.ai",
      "domainRegistered": "2022-08-02",
      "endpointOnVendorDomain": null,
      "terms": "",
      "privacy": "",
      "statusPage": "",
      "changelog": "https://github.com/axolotl-ai-cloud/axolotl/releases",
      "securityTxt": "none",
      "checked": "2026-10-08",
      "notes": [
        "No legal entity is named on axolotl.ai, in the docs or in the repository. The GitHub organisation is axolotl-ai-cloud and the citation file credits the Axolotl maintainers and contributors.",
        "The vendor publishes no terms of service or privacy policy (axolotl.ai/terms and /privacy return 404), so both links are left out. The telemetry page is the only data-handling statement.",
        "Local software has no endpoint to check against the domain.",
        "axolotl.ai/.well-known/security.txt and /security.txt return 404. The repository's `.github/SECURITY.md` gives an email address for reports.",
        "RDAP shows axolotl.ai registered on 2 August 2022 and transferred on 11 April 2024."
      ],
      "score": 36,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "not found",
          "points": 0,
          "max": 20,
          "state": "no"
        },
        {
          "check": "Domain age",
          "value": "axolotl.ai, registered 2022-08-02 (4 years)",
          "points": 7,
          "max": 15,
          "state": "part"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "no hosted endpoint",
          "points": 0,
          "max": 0,
          "state": "na"
        },
        {
          "check": "Terms of service",
          "value": "nothing hosted, so the Apache-2.0 licence stands in",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Privacy policy",
          "value": "nothing hosted, not scored",
          "points": 0,
          "max": 0,
          "state": "na"
        },
        {
          "check": "Status page",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "Changelog",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "security.txt",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        }
      ]
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/axolotl.json"
  }
}
