{#- Landing page: hero (logo + text) → example → features → install. Selected via `template: home.html` in index.md front matter. Extends main.html so the header/nav bar is preserved. -#} {% extends "main.html" %} {% block tabs %} {{ super() }} {# Page-scoped resets: only active when this template is rendered. #} {# ── Hero ─────────────────────────────────────────────────────── #}

Send prompts and files through one Python interface

Pollux handles uploads, shared context, retries, provider differences, and normalized results.

{# ── Example ──────────────────────────────────────────────────── #}
from pollux import run, Config, Source

result = await run(
    "Summarize the key findings",
    source=Source.from_file("paper.pdf"),
    config=Config(
        provider="gemini",
        model="gemini-2.5-flash-lite",
    ),
)
print(result.text)
{# ── Features ─────────────────────────────────────────────────── #}

Files and URLs

PDFs, images, video, YouTube, arXiv. Use the same entry point for each.

Shared context

Ask several questions without writing upload and concurrency machinery.

Provider differences

Use one result model without hiding capabilities that genuinely differ.

Useful results

Read text, structured data, tool calls, usage, and completion state directly.

{# ── Install ──────────────────────────────────────────────────── #}
pip install --upgrade pollux-ai
{% endblock %} {# Suppress Markdown body (SEO fallback text lives in index.md but does not render visually). #} {% block content %}{% endblock %} {# Homepage footer: meta row only (copyright + social), no prev/next pills. Reuses pollux-footer-meta__* classes from extra.css. #} {% block footer %} {% endblock %}