An open archive for AI-generated research.
GenRxiv is a preprint server for research that was substantially generated or co-generated by AI. Submissions are accepted in Markdown only, authors are identified by ORCID iD, and everything is openly licensed and readable by both people and machines.
Status: accepting submissions. The archive is live and building in the open. Sign in with ORCID to submit.
Preprint servers exist for most fields — arXiv for physics and maths, bioRxiv for biology, ChemRxiv for chemistry. None were designed with AI-generated work in mind, and most are still working out what to do about it.
GenRxiv starts from the other end. It assumes AI involvement is the default, not an exception to be argued for.
GenRxiv is not peer-reviewed and does not evaluate the scientific quality of submissions. Popularity is tracked via human and agent download counts — the signal layer is usage, not editorial gatekeeping.
| Submissions | Markdown only — rendered to HTML (primary) with PDF on demand |
| Author identity | ORCID iD, so attribution is verifiable |
| Classification | Exactly 3 OECD Fields of Science subject classifications per paper |
| Machine access | OAI-PMH metadata endpoint, sitemap, Atom feed, schema.org JSON-LD, public stats API, agent discovery manifest |
| Licensing | CC0 (Public Domain Dedication) — all submissions |
| Discovery | Browse, search, subject pages, author pages |
| Versioning | Authors can submit revised versions; ARK persists across versions |
| Citations | BibTeX in Markdown, rendered as numbered references [1] in citation order |
| Notifications | Authors notified by email when submissions are approved or rejected |
Authors prepare papers by pasting
docs/AUTHOR_PROMPT.md into any LLM along with
their research content. The prompt produces a Markdown document with
LaTeX math ($...$), SVG figures, and a
license statement — ready to submit as-is.
GenRxiv stores the Markdown source, not a rendered PDF. Papers are submitted as Markdown (with LaTeX math notation), and the server renders them to HTML with KaTeX for math and native SVG for figures. Readers print from the browser. A downloadable PDF is also generated, but the HTML is the version of record.
This keeps storage ~50-200 KB per paper instead of the 2-10 MB typical of PDF-first preprint servers — a 20-50x reduction. It also makes every paper immediately machine-readable: the HTML is structured, semantic, and parseable by search engines and AI tools without PDF extraction.
Figure limits: raster images are capped at 500 KB each and 2 MB total per paper. Use SVG where possible — it's smaller, sharper, and scales to any display.
GenRxiv is built on a purpose-built FastAPI application with PostgreSQL. There is no OJS, no Apache, no PHP. The submission workflow is deliberately simple: submit, moderate, publish.
Cloudflare Tunnel
|
nginx
|
+------------------+------------------+
| | |
FastAPI API Conversion Service PostgreSQL
(submission, (Markdown → HTML/PDF (articles, authors,
moderation, via Pandoc + Tectonic) downloads, sessions,
articles, No published ports settings,
OAI-PMH, schema_migrations)
auth, stats,
agent discovery,
maintenance mode)
|
Article files
(HTML, PDF renders)
The conversion service runs untrusted author-submitted Markdown, so it is
sandboxed: per-job scratch directories, hard wall-clock timeouts, capped
upload and image sizes, and no published ports. Tectonic (used for PDF
rendering) is invoked with --untrusted, which disables shell-escape and
restricts file system access.
- All queries use parameterized SQL (psycopg3) — no string interpolation
- Input validation: ORCID format, title/abstract/subject length limits, CC0-only license, file extension whitelist, file size limits
- Path traversal protection on all file-serving endpoints
- Rate limiting: API-level (SlowAPI) and nginx-level (limit_req)
- Security headers: X-Content-Type-Options, X-Frame-Options, HSTS, Referrer-Policy, Permissions-Policy
- Session cookies: HttpOnly, SameSite=Lax, Secure (over HTTPS)
- ORCID OAuth state validation (CSRF protection)
- No password storage — ORCID is the only login mechanism
- API docs and OpenAPI schema moved to
/api/docsand/api/openapi.json(not exposed at the default/docs) - Container resource limits on all services
- PostgreSQL healthcheck with startup ordering
See SECURITY.md for the full policy.
api/ FastAPI application (submission, moderation, articles, OAI-PMH)
migrations/ Numbered SQL migration files
convert-service/ Markdown to HTML/PDF conversion sidecar (Pandoc + Tectonic)
deploy/ docker-compose stack, nginx config, .env.example
tests/browser/ Playwright browser tests
scripts/ backup, restore, maintenance, deployment scripts
brand/ logos and brand assets
docs/ setup guide, author prompt
test-paper.md sample submission for testing
| Method | Path | Description |
|---|---|---|
| GET | /health |
Service health check |
| GET | /api/articles |
List published articles (paginated, searchable) |
| GET | /api/articles/{id} |
Article metadata (JSON or JSON-LD) |
| GET | /api/subjects |
All subject classifications with article counts |
| GET | /api/subjects/{subject}/articles |
Articles by subject classification |
| GET | /api/authors/{orcid} |
Author profile and articles |
| GET | /api/stats |
Public stats (no auth, agent-readable) |
| GET | /article/{ark} |
View article as HTML |
| GET | /article/{ark}/pdf |
Download article as PDF |
| GET | /article/{ark}/markdown |
Download original Markdown |
| GET | /article/{ark}/jsonld |
Schema.org JSON-LD |
| GET | /article/{ark}/bibtex |
BibTeX references (plain text) |
| GET | /api/articles/{ark}/references |
Parsed references (JSON) |
| GET | /oai |
OAI-PMH 2.0 endpoint |
| GET | /sitemap.xml |
XML sitemap |
| GET | /feed.xml |
Atom 1.0 feed (20 most recent articles) |
| GET | /robots.txt |
Robots file |
| GET | /.well-known/ai-plugin.json |
AI plugin manifest for agent discovery |
| GET | /api/agent-guide |
Plain-text agent guide with submission instructions |
| GET | /api/fos |
OECD Fields of Science taxonomy (JSON) |
| Method | Path | Description |
|---|---|---|
| GET | /browse |
Browse articles (search, pagination) |
| GET | /subjects |
Subject classification cloud |
| GET | /author/{orcid} |
Author profile page |
| GET | /submit |
Submission form (requires ORCID) |
| GET | /dashboard |
Author's submissions |
| Method | Path | Description |
|---|---|---|
| GET | /auth/orcid |
Redirect to ORCID OAuth |
| GET | /auth/orcid/callback |
ORCID callback |
| POST | /auth/logout |
Destroy session |
| GET | /auth/me |
Current user info |
| Method | Path | Description |
|---|---|---|
| POST | /api/submit |
Submit Markdown paper (rate-limited: 5/min) |
| GET | /api/submissions |
List own submissions |
| GET | /api/articles/{id}/stats |
Per-article download stats |
| GET | /api/articles/{id}/versions |
Version history for an article |
| Method | Path | Description |
|---|---|---|
| GET | /admin |
Moderation queue and stats dashboard |
| GET | /admin/queue |
Pending submissions (JSON) |
| GET | /admin/submission/{id} |
Submission detail with markdown preview |
| POST | /admin/articles/{id} |
Approve/reject (form-based) |
| PATCH | /admin/articles/{id} |
Approve/reject (JSON API) |
| GET | /admin/stats |
Aggregate stats |
| GET | /admin/maintenance |
Maintenance mode status |
| POST | /admin/maintenance |
Toggle maintenance mode |
GET /api/docs— Swagger UIGET /api/openapi.json— OpenAPI schema
GenRxiv is designed to be machine-readable. Agents can discover, read, and prepare submissions without a browser.
| Endpoint | Purpose |
|---|---|
GET /api/agent-guide |
Plain-text guide with full submission instructions |
GET /.well-known/ai-plugin.json |
AI plugin manifest |
GET /api/fos |
OECD Fields of Science taxonomy (JSON) |
GET /api/openapi.json |
OpenAPI schema |
GET /oai?verb=Identify |
OAI-PMH 2.0 metadata harvesting |
GET /sitemap.xml |
XML sitemap |
GET /feed.xml |
Atom 1.0 feed |
GET /robots.txt |
Robots file (advertises agent endpoints) |
| Endpoint | Purpose |
|---|---|
GET /api/articles |
List published articles (paginated, searchable) |
GET /api/articles/{id} |
Article metadata (JSON) |
GET /article/{ark}/jsonld |
Schema.org JSON-LD |
GET /article/{ark}/bibtex |
BibTeX references (plain text) |
GET /api/articles/{ark}/references |
Parsed references (JSON) |
GET /article/{ark}/markdown |
Original Markdown source |
GET /article/{ark}/pdf |
PDF rendering |
Agents can't authenticate via ORCID (it requires browser-based OAuth),
but they can prepare a complete submission file. The Markdown file
includes YAML front matter with all metadata — when a human uploads
it on /submit, the form auto-fills. See
docs/AUTHOR_PROMPT.md for the full template.
The submitter (logged-in ORCID user) is recorded separately for
accountability but does not need to be an author. The front matter
authors list is the complete author list in publication order.
Agents must get explicit user confirmation before submission. See
GET /api/agent-guide for the full conduct rules.
Requires Docker and Docker Compose.
git clone https://github.com/GenRxiv/genrxiv.git
cd genrxiv
cp deploy/.env.example .env # fill in your own values
docker compose -f deploy/docker-compose.yml --env-file .env up -dThe site will be available at http://localhost:8080.
See docs/SETUP.md for the full walkthrough, including Cloudflare Tunnel, ORCID registration, and backups.
# API tests (91 tests, requires PostgreSQL)
cd api
pip install -r requirements-dev.txt
export DATABASE_URL_TEST=postgresql://user:pass@localhost/genrxiv_test
export RATE_LIMIT_ENABLED=false
pytest test_api.py -v
# Browser tests (13 Playwright tests, requires running API)
cd tests/browser
pip install -r requirements.txt
playwright install chromium
pytest test_submit_form.py -v
# Conversion service tests (requires pandoc + tectonic)
cd convert-service
pip install -r requirements-dev.txt
pytest test_app.py -vCI runs all test suites on every push and pull request (see
.github/workflows/tests.yml).
GenRxiv needs more than code. Moderators, people to help write the submission and disclosure policy, and researchers willing to be early authors are all genuinely useful. See CONTRIBUTING.md.
- Code in this repository: AGPL-3.0
- Archived papers: CC0 1.0 (Public Domain Dedication) — all submissions are CC0
GenRxiv issues ARK (Archival Resource Key) identifiers for
every published preprint. ARKs are free, resolvable through n2t.net, and
included in OAI-PMH metadata and on article pages.
ARKs are an interim step. The goal is to issue Crossref DOIs once GenRxiv has:
- A track record of published submissions
- Organizational backing (institutional sponsor or funded governance)
- A sustainability plan that commits to maintaining DOI metadata indefinitely
- Crossref membership approval (annual fee, application review)
Once those conditions are met, GenRxiv will:
- Apply for a Crossref membership and receive a DOI prefix (e.g.
10.55555) - Mint DOIs on publication alongside existing ARKs
- Register each DOI with Crossref deposit, including metadata and PDF URL
- Continue supporting existing ARKs — both identifiers resolve to the same article
DOIs are a permanence commitment. Once minted and registered, they must resolve forever — even if GenRxiv changes domains, changes infrastructure, or shuts down (in which case Crossref's fallback resolution takes over). This is why DOIs are not issued from day one: the commitment should not be made lightly.
For more on ARKs and the difference between ARKs and DOIs, see https://n2t.net/e/ark_ids.html.
GenRxiv runs on self-hosted infrastructure funded personally. If you'd like to help cover hosting, storage, and eventually DOI registration, see the funding link on the project page.