Skip to main content

Oratos

crates.io docs.rs CI Code Quality Coverage Status License MSRV

Website visibility intelligence for SEO, accessibility, structured metadata, and AI readiness.

Oratos audits and improves websites without owning your workflow. It works on local HTML directories, static exports, and live URLs — useful in CI/CD like Credo, Sobelow, Ruff, or Lighthouse CI.

v0.3.2 ships as a single Rust crate (CLI + library modules) with multi-ecosystem install paths that do not require Rust. API docs on docs.rs include this README.

Install

No Rust required. Pick your environment — full details in docs/install.md.

Linux / macOS

curl -fsSL https://raw.githubusercontent.com/latentmeta/oratos/main/scripts/install.sh | sh
# or: brew install latentmeta/tap/oratos

Windows

scoop bucket add latentmeta https://github.com/latentmeta/scoop-bucket
scoop install oratos

Or download oratos-v*-windows-x86_64.zip from Releases, extract oratos.exe, and add it to your PATH.

Version managers

# mise
mise use -g github:latentmeta/oratos

# asdf
asdf plugin add oratos https://github.com/latentmeta/asdf-oratos.git
asdf install oratos latest

CI / language ecosystems

# GitHub Actions
- uses: latentmeta/oratos/.github/actions/setup-oratos@main
pip install oratos          # PyPI
npm install -D @latentmeta/oratos       # npm
# mix.exs — only: [:dev, :test], runtime: false
{:oratos, "~> 0.3", only: [:dev, :test], runtime: false}
# then: mix oratos.audit ./priv/static

Rust contributors

cargo install oratos
# or from a checkout:
cargo install --path crates/oratos

Prebuilt binaries for Linux (x86_64/aarch64), macOS (Intel/Apple Silicon), and Windows are published on every v* tag with SHA256SUMS.

Quick start

# Audit a static site directory
oratos audit examples/static_site

# JSON report for tooling
oratos audit examples/static_site --format json --output report.json

# CI gate: fail if overall score is below 85
oratos audit ./priv/static --fail-under 85

# Generate llms.txt draft
oratos generate llms examples/static_site

# LLM remediation prompt for a page
oratos prompt html examples/static_site/index.html

CLI

oratos audit <target> [--format console|json|markdown|html|sarif] [--output PATH] [--fail-under SCORE] [--strict] [--crawl] [--changed-only] [--config PATH]
oratos generate llms <target> [--output PATH]
oratos generate metadata <target> [--output PATH]
oratos prompt html <file-or-url> [--output PATH]
oratos prompt phoenix <file-or-url> [--output PATH]

<target> may be a directory (./priv/static, ./dist), a single HTML file, or a URL (https://example.com).

URL audits: by default a URL fetches one page. Enable multi-page crawl with --crawl or [crawl] enabled = true in oratos.toml (see Configuration).

What Oratos checks

  • SEO — title, meta description, canonical, headings, Open Graph, Twitter cards, internal links
  • Accessibility — alt text, lang, landmarks, form labels, link text
  • Structured data — JSON-LD presence and syntax, WebPage/BreadcrumbList/ImageObject hints
  • LLM readiness — llms.txt, extractable text, summaries, image descriptions

Scores are 0–100 per category. Overall score uses weights: SEO 30%, Accessibility 25%, Structured Data 25%, LLM Readiness 20%. Penalties: error −10, warning −5, info −1 (per category).

Phoenix / Mix

Oratos does not replace Phoenix SEO libraries — it audits rendered HTML after prerendering or static export:

# mix.exs
aliases: [
  "seo.audit": ["cmd oratos audit ./priv/static --fail-under 85"],
  "seo.report": ["cmd oratos audit ./priv/static --format html --output reports/oratos.html"]
]

See docs/phoenix.md and docs/ci.md.

Library

Use Oratos from Rust without shelling out to the CLI:

[dependencies]
oratos = "0.3"
use oratos::{audit_pages, load_pages, LoadOptions};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let pages = load_pages("examples/static_site", &LoadOptions::default()).await?;
    let report = audit_pages("examples/static_site", &pages);
    println!("overall score: {:.1}", report.scores.overall);
    Ok(())
}

See docs/architecture.md for module layout. Upgrading from v0.2 split crates? See v0.3.0 release notes. Latest patch notes: v0.3.2.

Documentation

Development

cargo test
cargo clippy -- -D warnings
cargo fmt --check

License

MIT — see the LICENSE file.

Metadata

Release files for oratos 0.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oratos 0.3.2
File Size Uploaded
oratos-0.3.2.tar.gz 58.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for oratos 0.3.2
File
oratos-0.3.2-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
oratos-0.3.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
oratos-0.3.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
oratos-0.3.2-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
oratos-0.3.2-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 14.0 MB

Release files / oratos-0.3.2.tar.gz

Download URL oratos-0.3.2.tar.gz
Size 58.9 kB
Tags Source
SHA-256 checksum
How to use checksums
36cc03c4e34acc9b26ebf734c3c235c33e75388d090ef84ea8ded3ab56d834c7
BLAKE2b-256 checksum
How to use checksums
2b582e1fc2b34a71376fdd2588237ba759dd72202f765df23e9818466f758ec9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 24, 2026.

Transparency log

Release files / oratos-0.3.2-py3-none-win_amd64.whl

Download URL oratos-0.3.2-py3-none-win_amd64.whl
Size 2.8 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
7f422d857cd220c31808b4cdb750cd34a881259e388f31981776930c5a5c99d8
BLAKE2b-256 checksum
How to use checksums
5b9995aa3ec963343fcaafcfcb86fd5c181f92ac922032bc55b20b598d3a5135
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 24, 2026.

Transparency log

Release files / oratos-0.3.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL oratos-0.3.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.9 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
e99f6dec78f6c0308a80cd0c360e1030f036da2fb2faa839f3a8d07b52e9e2d7
BLAKE2b-256 checksum
How to use checksums
3b658640c21ac429d85726e25286134c54679597fc4d36b5e5cf8038d520da14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 24, 2026.

Transparency log

Release files / oratos-0.3.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL oratos-0.3.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 2.8 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
3786b60b0784e1385db6bc2cdd378b6664317d4e0135d8cca6593fa933c7e234
BLAKE2b-256 checksum
How to use checksums
5395cf77b3be5ac663bdf11737171be59a15568c37e1ea129b9bd84fda0dc8c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 24, 2026.

Transparency log

Release files / oratos-0.3.2-py3-none-macosx_11_0_arm64.whl

Download URL oratos-0.3.2-py3-none-macosx_11_0_arm64.whl
Size 2.7 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
cbb12b6e7cbba4d98d15daaac3dd4ddb572417acd1b7854580452cc58c3cef17
BLAKE2b-256 checksum
How to use checksums
3594a1c358b62624e4969631f6ffb489f864c7349a0e3740e21e487f7448f20d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 24, 2026.

Transparency log

Release files / oratos-0.3.2-py3-none-macosx_10_12_x86_64.whl

Download URL oratos-0.3.2-py3-none-macosx_10_12_x86_64.whl
Size 2.8 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
beac7f8d0aa9d1e158134f9b3b7b268ccd60dedf7c215e5b87a56e1e72ea4878
BLAKE2b-256 checksum
How to use checksums
bfe7286afa67bd2faee41e60536bd71373fb8bd5f5ee9f75fbdb47acc4648304
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 24, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.2 This release

6 release files

0.3.1

6 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page