---
title: The code workspace
description: Every chat has a private Linux workspace where Ivy writes and runs Python, R, Julia, Octave, notebooks and bioinformatics command-line tools against your files and results.
tags:
  - sandbox
  - compute
  - workspace
  - code-execution
---

Every chat comes with its own Linux workspace, and Ivy runs code in it for you. Ask for an analysis in plain language, such as "merge the docking scores with the ADMET table and plot them" or "run DESeq2 on the counts I uploaded", and Ivy writes the script, runs it, reads the output and shows you the result. Nothing here needs to be called by name, and there is no separate console to open. The workspace shares a folder with your uploads and with every job result from the chat, so a single script can read a docking result and an ADMET result side by side and join them.

Use it for the step no packaged tool covers: filtering and ranking a large result, statistics across datasets, a custom plot, an RDKit substructure filter, a variant-calling one-liner, or running a notebook or script you uploaded.

## What Ivy can run there

| Language or runtime | What it is good for |
|---|---|
| **Python 3.11** | The default for data work: tables, statistics, cheminformatics, structural biology, single-cell and plotting |
| **R 4.3+** with Bioconductor | Differential expression (DESeq2, edgeR, limma), genomic ranges, tidyverse analysis and ggplot2 figures |
| **Jupyter notebooks** | Upload a `.ipynb` and Ivy executes it headlessly, keeping every cell's output (plots, tables) in the result notebook. Notebooks can take parameters, and Python and R kernels are available |
| **Julia 1.11** | DataFrames, CSV, statistics and BioSequences/FASTX for sequence work |
| **GNU Octave 9** | MATLAB-style numerics, with the control, signal, statistics, optim, image and io packages |
| **Shell** | Unix text tools (`grep`, `awk`, `sed`, `ripgrep`, `jq`, Miller) and the bioinformatics command-line tools below |

## What comes preinstalled

The workspace image ships a broad scientific stack, so most analyses need no setup. The highlights:

| Area | Preinstalled |
|---|---|
| Data and statistics | pandas, polars, NumPy, SciPy, scikit-learn, statsmodels, DuckDB (Python module), PyArrow, h5py, Zarr, networkx |
| Plotting | matplotlib, seaborn, plotly, py3Dmol, nglview, pyCirclize, gnuplot, Circos |
| Cheminformatics | RDKit, Open Babel, datamol, Meeko, ProLIF |
| Structural biology | Biopython, Biotite, ProDy, MDTraj, MDAnalysis, gemmi, FreeSASA, PDBFixer, PyMOL (open source) |
| Sequences and alignment | BLAST+, HMMER (CLI and pyhmmer), MAFFT, MUSCLE, Clustal W, seqkit, pyfaidx |
| Reads and variants | samtools, bcftools, bedtools, htslib/tabix, vcftools, BWA, minimap2, FastQC, fastp, MultiQC, cutadapt, pysam, cyvcf2, CNVkit |
| Assembly, annotation and long reads | SPAdes, Unicycler, Flye, QUAST, Prokka, Medaka, NanoPlot, Porechop |
| Phylogenetics and metagenomics | IQ-TREE, ETE 3, scikit-bio, pyani, SRA Toolkit, Entrez Direct |
| Single-cell and spatial | Scanpy, AnnData, Squidpy, leidenalg |
| Omics and pathways | PyDESeq2, GSEApy, MAGeCK, COBRApy, cooler and cooltools (Hi-C) |
| Proteomics, metabolomics and cytometry | pyOpenMS, matchms, FlowSOM, FlowUtils, fcsparser |
| Biomedical text | scispaCy with the `en_core_sci_lg` and `en_ner_bc5cdr_md` models |
| Sequence design and imaging | DNA Chisel, codon tables, pydicom |
| Lab automation | The Opentrons API and PyLabRobot, for generating and simulating liquid-handling protocols |

Ask Ivy to "list the installed packages" for exact versions. If something you need is missing, Ivy can install it from PyPI for the rest of the session, but each new session starts again from the preinstalled set.

## Your files and where results go

The workspace sees the same files as the Files panel and the [ivybloom CLI](/docs/cli):

| Folder | Holds | Kept after the session? |
|------|----------|-------------|
| `/workspace/files/uploads/` | Files you attached to the chat | Yes. Ivy can read them but not modify them |
| `/workspace/files/data/` | Context files pushed into the chat | Yes. Ivy can read them but not modify them |
| `/workspace/files/downloads/` | Results from the chat's compute jobs and other tools | Yes. Ivy can read them but not modify them |
| `/workspace/scratch/` | Files Ivy's code writes: intermediate tables, figures, deliverables | Only if you ask Ivy to save them |
| `/workspace/inbox/` | Public datasets, files and repositories Ivy downloads | Only if you ask Ivy to save them |

Files that code writes are temporary. To keep a table or figure, ask Ivy to **save it to your files**, which uploads it and lists it in the Files panel. Anything that is not saved should be treated as lost when the session ends.

Large tool results are never pasted whole into the conversation. Ivy sees a compact summary, and the full payload stays in `/workspace/files/downloads/`, where the workspace reads it when a later step needs every row.

## Limits

- **Memory:** about 4 GB per chat, so Ivy streams or chunks very large files instead of loading them whole.
- **Run time:** a single command or script gets up to 2 minutes, and a notebook up to 10 minutes. Longer work belongs in a [compute job](/docs/compute-tools), which runs on its own hardware and reports back when it finishes.
- **No GPU.** Folding, docking and the other model-heavy tools run as compute jobs, and the workspace handles the CPU work around them.
- **Downloads:** Ivy can fetch public URLs (a PDB file, a FASTA, a GEO or SRA dataset) and clone public Git repositories. Files over about 50 MB download in the background while Ivy keeps working.
- **One workspace per chat.** Chats never share a workspace. It starts while Ivy reads your first message, stays warm while you work, and is replaced automatically if it stops responding.

Guest (signed-out) chats get a workspace too, with tighter limits. See [guest mode](/docs/sandbox/guest).

## Read next
