A codex-style, multi-agent command-line tool for automatically writing physics-experiment reports in LaTeX. It is a Rust rewrite of the AutoReport desktop app — no GUI, no MCP, no image recognition. The terminal is the interface; the working directory is the project.
┌──────────────────────────────────────────────────────────────────┐
│ AutoReportCLI <workspace> anthropic/claude-… focused: Main │
├──────────────────────────────────────────────────────────────────┤
│ ▸ Main │
│ I'll start with theory, then data analysis… │
│ ⚒ Theory · write_file(…/formulas.md) │
│ {"success": true} │
│ ▸ Data Analysis │
│ analyzing power-curve data… │
├──────────────────────────────────────────────────────────────────┤
│ message to Data Analysis │
└ Tab: switch agent Enter: send ↑/↓: scroll /help Ctrl+C ┘
AutoReportCLI keeps the multi-agent workflow of AutoReport, but rebuilds it as a terminal-first tool in Rust. You work inside an experiment folder, feed in raw data and references, and coordinate five agents from a single codex-style TUI.
- Multi-Agent Collaboration — Main, Theory, Data Analysis, Plotting, and Report agents work on the same experiment with separate responsibilities
- Project-Oriented Workspace — each run operates on the current folder and creates the standard report layout automatically
- Provider Flexibility — supports Anthropic and OpenAI-compatible providers, with config-file, env-var, and first-run interactive setup
- Built-In Defaults — ships bundled report templates and default skills so a fresh workspace can run immediately
- Codex-Style Interface — full-screen terminal UI with agent panes, streaming output, markdown rendering, and keyboard-first navigation
- Persistent Agent Sessions — each agent keeps its own conversation history and resumes on the next launch
@File Mentions — fuzzy-search workspace files and inject them into prompts directly from the input box- Slash Commands —
/agents,/switch,/config,/models,/clear,/compact,/new,/manifest,/index,/help
Prerequisites: Rust 1.85+, a TeX distribution, and at least one LLM provider API key.
Build from source:
git clone <this-repo> AutoReportCLI && cd AutoReportCLI
cargo build --releaseInstall globally if you want autoreport available from any directory:
cargo install --path autoreport-rs/cliOn Linux, install the companion sandbox launcher into the same Cargo bin
directory as well. Restricted exec commands fail closed if it is absent:
cargo install --path autoreport-rs/linux-sandboxOr run the built binary directly:
./target/release/autoreportCreate a project folder and start:
mkdir ~/my-experiment && cd ~/my-experiment
autoreportIf autoreport is not in your PATH, use the binary path instead:
/path/to/AutoReportCLI/target/release/autoreportOn first launch, AutoReportCLI configures the API and models, asks you to confirm the workspace, then creates the workspace folders and opens the TUI. Built-in templates and synced presets/skills live in the global AutoReport home.
Configure a provider in any of these ways:
- Set an API key environment variable such as
ANTHROPIC_API_KEY,OPENAI_API_KEY,DEEPSEEK_API_KEY,OPENROUTER_API_KEY, orGEMINI_API_KEY - Copy
autoreport.config.example.tomlto$AUTOREPORT_HOME/config.toml(default:~/.autoreport/config.toml), or use/config.AUTOREPORT_HOMEcan point to another global AutoReport home. - Use
/configto add API entries from presets (presets are additive, so one provider kind can have multiple API keys) and optionally override each entry's alias, then use/modelsto bind main and sub-agent model names only to configured API entries. First launch opens these pages in that order when needed. - Let the first-run full-screen setup page guide you through provider selection and saving
Useful CLI flags:
--workspace <dir>to run on a different project folder--no-syncto skip startup sync and use cache only--sync-presetsto force a refresh and exit-vfor verbose logs
.
├── Data/ raw data and processed results
├── References/ papers, images, templates, custom skills
├── Theory/ theory agent output
├── Plots/ plotting figures (Plots/Fig) and scripts (Plots/Scripts)
├── Tex/ LaTeX sources and compiled PDF
├── Outline/ main agent planning output
└── (no AutoReport metadata files; program state lives in ~/.autoreport/)
Global program state follows Codex's home-directory model:
~/.autoreport/
├── config.toml
├── auth.json provider credentials (mode 0600 where supported)
├── history.jsonl append-only conversation history
├── skills/ global skills and synced skills
├── external/ synced provider presets
├── templates/ bundled report templates
├── agents/ global prompt overrides
└── workspaces/<id>/ manifests, rules, and workspace metadata
The Rust source follows Codex's workspace layout rather than a monolithic
src/ tree:
autoreport-rs/
├── cli/ executable entry point
├── core/ configuration, providers, agents, skills, and domain types
├── protocol/ shared policy and sandbox protocol types
├── rollout/ Codex-compatible session persistence
├── runtime/ persistent agent loops and orchestration
├── sandboxing/ cross-platform execution policy
├── tools/ tool definitions and local handlers
├── tui/ terminal UI, rendering, and IDE context
└── utils/ absolute-path and path-URI crates
Run tests with:
cargo testBuild an npm package with a native binary for the current Rust target:
npm run build:npm
(cd autoreport-cli && npm pack --dry-run)For implementation status and parity notes, see docs/PARITY.md.
