strukto-ai/miragePublic

The World's First Virtual Terminal for AI Agents

AI summary: A unified virtual filesystem explicitly designed for AI agents to interact seamlessly with disparate data environments.

Stars
3.7K
+6 today
Forks
272
Watchers
9
Open issues
60
Open PRs
24
Contributors
~34
Commits
3.2K
Branches
32

TypeScriptApache-2.0Created May 6, 2026Last push 1d agoLatest release v0.0.6+21 stars this week+77 this month

Quick answers

What is mirage?
A unified virtual filesystem explicitly designed for AI agents to interact seamlessly with disparate data environments.
What does mirage do?
Mirage provides a highly unified virtual filesystem tailored specifically for AI agents, allowing them to interact seamlessly with various data sources exactly as if they were local files. It intelligently abstracts away the immense complexity of different storage backends, diverse APIs, and segmented cloud environments, presenting a standard POSIX-like interface to the agent. This unified approach entirely eliminates the need to build custom, brittle connectors for every new data source an agent needs to access. By heavily standardizing the critical interaction layer, Mirage significantly accelerates the development and overall reliability of data-heavy autonomous systems.
Who is mirage for?
Mirage is built for AI developers and system architects constructing complex agents that require broad, highly abstracted data access. It is best suited for engineering teams actively working in Python or TypeScript.
How do I get started with mirage?
pip install mirage-ai
How popular is mirage on GitHub?
strukto-ai/mirage has 3,675 stars and 272 forks on GitHub, and gained 21 stars in the last 7 days.
What license does mirage use?
strukto-ai/mirage is released under the Apache-2.0 license.

Star history

since Jul 29, 2026
01K2K3KJul 2026Aug 2026Sep 2026Oct 2026
3.7K stars as of Oct 3, 2026. Measured daily since Jul 29, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 4 commits2026-05-07: 25 commits2026-05-08: 19 commits2026-05-09: 32 commits2026-05-10: 4 commits2026-05-11: 8 commits2026-05-12: 9 commits2026-05-13: 3 commits2026-05-14: 4 commits2026-05-15: 5 commits2026-05-16: 1 commit2026-05-17: 6 commits2026-05-18: 1 commit2026-05-19: 4 commits2026-05-20: 0 commits2026-05-21: 7 commits2026-05-22: 1 commit2026-05-23: 1 commit2026-05-24: 4 commits2026-05-25: 7 commits2026-05-26: 3 commits2026-05-27: 6 commits2026-05-28: 6 commits2026-05-29: 3 commits2026-05-30: 2 commits2026-05-31: 11 commits2026-06-01: 5 commits2026-06-02: 1 commit2026-06-03: 2 commits2026-06-04: 13 commits2026-06-05: 18 commits2026-06-06: 11 commits2026-06-07: 19 commits2026-06-08: 32 commits2026-06-09: 79 commits2026-06-10: 89 commits2026-06-11: 48 commits2026-06-12: 13 commits2026-06-13: 26 commits2026-06-14: 14 commits2026-06-15: 37 commits2026-06-16: 17 commits2026-06-17: 17 commits2026-06-18: 3 commits2026-06-19: 23 commits2026-06-20: 5 commits2026-06-21: 11 commits2026-06-22: 6 commits2026-06-23: 19 commits2026-06-24: 15 commits2026-06-25: 12 commits2026-06-26: 4 commits2026-06-27: 10 commits2026-06-28: 24 commits2026-06-29: 14 commits2026-06-30: 8 commits2026-07-01: 2 commits2026-07-02: 17 commits2026-07-03: 5 commits2026-07-04: 1 commit2026-07-05: 2 commits2026-07-06: 0 commits2026-07-07: 8 commits2026-07-08: 9 commits2026-07-09: 10 commits2026-07-10: 24 commits2026-07-11: 9 commits2026-07-12: 11 commits2026-07-13: 17 commits2026-07-14: 18 commits2026-07-15: 6 commits2026-07-16: 11 commits2026-07-17: 18 commits2026-07-18: 17 commits2026-07-19: 14 commits2026-07-20: 14 commits2026-07-21: 12 commits2026-07-22: 8 commits2026-07-23: 8 commits2026-07-24: 6 commits2026-07-25: 7 commits2026-07-26: 5 commits2026-07-27: 2 commits2026-07-28: 4 commits2026-07-29: 2 commits2026-07-30: 7 commits2026-07-31: 9 commits2026-08-01: 6 commits2026-08-02: 12 commits2026-08-03: 11 commits2026-08-04: 6 commits2026-08-05: 5 commits2026-08-06: 3 commits2026-08-07: 8 commits2026-08-08: 13 commits2026-08-09: 17 commits2026-08-10: 15 commits2026-08-11: 21 commits2026-08-12: 21 commits2026-08-13: 23 commits2026-08-14: 23 commits2026-08-15: 50 commits2026-08-16: 50 commits2026-08-17: 17 commits2026-08-18: 33 commits2026-08-19: 13 commits2026-08-20: 12 commits2026-08-21: 18 commits2026-08-22: 15 commits2026-08-23: 26 commits2026-08-24: 24 commits2026-08-25: 16 commits2026-08-26: 11 commits2026-08-27: 48 commits2026-08-28: 45 commits2026-08-29: 3 commits2026-08-30: 41 commits2026-08-31: 27 commits2026-09-01: 28 commits2026-09-02: 19 commits2026-09-03: 18 commits2026-09-04: 26 commits2026-09-05: 46 commits2026-09-06: 26 commits2026-09-07: 30 commits2026-09-08: 36 commits2026-09-09: 55 commits2026-09-10: 57 commits2026-09-11: 28 commits2026-09-12: 13 commits2026-09-13: 7 commits2026-09-14: 29 commits2026-09-15: 72 commits2026-09-16: 32 commits2026-09-17: 12 commits2026-09-18: 8 commits2026-09-19: 19 commits2026-09-20: 19 commits2026-09-21: 29 commits2026-09-22: 33 commits2026-09-23: 58 commits2026-09-24: 97 commits2026-09-25: 61 commits2026-09-26: 26 commits2026-09-27: 0 commits2026-09-28: 0 commits2026-09-29: 0 commits2026-09-30: 0 commits2026-10-01: 0 commits2026-10-02: 0 commits2026-10-03: 0 commits
2,571 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Very active

    2,571 commits in 52 weeks

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

What mirage does

Mirage provides a highly unified virtual filesystem tailored specifically for AI agents, allowing them to interact seamlessly with various data sources exactly as if they were local files. It intelligently abstracts away the immense complexity of different storage backends, diverse APIs, and segmented cloud environments, presenting a standard POSIX-like interface to the agent. This unified approach entirely eliminates the need to build custom, brittle connectors for every new data source an agent needs to access. By heavily standardizing the critical interaction layer, Mirage significantly accelerates the development and overall reliability of data-heavy autonomous systems.

Mirage is built for AI developers and system architects constructing complex agents that require broad, highly abstracted data access. It is best suited for engineering teams actively working in Python or TypeScript.

  • Unified filesystem interface: Clearly presents diverse data sources to AI agents as a highly standard, easily navigable virtual filesystem.
  • Storage abstraction: Effectively hides the underlying complexities of interacting with various cloud providers, databases, and APIs.
  • POSIX-like interactions: Directly allows agents to use familiar commands and logic to confidently read, write, and manage data.
  • Multi-language support: Provides highly robust SDKs and comprehensive documentation for both Python and TypeScript environments.
  • Extensible architecture: Distinctly designed to easily support new storage backends and custom data connectors as strictly needed.

Where teams use it

Cross-cloud data access

AI agents can seamlessly read critical files from AWS S3 and write corresponding outputs to Google Cloud Storage using standard file operations.

Agentic data pipelines

Developers can reliably build data processing pipelines where agents interact with database records precisely as if they were local text files.

Simplified agent tooling

Engineering teams can entirely replace complex API interaction logic in their agents with simple, robust file read/write commands.

Secure sandboxing

Security teams can safely mount specific data subsets into the virtual filesystem to strictly restrict an agent's access scope.

Getting started: pip install mirage-ai

README

main branch

Status: preview
Python docs
TypeScript docs

README in English 简体中文 README 繁體中文 README README en Français README auf Deutsch README Tiếng Việt README 한국어

Mirage is a Virtual Terminal for AI Agents. The virtual filesystem delivers broad data context, virtualized CLIs give an agent more flexibility on tool use, dynamic runtimes save underlying infrastructure cost and are more token efficient, and fine-grained control over an agent's actions and even over what it can see gives the best security. Together these parts form one virtualized terminal, giving the best agent performance, cost efficiency and security.

Mirage architecture: agents and harness reach profiles and the Mirage shell, which resolve Unix-like commands, virtual CLIs and programming languages onto runtimes and the virtual filesystem, with authentication, the policy engine and notifications alongside

Here is an example of launching Mirage inside an application:

ws = Workspace(
    {
        "/tmp":   (RAMVFS(), MountMode.EXEC),
        "/redis": (RedisVFS(url=redis_url), MountMode.WRITE),
        "/slack": (SlackVFS(SlackConfig(token=slack_bot_token)), MountMode.EXEC),
    },
    # monty captures python, so scripts run sandboxed inside the workspace
    runtimes=[MontyRuntime(captures=["python", "python3"]), "workspace"],
)

# one grep sweeps every source
await ws.shell("grep -rln session /redis /tmp")

# run a script that lives in Slack, file the report into Redis
await ws.shell("python3 /slack/channels/general_.../files/example__F....py > /redis/report.txt")

# install a typed CLI under a head word: dispatched by name, not by path,
# and discoverable through `man`, `type` and `which` like any other program
ws.register_cli("slack", SLACK, {"token": slack_bot_token})
await ws.shell('slack send-message --channel general --text "report is up"')

About

  • Unified virtual terminal interface, not N SDKs and M MCPs. Every backend speaks the same filesystem semantics, so pipelines compose across services.
  • A virtual filesystem over every source. S3, Google Drive, Slack, Gmail, Redis and the rest mount side by side under one root, so an agent reaches all of them through a unified interface with the unix tools it already knows, like ls, grep, find and jq.
  • Virtual command line tools (CLIs). git, slack and ntn are answered by Mirage itself, so an agent drives the service with nothing installed, across different runtimes and machines, and one tool can be virtualized into two or more, each under its own name with its own credentials.
  • Routed, dynamic runtimes. Python, JavaScript and any other command can be sent to a configured runtime, in process, sandboxed or remote, which decouples computation from storage and lets either change without touching the other.
  • The virtualized Mirage shell. It binds the filesystem, the CLIs and the runtimes into one command line, so pipes, redirection, variables, jobs and history work across all three.
  • Profiles designed for agents. allow, ask and deny govern commands and CLIs, while hide and show govern files and folders, so a hidden path is not merely unreadable but absent from the filesystem the agent sees.
  • A scriptable policy engine. A policy script can prohibit any dangerous action before it runs, and the same stack gates every VFS op and session write, so neither a file nor an environment variable leaks.
  • Notifications wired into the VFS and agents. External changes become an event stream on the mount, so a new Slack reply surfaces as a change to the chat file in the virtual filesystem, and the agent reacts to it instead of rescanning the tree.

Virtual Filesystem

Everything Mirage "mounts" as one unified virtual filesystem for AI agents. Each service sits side-by-side under a single root and answers the same POSIX semantics.

VFS
Object Storage Amazon S3  Cloudflare R2  Google Cloud Storage  Oracle OCI  Supabase Storage  MinIO  Ceph  SeaweedFS  Wasabi  Backblaze B2  DigitalOcean Spaces  Alibaba Cloud OSS  Tencent Cloud COS  Scaleway  QingStor  Hugging Face Buckets  GridFS
Files and Documents Google Drive  Google Docs  Google Sheets  Google Slides  OneDrive  SharePoint  Box  Dropbox  Nextcloud
Messaging and Work Slack  Discord  Gmail  IMAP / SMTP email  GitHub  Linear  Notion  Trello  Google Calendar
Databases and Data Platforms PostgreSQL  MongoDB  Redis Upstash Redis  LanceDB  Qdrant  Chroma  Mem0  Hugging Face Datasets  Hugging Face Models  Hugging Face Spaces  Databricks Volumes  Dify
Observability Langfuse  Jaeger
Local and Remote RAM  Disk  OPFS  SSH

Agents reach it through the Python and TypeScript SDKs, the mirage CLI, or a real mountpoint over FUSE and FSKit, then work it with the unix tools they already know, like ls, grep, find and jq.

Virtual Command Line Tool

These command line tools are virtualized: Mirage answers git, slack or ntn itself, so an agent drives the service without that program being installed on the machine. Each one mimics the real tool, so an agent that knows the CLI needs nothing new. Because they are virtual, the same tool can be installed more than once under different names, each with its own credentials, so every agent gets exactly the accounts it is given.

CLIs
Code git  gh
Communication slack  discord  himalaya
Work and Data linear  ntn  gws  hf

Virtual Runtime

Runtimes are virtualized the same way, and not only for coding languages. Any command on the line can be redirected to a configured runtime, so Python might run in-process with Monty while another command, say kubectl, is sent to a remote machine over SSH. Which runtime serves a given line can be decided by a scripted runtime router.

Runtimes
Python Monty  WASI CPython on wasmtime  Pyodide  sandlock  Host CPython
JavaScript QuickJS, serving node and js JavaScript TypeScript
Sandboxes Docker  E2B  Daytona  smolVM  SSH

Security

A profile decides what a session may run and what it may see. Commands are governed by customizable allow, ask and deny rules, and paths by hide and show, so a hidden file is not merely unreadable but absent from the filesystem the agent sees. For anything those rules cannot express, a profile can name a policy script that runs at the gate on every command and answers allow, deny or ask itself, though like every rule it can only restrict and never grant. Separately, a host can register its own policies on the policy engine, an ordered stack the workspace consults on every command, VFS op and session write. See the permissions docs.

Authentication

Credentials and authentication integrate with the stores secrets already live in, including AWS Secrets Manager, 1Password, Auth0 and dotenv, so an environment variable in Mirage can resolve straight to a credential held in one of them.

Sources
Built in Environment dotenv AWS Secrets Manager
Custom 1Password Auth0

Installation

  • Python ≥ 3.11 for the mirage-ai package and the mirage CLI
  • Node.js ≥ 20 for the TypeScript SDK

Python

uv add mirage-ai    # installs the `mirage` library and the `mirage` CLI binary

TypeScript

npm install @struktoai/mirage-node      # Node.js servers and CLIs
npm install @struktoai/mirage-browser   # browser / edge runtimes
npm install @struktoai/mirage-agents    # OpenAI / Vercel AI / LangChain / Mastra adapters

Both runtime packages pull in @struktoai/mirage-core automatically.

CLI

curl -fsSL https://strukto.ai/mirage/install.sh | sh
# or
npm install -g @struktoai/mirage-cli
# or
uvx mirage-ai
# or
npx @struktoai/mirage-cli

Quickstart

Python

from mirage import Workspace
from mirage.vfs.ram import RAMVFS
from mirage.vfs.s3 import S3Config, S3VFS

ws = Workspace({
    "/data": RAMVFS(),
    "/s3":   S3VFS(S3Config(bucket="my-bucket")),
})

await ws.shell("cp /s3/report.csv /data/report.csv")
await ws.shell("grep alert /s3/data/log.jsonl | wc -l")

await ws.snapshot("demo.tar")

TypeScript

import { Workspace, RAMVFS, S3VFS } from '@struktoai/mirage-node'

const ws = new Workspace({
  '/data': new RAMVFS(),
  '/s3':   new S3VFS({ bucket: 'my-bucket' }),
})

await ws.shell('cp /s3/report.csv /data/report.csv')
await ws.shell('grep alert /s3/data/log.jsonl | wc -l')

await ws.snapshot('demo.tar')

CLI

mirage workspace create ws.yaml --id demo
mirage execute   --workspace_id demo --command "cp /s3/report.csv /data/report.csv"
mirage provision --workspace_id demo --command "cat /s3/data/large.jsonl"
mirage workspace snapshot demo demo.tar
mirage workspace load demo.tar --id demo-restored

Contributors

Thanks to everyone who has contributed to Mirage.

Mirage contributors
View on GitHub

Recent activity

commits and pull requests

Releases and announcements

6 total
  1. Mirage 0.0.6v0.0.6Sep 3, 2026

    We are excited to announce the release of Mirage 0.0.6 🎉🎉🎉 Mirage 0.0.6 is a permissions release. 0.0.5 gave an agent typed programs to act with; 0.0.6 decides what it may do with them. A permissions document replaces the old guard list: allow, ask and deny rules, one role per session, mounts that narrow rather than gate, hidden subtrees that stay hidden through a mutation, an approval door where an asked line reaches a person, and a decision ledger you can query and explain. A policy can now be a program, written in Python or JavaScript and judged at the command, op and session doors. Credentials move behind a secrets plane instead of sitting in a config block. Underneath, a long deduplication pass collapses the backends onto shared HTTP, object-store, hierarchy and render kits, the integration fakes become one TypeScript and Prisma kit that runs off a laptop, bash grows most of tiers 2 and 3, guests see one filesystem through a single stat struct, and Hugging Face Hub arrives as both a mount and a CLI. Python and TypeScript stay mirrored throughout. `pip install mirage-ai==0.0.6` · `npm install @struktoai/mirage-core@0.0.6` (and `-node`, `-browser`, `-server`, `-cli`, `-agen

  2. Mirage 0.0.5v0.0.5Aug 15, 2026

    We are excited to announce the release of Mirage 0.0.5 🎉🎉🎉 Mirage 0.0.5 is a control-surface release. An agent no longer only reads a workspace, it acts on one through typed programs: a CLI tier turns `git`, `gh`, `slack`, `ntn`, `himalaya`, `gws`, `linear`, `discord` and anything you author into installed head words dispatched by name, and a policy layer sits at every door those programs pass through. Underneath, the workspace grows one door per state plane, the runtimes collapse onto a single mount-op vocabulary, background commands stream through a job console instead of arriving whole, and a new `@struktoai/mirage-dsh` package puts a mirage workspace under DeepSeek Harness as its filesystem and shell. Alongside that, a long conformance sweep pins commands, flags and error text against GNU and the real upstream CLIs. Python and TypeScript stay mirrored throughout, now with a layout parity gate that fails when they drift. `pip install mirage-ai==0.0.5` · `npm install @struktoai/mirage-core@0.0.5` (and `-node`, `-browser`, `-server`, `-cli`, `-agents`) New in this release: `npm install @struktoai/mirage-dsh@0.0.1`, the DeepSeek Harness adapter, on its own version line. ## H

  3. Mirage 0.0.4v0.0.4Jul 23, 2026

    We are excited to announce the release of Mirage 0.0.4 🎉🎉🎉 Mirage 0.0.4 is an architecture and depth release. Path addressing becomes a real namespace layer with first-class symlinks and attribute overlays that survive restarts; the control plane moves onto pluggable state stores (RAM, disk, Redis, S3) with CAS-guarded writes; the shell grows GNU-grade bash semantics (arithmetic, control flow, brace expansion, `printf`, `getopts`, parameter expansion); commands can be run by pluggable runtimes that read and write workspace mounts; and eight new or rebuilt backends land. Python is mypy-clean and TypeScript is tsc-clean, both enforced as CI gates. Python and TypeScript are kept mirrored throughout. `pip install mirage-ai==0.0.4` · `npm install @struktoai/mirage-core@0.0.4` (and `-node`, `-browser`, `-server`, `-cli`, `-agents`) ## Highlights - **The namespace is a real addressing layer.** A `Namespace` facade consolidates mount resolution, symlink following, and attribute overlays behind one surface, and the Workspace routes dispatch, `apply_io`, and post-write invalidation through it instead of holding a dispatcher directly (#420, #424, #426). Symlinks are first-class namespa

  4. Mirage 0.0.3v0.0.3Jun 30, 2026

    We are excited to announce the release of Mirage 0.0.3 🎉🎉🎉 Mirage 0.0.3 is a large parity and platform release. It lands a GNU-aligned shell environment (`history`, `cwd`/env, subshell isolation), a unified command factory shared across every backend, cache read-through with warm serving, the Claude Agent SDK integration, and four new/upgraded backends (SharePoint, Qdrant, OneDrive parity, MongoDB on PyMongo Async). Python and TypeScript are kept mirrored throughout. `pip install mirage-ai==0.0.3` · `npm install @struktoai/mirage-core@0.0.3` (and `-node`, `-browser`, `-server`, `-cli`, `-agents`) ## Highlights - **GNU `history` subsystem (Python + TypeScript).** A hidden `Observer` records every top-level command as timestamp-ordered events; `/.bash_history` is a read-only view in GNU histfile format and the `history` shell builtin (`-c -d -a -n -r -w -s -p` + count) routes through the same mount, so the file and the builtin never disagree. History is captured into snapshots and restored on load. (#313) - **Claude Agent SDK integration.** `MirageServer` + `build_options` wire a Mirage workspace into the Claude Agent SDK as a tool surface, mirrored in both languages with Pyth

  5. v0.0.2v0.0.2Jun 15, 2026

    Release v0.0.2. TypeScript (npm, @struktoai/*) at 0.0.2: - mirage-core, mirage-node, mirage-browser, mirage-server, mirage-agents, mirage-cli Python (PyPI, mirage-ai) at 0.0.3a0 (alpha). Notable: the CLI now reports its real package version instead of a hardcoded 0.0.0.

Code frequency

additions and deletions
+553.7K-553.7KWeek of 2026-05-03: +553,722 linesWeek of 2026-05-03: -33,059 linesWeek of 2026-05-10: +14,522 linesWeek of 2026-05-10: -3,783 linesWeek of 2026-05-17: +58,388 linesWeek of 2026-05-17: -48,038 linesWeek of 2026-05-24: +55,631 linesWeek of 2026-05-24: -45,008 linesWeek of 2026-05-31: +26,072 linesWeek of 2026-05-31: -15,594 linesWeek of 2026-06-07: +82,832 linesWeek of 2026-06-07: -83,652 linesWeek of 2026-06-14: +27,487 linesWeek of 2026-06-14: -7,385 linesWeek of 2026-06-21: +26,078 linesWeek of 2026-06-21: -64,150 linesWeek of 2026-06-28: +29,099 linesWeek of 2026-06-28: -41,962 linesWeek of 2026-07-05: +30,374 linesWeek of 2026-07-05: -11,780 linesWeek of 2026-07-12: +130,749 linesWeek of 2026-07-12: -58,434 linesWeek of 2026-07-19: +204,864 linesWeek of 2026-07-19: -75,906 linesWeek of 2026-07-26: +124,090 linesWeek of 2026-07-26: -41,087 linesWeek of 2026-08-02: +147,234 linesWeek of 2026-08-02: -52,560 linesWeek of 2026-08-09: +178,421 linesWeek of 2026-08-09: -87,008 linesWeek of 2026-08-16: +202,750 linesWeek of 2026-08-16: -110,037 linesWeek of 2026-08-23: +117,282 linesWeek of 2026-08-23: -49,136 linesWeek of 2026-08-30: +116,194 linesWeek of 2026-08-30: -37,682 linesWeek of 2026-09-06: +103,687 linesWeek of 2026-09-06: -27,197 linesWeek of 2026-09-13: +234,403 linesWeek of 2026-09-13: -134,307 linesWeek of 2026-09-20: +250,039 linesWeek of 2026-09-20: -46,875 linesWeek of 2026-09-27: +0 linesWeek of 2026-09-27: -0 linesMay 3, 2026Sep 27, 2026
+2.7M lines added, -1.1M removed over the last year.

Commits per week

last 52 weeks
3230Week of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 80 commitsWeek of 2026-05-10: 34 commitsWeek of 2026-05-17: 20 commitsWeek of 2026-05-24: 31 commitsWeek of 2026-05-31: 61 commitsWeek of 2026-06-07: 306 commitsWeek of 2026-06-14: 116 commitsWeek of 2026-06-21: 77 commitsWeek of 2026-06-28: 71 commitsWeek of 2026-07-05: 62 commitsWeek of 2026-07-12: 98 commitsWeek of 2026-07-19: 69 commitsWeek of 2026-07-26: 35 commitsWeek of 2026-08-02: 58 commitsWeek of 2026-08-09: 170 commitsWeek of 2026-08-16: 158 commitsWeek of 2026-08-23: 173 commitsWeek of 2026-08-30: 205 commitsWeek of 2026-09-06: 245 commitsWeek of 2026-09-13: 179 commitsWeek of 2026-09-20: 323 commitsWeek of 2026-09-27: 0 commitsOct 5, 2025Sep 27, 2026
2.6K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 20 commitsSun 1:00 — 13 commitsSun 2:00 — 17 commitsSun 3:00 — 13 commitsSun 4:00 — 23 commitsSun 5:00 — 16 commitsSun 6:00 — 17 commitsSun 7:00 — 8 commitsSun 8:00 — 8 commitsSun 9:00 — 6 commitsSun 10:00 — 8 commitsSun 11:00 — 9 commitsSun 12:00 — 10 commitsSun 13:00 — 10 commitsSun 14:00 — 8 commitsSun 15:00 — 8 commitsSun 16:00 — 19 commitsSun 17:00 — 11 commitsSun 18:00 — 11 commitsSun 19:00 — 8 commitsSun 20:00 — 13 commitsSun 21:00 — 24 commitsSun 22:00 — 28 commitsSun 23:00 — 15 commitsMon 0:00 — 18 commitsMon 1:00 — 20 commitsMon 2:00 — 14 commitsMon 3:00 — 14 commitsMon 4:00 — 16 commitsMon 5:00 — 9 commitsMon 6:00 — 7 commitsMon 7:00 — 1 commitsMon 8:00 — 0 commitsMon 9:00 — 5 commitsMon 10:00 — 5 commitsMon 11:00 — 5 commitsMon 12:00 — 7 commitsMon 13:00 — 13 commitsMon 14:00 — 12 commitsMon 15:00 — 21 commitsMon 16:00 — 34 commitsMon 17:00 — 21 commitsMon 18:00 — 18 commitsMon 19:00 — 14 commitsMon 20:00 — 18 commitsMon 21:00 — 26 commitsMon 22:00 — 19 commitsMon 23:00 — 8 commitsTue 0:00 — 15 commitsTue 1:00 — 30 commitsTue 2:00 — 11 commitsTue 3:00 — 16 commitsTue 4:00 — 11 commitsTue 5:00 — 16 commitsTue 6:00 — 12 commitsTue 7:00 — 8 commitsTue 8:00 — 1 commitsTue 9:00 — 9 commitsTue 10:00 — 12 commitsTue 11:00 — 5 commitsTue 12:00 — 18 commitsTue 13:00 — 10 commitsTue 14:00 — 20 commitsTue 15:00 — 36 commitsTue 16:00 — 32 commitsTue 17:00 — 33 commitsTue 18:00 — 15 commitsTue 19:00 — 17 commitsTue 20:00 — 15 commitsTue 21:00 — 28 commitsTue 22:00 — 35 commitsTue 23:00 — 22 commitsWed 0:00 — 18 commitsWed 1:00 — 12 commitsWed 2:00 — 15 commitsWed 3:00 — 46 commitsWed 4:00 — 22 commitsWed 5:00 — 13 commitsWed 6:00 — 6 commitsWed 7:00 — 5 commitsWed 8:00 — 0 commitsWed 9:00 — 9 commitsWed 10:00 — 7 commitsWed 11:00 — 4 commitsWed 12:00 — 3 commitsWed 13:00 — 11 commitsWed 14:00 — 15 commitsWed 15:00 — 25 commitsWed 16:00 — 28 commitsWed 17:00 — 16 commitsWed 18:00 — 32 commitsWed 19:00 — 24 commitsWed 20:00 — 24 commitsWed 21:00 — 20 commitsWed 22:00 — 17 commitsWed 23:00 — 5 commitsThu 0:00 — 15 commitsThu 1:00 — 12 commitsThu 2:00 — 11 commitsThu 3:00 — 13 commitsThu 4:00 — 23 commitsThu 5:00 — 20 commitsThu 6:00 — 16 commitsThu 7:00 — 14 commitsThu 8:00 — 16 commitsThu 9:00 — 16 commitsThu 10:00 — 8 commitsThu 11:00 — 20 commitsThu 12:00 — 14 commitsThu 13:00 — 12 commitsThu 14:00 — 11 commitsThu 15:00 — 13 commitsThu 16:00 — 22 commitsThu 17:00 — 35 commitsThu 18:00 — 28 commitsThu 19:00 — 17 commitsThu 20:00 — 18 commitsThu 21:00 — 27 commitsThu 22:00 — 32 commitsThu 23:00 — 28 commitsFri 0:00 — 23 commitsFri 1:00 — 24 commitsFri 2:00 — 34 commitsFri 3:00 — 18 commitsFri 4:00 — 32 commitsFri 5:00 — 16 commitsFri 6:00 — 11 commitsFri 7:00 — 3 commitsFri 8:00 — 14 commitsFri 9:00 — 6 commitsFri 10:00 — 11 commitsFri 11:00 — 12 commitsFri 12:00 — 16 commitsFri 13:00 — 20 commitsFri 14:00 — 18 commitsFri 15:00 — 15 commitsFri 16:00 — 14 commitsFri 17:00 — 16 commitsFri 18:00 — 9 commitsFri 19:00 — 10 commitsFri 20:00 — 4 commitsFri 21:00 — 15 commitsFri 22:00 — 10 commitsFri 23:00 — 14 commitsSat 0:00 — 12 commitsSat 1:00 — 17 commitsSat 2:00 — 14 commitsSat 3:00 — 21 commitsSat 4:00 — 18 commitsSat 5:00 — 12 commitsSat 6:00 — 6 commitsSat 7:00 — 6 commitsSat 8:00 — 3 commitsSat 9:00 — 5 commitsSat 10:00 — 7 commitsSat 11:00 — 11 commitsSat 12:00 — 6 commitsSat 13:00 — 6 commitsSat 14:00 — 13 commitsSat 15:00 — 16 commitsSat 16:00 — 24 commitsSat 17:00 — 15 commitsSat 18:00 — 10 commitsSat 19:00 — 12 commitsSat 20:00 — 15 commitsSat 21:00 — 15 commitsSat 22:00 — 26 commitsSat 23:00 — 23 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
May 7, 2026daily#13+66
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    456.7K stars · TypeScript

  • openclaw/openclaw

    The AI that really does things. Any OS. Any Platform. The lobster way. 🦞

    391.3K stars · TypeScript

  • donnemartin/system-design-primer

    Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

    373.2K stars · Python

  • practical-tutorials/project-based-learning

    Curated list of project-based tutorials

    285.8K stars · Python

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    272.8K stars · JavaScript

  • NousResearch/hermes-agent

    The agent that grows with you

    251.2K stars · Python