Skip to content

Workspace Isolation

AutoResearch supports running multiple research projects simultaneously. Each project lives in its own directory with its own state, agents, and monitoring — completely isolated from other projects.

Per-Project Directory Structure

~/research/
├── project-alpha/
│   ├── .omc/research/          # Project Alpha state
│   ├── src/                    # Project Alpha code
│   ├── data/                   # Project Alpha data
│   └── infrastructure.yaml     # Project Alpha resources
├── project-beta/
│   ├── .omc/research/          # Project Beta state
│   ├── src/                    # Project Beta code
│   ├── data/                   # Project Beta data
│   └── infrastructure.yaml     # Project Beta resources
└── shared/
    ├── datasets/               # Shared datasets (symlinked)
    └── pretrained/             # Shared pretrained models

Each project is fully self-contained

The .omc/research/ directory contains everything the system needs to operate on a project. You can zip a project directory, move it to another machine, and resume work.

infrastructure.yaml

Each project declares its compute resources in infrastructure.yaml. This tells the Orchestrator what's available and prevents resource conflicts between projects.

yaml
# project-alpha/infrastructure.yaml
project: alpha
gpu:
  count: 4
  type: A100
  memory_gb: 80
  ids: [0, 1, 2, 3]          # CUDA_VISIBLE_DEVICES

storage:
  data_dir: ./data
  checkpoint_dir: ./checkpoints
  shared_data: ~/research/shared/datasets  # Symlink target

compute:
  max_concurrent_experiments: 2
  max_training_hours: 48
  priority: normal              # normal | high | low

tmux:
  session_prefix: alpha         # alpha-coder, alpha-scout
  
monitoring:
  phase1_active: true
  phase2_cron: true
  patrol_interval: 30           # minutes

GPU ID conflicts

If you run two projects on the same machine, ensure their gpu.ids don't overlap. The Orchestrator respects CUDA_VISIBLE_DEVICES but doesn't coordinate across projects.

Cross-Project Shared Resources

Some resources are shared across projects to save disk space and download time.

What Can Be Shared

ResourceHowManaged By
Pretrained model weightsSymlink to shared directoryUser
Common datasets (ImageNet, etc.)Symlink to shared directoryUser
BibTeX databasesSymlink or copyScout
Conda environmentsNamed envs, one per projectCoder

What Must NOT Be Shared

ResourceWhy
.omc/research/ stateProject-specific state must stay isolated
Training checkpointsDifferent model architectures
Experiment logsMust stay with their experiment
Paper draftsDifferent papers, different venues

Symlinks for data

Use symlinks to point project-local data/ to shared datasets:

bash
ln -s ~/research/shared/datasets/imagenet ./data/imagenet

This keeps the project directory self-contained (the symlink is part of the project) while avoiding data duplication.

Parallel Work with Multiple Tmux Sessions

Each project gets its own set of named tmux sessions, prefixed by the project name.

# Project Alpha sessions
alpha-orchestrator     # Main Claude Code session
alpha-coder            # Codex persistent session
alpha-scout            # Gemini worker

# Project Beta sessions
beta-orchestrator      # Main Claude Code session
beta-coder             # Codex persistent session
beta-scout             # Gemini worker

Listing All Sessions

bash
tmux list-sessions
# alpha-orchestrator: 1 windows (created ...)
# alpha-coder: 1 windows (created ...)
# alpha-scout: 1 windows (created ...)
# beta-orchestrator: 1 windows (created ...)
# beta-coder: 1 windows (created ...)

Switching Between Projects

bash
# Attach to Project Alpha orchestrator
tmux attach -t alpha-orchestrator

# Detach (Ctrl-b d), then attach to Project Beta
tmux attach -t beta-orchestrator

Session naming convention

The OMCC harness uses the tmux.session_prefix from infrastructure.yaml to name sessions. All agent sessions for a project share the same prefix, making them easy to identify and manage.

Resource Monitoring Across Projects

bash
# Quick GPU usage check across all projects
nvidia-smi

# Check which tmux sessions are active
tmux list-sessions | grep -E "(alpha|beta)"

# Check project status individually
cd ~/research/project-alpha && cat .omc/research/pipeline.yaml
cd ~/research/project-beta && cat .omc/research/pipeline.yaml

Workspace Lifecycle

mermaid
graph TD
    A["/research init 'topic'"] --> B[Create .omc/research/]
    B --> C[Create infrastructure.yaml]
    C --> D[Start tmux sessions]
    D --> E[Research in Progress]
    E --> F{Project Complete?}
    F -->|No| E
    F -->|Yes| G[Archive or Delete]
    G --> H[Kill tmux sessions]
    H --> I[Free GPU allocation]

    style A fill:#dbeafe,stroke:#2563eb
    style E fill:#fef3c7,stroke:#d97706
    style G fill:#dcfce7,stroke:#16a34a
Archiving a completed project

When a project is done, you can archive it:

bash
cd ~/research
tar czf project-alpha-archive.tar.gz project-alpha/
# Optionally remove the working directory
rm -rf project-alpha/

The archive contains everything — state, code, data symlinks, paper drafts — needed to understand or reproduce the work later.

Next

AutoResearch — Multi-agent Deep Learning Research System