bcbd1bdb22
Integ / changes (push) Has been skipped
Pre-commit / pre-commit (push) Failing after 1s
CLI exit codes / changes (push) Has been skipped
Test (Install) / changes (push) Has been skipped
Test (Python) / changes (push) Has been skipped
Test (TypeScript) / changes (push) Has been skipped
CLI exit codes / cli-gate (push) Has been cancelled
Test (Install) / test-install-gate (push) Has been cancelled
Integ / integ-gate (push) Has been cancelled
Test (Python) / test-python-gate (push) Has been cancelled
Test (TypeScript) / test-typescript-gate (push) Has been cancelled
Test (Install) / python-minimal (3.12) (push) Has been cancelled
Test (Install) / python-minimal (3.11) (push) Has been cancelled
Test (Install) / python-extra (agno, mirage.agents.agno) (push) Has been cancelled
Test (Install) / python-extra (chroma, mirage.resource.chroma) (push) Has been cancelled
Test (Install) / python-extra (pdf, mirage.core.filetype.pdf) (push) Has been cancelled
Integ / integ (push) Has been cancelled
Integ / integ-database (push) Has been cancelled
Integ / integ-database-ts (push) Has been cancelled
Integ / integ-data (push) Has been cancelled
Integ / integ-ssh (push) Has been cancelled
Integ / integ-ssh-ts (push) Has been cancelled
Test (Python) / audit (push) Has been cancelled
Test (TypeScript) / test (push) Has been cancelled
Test (TypeScript) / python-fs-shim (push) Has been cancelled
CLI exit codes / Python CLI (push) Has been cancelled
CLI exit codes / TypeScript CLI (push) Has been cancelled
CLI exit codes / Cross-language snapshot interop (push) Has been cancelled
Test (Python) / test (push) Has been cancelled
Test (Python) / import-isolation (deepagents, openai, mirage.agents.openai_agents) (push) Has been cancelled
Test (Python) / import-isolation (deepagents, pydantic-ai, mirage.agents.pydantic_ai) (push) Has been cancelled
Integ / integ-ts (push) Has been cancelled
Integ / integ-fuse (push) Has been cancelled
Test (Install) / python-extra (databricks, mirage.resource.databricks_volume) (push) Has been cancelled
Test (Install) / python-extra (deepagents, mirage.agents.langchain) (push) Has been cancelled
Test (Install) / python-extra (email, mirage.resource.email) (push) Has been cancelled
Test (Install) / python-extra (fuse, mirage.fuse.mount) (push) Has been cancelled
Test (Install) / python-extra (hdf5, mirage.core.filetype.hdf5) (push) Has been cancelled
Test (Install) / python-extra (hf, mirage.resource.hf_buckets) (push) Has been cancelled
Test (Install) / python-extra (lancedb, mirage.resource.lancedb) (push) Has been cancelled
Test (Install) / python-extra (langfuse, mirage.resource.langfuse) (push) Has been cancelled
Test (Install) / python-extra (mongodb, mirage.resource.mongodb) (push) Has been cancelled
Test (Install) / python-extra (nextcloud, mirage.resource.nextcloud) (push) Has been cancelled
Test (Install) / python-extra (openai, mirage.agents.openai_agents) (push) Has been cancelled
Test (Install) / python-extra (openhands, mirage.agents.openhands, 3.12) (push) Has been cancelled
Test (Install) / python-extra (parquet, mirage.core.filetype.parquet) (push) Has been cancelled
Test (Install) / python-extra (postgres, mirage.resource.postgres) (push) Has been cancelled
Test (Install) / python-extra (pydantic-ai, mirage.agents.pydantic_ai) (push) Has been cancelled
Test (Install) / python-extra (qdrant, mirage.resource.qdrant) (push) Has been cancelled
Test (Install) / python-extra (redis, mirage.resource.redis) (push) Has been cancelled
Test (Install) / python-extra (s3, mirage.resource.s3) (push) Has been cancelled
Test (Install) / python-extra (ssh, mirage.resource.ssh) (push) Has been cancelled
Test (Install) / ts-minimal (push) Has been cancelled
219 lines
7.5 KiB
Plaintext
219 lines
7.5 KiB
Plaintext
---
|
|
title: RAM
|
|
description: Use an in-memory Mirage filesystem for temporary files, tests, examples, and writable agent scratch space.
|
|
icon: memory
|
|
---
|
|
The RAM resource exposes an in-memory filesystem mounted at some prefix
|
|
such as `/data/`. All data lives in process memory and is lost on exit.
|
|
|
|
No setup or credentials required.
|
|
|
|
## Config
|
|
|
|
```python
|
|
from mirage import MountMode, Workspace
|
|
from mirage.resource.ram import RAMResource
|
|
|
|
resource = RAMResource()
|
|
ws = Workspace({"/data": resource}, mode=MountMode.WRITE)
|
|
```
|
|
|
|
No configuration object needed - `RAMResource()` takes no arguments.
|
|
|
|
## Filesystem Layout
|
|
|
|
The RAM filesystem starts empty. Files and directories are created
|
|
on demand via commands like `touch`, `mkdir`, `tee`, `cp`, etc.
|
|
|
|
```text
|
|
/data/
|
|
notes.txt
|
|
config.json
|
|
reports/
|
|
q1.csv
|
|
q2.csv
|
|
uploads/
|
|
image.png
|
|
```
|
|
|
|
Paths are normalized with a leading `/`. The root directory `/` always
|
|
exists.
|
|
|
|
## Cache
|
|
|
|
The RAM resource uses `IndexCacheStore` with `index_ttl = 0` (no
|
|
expiry). Since all data is in-memory, the index is always fresh,
|
|
no network calls or stale cache concerns.
|
|
|
|
## Example
|
|
|
|
```python
|
|
import asyncio
|
|
|
|
from mirage import MountMode, Workspace
|
|
from mirage.resource.ram import RAMResource
|
|
|
|
resource = RAMResource()
|
|
|
|
|
|
async def main() -> None:
|
|
ws = Workspace({"/data": resource}, mode=MountMode.WRITE)
|
|
|
|
# Create files
|
|
await ws.execute('echo "hello world" | tee /data/hello.txt')
|
|
await ws.execute('echo \'{"name": "alice", "age": 30}\' | tee /data/user.json')
|
|
await ws.execute("mkdir /data/reports")
|
|
await ws.execute('echo "revenue,100" | tee /data/reports/q1.csv')
|
|
|
|
# Read
|
|
r = await ws.execute("cat /data/hello.txt")
|
|
print(await r.stdout_str())
|
|
|
|
# List
|
|
r = await ws.execute("ls /data/")
|
|
print(await r.stdout_str())
|
|
|
|
# Query JSON
|
|
r = await ws.execute('jq ".name" /data/user.json')
|
|
print(await r.stdout_str())
|
|
|
|
# Search
|
|
r = await ws.execute("grep hello /data/hello.txt")
|
|
print(await r.stdout_str())
|
|
|
|
# Tree
|
|
r = await ws.execute("tree /data/")
|
|
print(await r.stdout_str())
|
|
|
|
# File info
|
|
r = await ws.execute("stat /data/hello.txt")
|
|
print(await r.stdout_str())
|
|
|
|
# Copy, move, remove
|
|
await ws.execute("cp /data/hello.txt /data/hello_copy.txt")
|
|
await ws.execute("mv /data/hello_copy.txt /data/renamed.txt")
|
|
await ws.execute("rm /data/renamed.txt")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|
|
```
|
|
|
|
## Shell Commands
|
|
|
|
The RAM resource supports the full set of shell commands since it
|
|
handles real file content (text, binary, JSON, CSV, etc.):
|
|
|
|
### Read Commands
|
|
|
|
| Command | Notes |
|
|
| --------------- | ------------------------------------------ |
|
|
| `cat` | Read file content |
|
|
| `head` / `tail` | First/last N lines |
|
|
| `grep` / `rg` | Pattern search (file or directory level) |
|
|
| `jq` | Query JSON fields |
|
|
| `wc` | Line/word/byte counts |
|
|
| `stat` | File metadata (name, size, type, modified) |
|
|
| `find` | Recursive search with `-name`, `-maxdepth` |
|
|
| `tree` | Directory tree view |
|
|
| `nl` | Number lines |
|
|
| `du` | Disk usage summary |
|
|
| `file` | Detect file type |
|
|
| `strings` | Extract printable strings from binary |
|
|
| `xxd` | Hex dump |
|
|
| `md5` | MD5 checksum |
|
|
| `sha256sum` | SHA-256 checksum |
|
|
|
|
### Text Processing
|
|
|
|
| Command | Notes |
|
|
| ---------- | ------------------------------------------- |
|
|
| `awk` | Pattern scanning and processing |
|
|
| `sed` | Stream editor |
|
|
| `tr` | Translate or delete characters |
|
|
| `sort` | Sort lines |
|
|
| `uniq` | Remove duplicate lines |
|
|
| `cut` | Extract fields/columns |
|
|
| `join` | Join lines on a common field |
|
|
| `paste` | Merge lines side by side |
|
|
| `column` | Columnate output |
|
|
| `fold` | Wrap lines to a specified width |
|
|
| `expand` | Convert tabs to spaces |
|
|
| `unexpand` | Convert spaces to tabs |
|
|
| `fmt` | Simple text formatter |
|
|
| `rev` | Reverse lines |
|
|
| `tac` | Concatenate and print in reverse |
|
|
| `look` | Display lines beginning with a given string |
|
|
| `shuf` | Shuffle lines |
|
|
| `tsort` | Topological sort |
|
|
| `comm` | Compare two sorted files |
|
|
| `cmp` | Compare two files byte by byte |
|
|
| `diff` | Compare files line by line |
|
|
| `patch` | Apply a diff patch |
|
|
| `iconv` | Character encoding conversion |
|
|
|
|
### File Operations
|
|
|
|
| Command | Notes |
|
|
| -------- | ------------------------------------- |
|
|
| `cp` | Copy files |
|
|
| `mv` | Move/rename files |
|
|
| `rm` | Remove files |
|
|
| `mkdir` | Create directories |
|
|
| `touch` | Create empty file or update timestamp |
|
|
| `ln` | Create symbolic links |
|
|
| `tee` | Write stdin to file and stdout |
|
|
| `mktemp` | Create temporary file |
|
|
| `split` | Split file into pieces |
|
|
| `csplit` | Split file by context |
|
|
|
|
### Path Utilities
|
|
|
|
| Command | Notes |
|
|
| ---------- | -------------------------- |
|
|
| `basename` | Strip directory from path |
|
|
| `dirname` | Strip filename from path |
|
|
| `realpath` | Resolve path |
|
|
| `readlink` | Print symbolic link target |
|
|
| `ls` | List directory contents |
|
|
|
|
### Compression
|
|
|
|
| Command | Notes |
|
|
| -------- | --------------------- |
|
|
| `gzip` | Compress files |
|
|
| `gunzip` | Decompress gzip files |
|
|
| `zip` | Create zip archives |
|
|
| `unzip` | Extract zip archives |
|
|
| `tar` | Archive files |
|
|
| `zcat` | Cat compressed files |
|
|
| `zgrep` | Grep compressed files |
|
|
|
|
### Encoding
|
|
|
|
| Command | Notes |
|
|
| -------- | -------------------- |
|
|
| `base64` | Base64 encode/decode |
|
|
|
|
### Data Format Support
|
|
|
|
Commands with format-specific variants for structured data files:
|
|
|
|
| Format | Extension | Variants |
|
|
| ------- | ---------- | ---------------------------------------------- |
|
|
| Parquet | `.parquet` | cat, head, tail, wc, stat, cut, grep, ls, file |
|
|
| Feather | `.feather` | cat, head, tail, wc, stat, cut, grep, ls, file |
|
|
| ORC | `.orc` | cat, head, tail, wc, stat, cut, grep, ls, file |
|
|
| HDF5 | `.hdf5` | cat, head, tail, wc, stat, cut, grep, ls, file |
|
|
|
|
These variants auto-detect the format by extension and convert to
|
|
tabular text (CSV) for processing.
|
|
|
|
## Use Cases
|
|
|
|
- **Testing**: Fast filesystem for unit tests without I/O
|
|
- **Staging**: Temporary data area during pipelines
|
|
- **Prototyping**: Develop against a filesystem before switching to S3/disk
|
|
- **Caching**: In-process data exchange between commands
|
|
- **Ephemeral workspaces**: Create, process, discard - no cleanup needed
|