RSM Studio is the reference implementation and collaborative editor for RSM (Readable Science Markup). Write documents that preserve semantic meaning, render beautifully on any device, and enable true interactivity. Real-time collaboration, universal device support, planned Pandoc integration for import/export.
Governance: Studio is community-maintained—open source, bug reports and maintenance contributions accepted. Part of the Aris Program, supported by community donations and academic grants.
- Frontend: Node.js
>=23, NPM>=10 - Backend: Python
>=3.13, PostgreSQL>=14, FastAPI>=0.115
-
Clone the repository
git clone https://github.com/leotrs/aris.git cd aris -
Install Just (task runner)
# macOS brew install just # Or download from: https://github.com/casey/just/releases
-
Initialize development environment
just init # Sets up all .env files and installs dependenciesCRITICAL: All environment variables are REQUIRED. The system will crash immediately if any are missing.
-
Start development containers
just dev # Starts all services in Docker containers
The studio CLI tool accelerates UI testing and development by managing authentication sessions and generating Playwright scripts.
Installation:
cd cli
uv syncUsage:
# Login once
uv run python -m cli login -u your@email.com -p password
# List your files
uv run python -m cli files
# For humans: open browser to file (exits immediately, browser stays open)
uv run python -m cli ui 200
# For agents: output ready-to-use Playwright script
uv run python -m cli ui 200 --playwright
# Show session data (tokens, user info)
uv run python -m cli session
# Logout
uv run python -m cli logoutWhy use it:
- Eliminates boilerplate login code in UI tests
- Agent-friendly: generates complete Playwright test templates
- Secure: session stored with 600 permissions in
~/.studio/session.json - Local-only: refuses to run in PROD/CI/STAGING environments
See cli/README.md for detailed documentation.
Tests use SQLite locally for fast iteration and PostgreSQL in CI for production-like testing. Backend tests run with 8 parallel workers for maximum speed.
# Run all tests
just test
# Run all checks (lint + typecheck + tests)
just check
# Backend tests only
cd backend && uv run pytest -n8
# Frontend unit tests
cd frontend && npm test
# E2E tests (requires both servers running)
cd frontend && npm run test:e2eFor detailed testing documentation, see CONTRIBUTING.md.
We welcome contributions! Please see our Contributing Guide for details.
Ensure all tests pass and code is linted before submitting PRs:
just check # Run all checksThis project is licensed under the MIT License - see the LICENSE file for details.
Made with <3 by leotrs.
Aris, empowering researchers, one draft at a time.