Featured: TouchFS Explained and over-hyped by Google's NotebookLM

TouchFS πŸ‘‡ - The Swiss Army Knife of Synthetic Data Generation πŸ”§

The Touch Screen of File Systems ✨

Just as touch screens revolutionized user interfaces by making buttons context-aware within apps, TouchFS brings that same revolution to the filesystem level. While the native touch command integration is just one plugin in TouchFS's extensible system, it demonstrates the power of context-aware file generation - touch a file, and watch as it materializes with perfect context awareness! πŸͺ„ Whether you need test data, training sets, or synthetic content, TouchFS's plugin system means any event can spark the creation of anything imaginable! This fundamental pattern is now published, unpatentable, and freely available under the MIT license.

Quick Start

pip install touchfs

# Set up your OpenAI API key
export OPENAI_API_KEY="your-api-key-here"

View this project on GitHub

The Power of Touch ⚑

# Mount your magical filesystem
touchfs mount workspace -F "Create a modern web application"

# Want docs? Just touch them! πŸ“š
touch workspace/README.md      # After generation, edit this to precisely reflect your intentions
touch workspace/docs/api.md    # Edit generated docs to match your specific requirements

# Need code? Touch brings it to life! πŸ’» (Generated code will align with your edited docs)
touch workspace/src/app.py
touch workspace/tests/test_app.py

Magical Examples 🎩

Time Travel to Windows 3.11 πŸ•°οΈ

# Create a nostalgic DOS environment
touchfs mount workspace -F "Create a Windows 3.11 style system"

touch workspace/AUTOEXEC.BAT    # Classic startup configuration
touch workspace/CONFIG.SYS      # System configuration
touch workspace/WIN.INI         # Windows initialization
touch workspace/SYSTEM.INI      # System settings

Modern Async API Project πŸš€

# Launch a modern backend project
touchfs mount workspace \
  -F "Create a FastAPI project with async endpoints" \
  -p "Write clean, modern Python with type hints"

touch workspace/app.py          # FastAPI application
touch workspace/models/user.py  # Pydantic models
touch workspace/routers/auth.py # Auth endpoints
touch workspace/tests/test_api.py

AI Blog with Images 🎨

# Create an AI-powered blog
touchfs mount workspace \
  -F "Create a markdown blog about AI" \
  -p "Write engaging tech content with DALL-E images"

touch workspace/posts/future-of-ai.md      # Blog post
touch workspace/images/ai-future.jpg       # DALL-E generates futuristic image
touch workspace/templates/blog-layout.html  # Blog template

Synthetic Data Generation πŸ“Š

Zero-Shot: E-commerce Data

# Mount filesystem for e-commerce data generation
touchfs mount workspace \
  -F "Create an e-commerce dataset" \
  -p "Generate realistic product and user data"

# Generate data without examples
touch workspace/products.json    # Infers structure from scratch
touch workspace/users.json       # Learns from common patterns

One-Shot: IoT Sensor Data

# Mount filesystem for IoT data generation
touchfs mount workspace \
  -F "Create IoT sensor readings" \
  -p "Generate realistic temperature data"

# Add one example temperature reading
echo '{
  "timestamp": "2024-01-01T00:00:00Z",
  "sensor_id": "TEMP001",
  "value": 22.5,
  "unit": "celsius",
  "battery": 98
}' > workspace/example.json

# Generate more readings following the pattern
touch workspace/sensor_1.json  # Follows example format
touch workspace/sensor_2.json  # Maintains consistency

Few-Shot: Medical Records

# Mount filesystem for medical records
touchfs mount workspace \
  -F "Create anonymized medical records" \
  -p "Generate HIPAA-compliant patient data"

# Add a few example records
echo 'patient_id,age,gender,condition
P001,45,F,hypertension
P002,62,M,diabetes' > workspace/patients_example.csv

echo 'patient_id,medication,dosage,frequency
P001,lisinopril,10mg,daily
P002,metformin,500mg,twice daily' > workspace/medications_example.csv

# Generate more records following patterns
touch workspace/new_patients.csv     # Learns from examples
touch workspace/new_medications.csv  # Maintains relationships

Many-Shot: Financial Transactions

# Mount filesystem for financial data
touchfs mount workspace \
  -F "Create financial transaction data" \
  -p "Generate realistic spending patterns"

# Import historical transaction dataset
echo '[
  {"date": "2024-01-01", "amount": 42.50, "category": "groceries"},
  {"date": "2024-01-01", "amount": 4.00, "category": "coffee"},
  {"date": "2024-01-02", "amount": 35.00, "category": "transport"},
  {"date": "2024-01-02", "amount": 12.99, "category": "subscription"}
]' > workspace/january.json

# Generate new transactions with learned patterns
touch workspace/february.json  # Follows spending patterns
touch workspace/march.json     # Maintains categories
touch workspace/anomalies.json # Flags unusual transactions

Library-Guided Development πŸ“š

FastAPI Project with SQLAlchemy

# Mount filesystem for FastAPI development
touchfs mount workspace \
  -F "Create a FastAPI CRUD API with SQLAlchemy" \
  -p "Follow FastAPI and SQLAlchemy best practices"

# Add framework documentation (after generation, edit docs to match your specific requirements)
curl https://fastapi.tiangolo.com/tutorial/sql-databases/ > workspace/fastapi_guide.md
curl https://docs.sqlalchemy.org/en/20/orm/quickstart.html > workspace/sqlalchemy_guide.md

# Generate code using your customized documentation context
touch workspace/models.py      # SQLAlchemy models following docs
touch workspace/database.py    # DB setup using recommended patterns
touch workspace/crud.py        # CRUD operations following examples
touch workspace/main.py        # FastAPI app with proper structure

React Component Library

# Mount filesystem for React development
touchfs mount workspace \
  -F "Create a React component library" \
  -p "Follow Material-UI patterns with Storybook docs"

# Add UI library documentation (after generation, edit docs to match your specific requirements)
curl https://mui.com/components/buttons/ > workspace/mui_guide.md
curl https://storybook.js.org/docs/react/writing-stories/introduction > workspace/storybook_guide.md

# Generate components using your customized documentation context
touch workspace/Button.tsx         # Component following MUI patterns
touch workspace/Button.test.tsx    # Tests using MUI testing guides
touch workspace/Button.stories.tsx # Storybook following examples

GraphQL API with Apollo

# Mount filesystem for GraphQL development
touchfs mount workspace \
  -F "Create a GraphQL API with Apollo" \
  -p "Follow Apollo best practices"

# Add Apollo documentation (after generation, edit docs to match your specific requirements)
curl https://www.apollographql.com/docs/apollo-server/getting-started/ > workspace/apollo_server.md
curl https://www.apollographql.com/docs/react/get-started/ > workspace/apollo_client.md

# Generate GraphQL project using your customized documentation context
touch workspace/schema.graphql  # Schema following conventions
touch workspace/resolvers.ts    # Resolvers using Apollo patterns
touch workspace/client.ts       # Client setup with proper caching

Technical Implementation

While this implementation uses command interception, the core concept is UI-agnostic. Just as a touch screen can present context-aware buttons in an app, a filesystem can present context-aware files. The current CLI implementation:

  1. Intercepts the touch command (this could just as well be a touch screen interface where filenames are selected or entered)
  2. Interprets the target paths (whether from CLI arguments or UI selection)
  3. Flags the targeted files with an extended attribute generate_content=True

The beauty of this pattern is that it's not tied to any specific interface. The same context-aware generation could be triggered through:

How It Works

The order in which you create files affects their generated content. Each unique context (including generation order) produces different content, which is automatically cached. For best results, it's recommended to create your README.md first to establish the project's high-level goals and structure, then proceed with implementation files that will align with those intentions:

# Mount with a project prompt (uses GPT to understand and generate text content)
touchfs mount workspace --prompt "Create a web scraping tool"

# When done, unmount the filesystem
touchfs mount -u workspace

# Scenario 1: README first, then app
touch workspace/README.md
touch workspace/app.py

# Result:
# β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
# β”‚   README.md     β”‚          β”‚     app.py      β”‚
# β”‚ (Generated 1st) │──────────│  (Generated 2nd) β”‚
# β”‚                 β”‚          β”‚                  β”‚
# β”‚ Web Scraper     β”‚          β”‚ import requests  β”‚
# β”‚ ============    β”‚  shapes  β”‚                  β”‚
# β”‚ A Python tool   │───app────│ def scrape():   β”‚
# β”‚ for scraping    β”‚  design  β”‚   # Implement   β”‚
# β”‚ websites...     β”‚          β”‚   # scraping    β”‚
# β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
#                    [Cache A]

# Scenario 2: app first, then README
rm workspace/README.md workspace/app.py  # Clear previous files
touch workspace/app.py
touch workspace/README.md

# Result:
# β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
# β”‚     app.py      β”‚          β”‚   README.md     β”‚
# β”‚ (Generated 1st) │──────────│  (Generated 2nd) β”‚
# β”‚                 β”‚          β”‚                  β”‚
# β”‚ from bs4 import β”‚  guides  β”‚ Web Scraper     β”‚
# β”‚ BeautifulSoup  │───doc────│ ============    β”‚
# β”‚                 β”‚  style   β”‚ Uses Beautiful  β”‚
# β”‚ class Scraper:  β”‚          β”‚ Soup for HTML   β”‚
# β”‚   def parse():  β”‚          β”‚ parsing...      β”‚
# β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
#                    [Cache B]

Sequential Generation

Generate entire project structures with context awareness:

# Create a list of files for GPT to generate in sequence
cat > workspace/files.txt << EOF
src/models.py
src/database.py
src/api.py
tests/test_models.py
tests/test_api.py
README.md
EOF

# Create necessary directories
mkdir -p workspace/src workspace/tests

# Generate files in sequence
while read -r file; do
  touch "workspace/$file"
done < workspace/files.txt

# Result (GPT generates each file in order, using previous files as context):
# β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
# β”‚ models.py   β”‚ 1st: Defines core data models
# β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
#       β”‚
#       β–Ό
# β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
# β”‚database.py  β”‚ 2nd: Uses models to create DB schema
# β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
#       β”‚
#       β–Ό
# β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
# β”‚   api.py    β”‚ 3rd: Implements API using models & DB
# β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
#       β”‚
#       β–Ό
# β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
# β”‚test_models  β”‚ 4th: Tests based on actual model impl
# β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
#       β”‚
#       β–Ό
# β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
# β”‚ test_api    β”‚ 5th: API tests using real models & DB
# β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
#       β”‚
#       β–Ό
# β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
# β”‚  README.md  β”‚ 6th: Docs based on full implementation
# β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

This approach lets you define complex generation sequences in a simple text file. Each file is generated with awareness of all previously generated files, creating a cohesive codebase where later files naturally build upon earlier ones.

Image Generation

For image files, TouchFS uses DALL-E 3 to generate content based on context from surrounding files:

# Mount an art project filesystem
touchfs mount workspace --prompt "Create concept art for a sci-fi game"

# When finished, unmount the filesystem
touchfs mount -u workspace

# Generate images in sequence
touch workspace/character.jpg     # DALL-E 3 generates based on filename and project context
touch workspace/background.jpg    # Uses context from character.jpg to maintain visual style
touch workspace/character_in_background.jpg  # Combines context from both previous images

Each image is generated with awareness of previously generated images and surrounding files, with DALL-E 3 using this rich context to maintain consistent style, theme, and visual coherence across the project. This context-aware generation ensures that each new image naturally fits within the established visual language of the project.

In Scenario 1 above, the README is generated first, establishing high-level concepts that influence the app's implementation. In Scenario 2, the app is generated first, making concrete implementation choices that the README then documents. Each scenario's unique context (including generation order) is part of the cache key, ensuring consistent results when repeating the same sequence.

Overlay Mount Mode

TouchFS can be mounted in overlay mode, where it acts as a writable layer on top of an existing directory:

# Mount TouchFS in overlay mode on top of an existing project
touchfs mount workspace --overlay ~/existing-project

# The mount point now shows:
# 1. All files from ~/existing-project (read-only)
# 2. Any new files you create (writable TouchFS layer)
# 3. Both layers merged into a single view

# Example: Generate new test files alongside existing code
ls ~/existing-project
# src/
#   app.py
#   models.py

touch workspace/tests/test_app.py
touch workspace/tests/test_models.py

# Result:
# β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
# β”‚ Existing Files  β”‚          β”‚  TouchFS Layer  β”‚
# β”‚  (Read-only)    β”‚          β”‚   (Writable)    β”‚
# β”‚                 β”‚          β”‚                 β”‚
# β”‚ src/           β”‚          β”‚ tests/          β”‚
# β”‚  β”œβ”€β”€ app.py    β”‚  guides  β”‚  β”œβ”€β”€ test_app.pyβ”‚
# β”‚  └── models.py │───tests──│  └── test_modelsβ”‚
# β”‚                 β”‚          β”‚                 β”‚
# β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
#          Merged view in workspace
#                shows both layers

# When done, unmount as usual
touchfs mount -u workspace

The overlay mode is useful for:

All generated content remains context-aware, taking into account both the existing files (read-only layer) and any new files you create (TouchFS layer).

Installation

pip install touchfs

# Set up your OpenAI API key
export OPENAI_API_KEY="your-api-key-here"

Prerequisites

TouchFS has the following prerequisites for installation and operation:

Platform Support & libfuse

TouchFS currently only supports Linux systems. While macOS support might be possible with macFUSE in the future, this integration has not been implemented yet.

Required dependencies:

CLI Commands

Mount Command

The touchfs mount command mounts a TouchFS filesystem at a specified directory:

# Basic mount with empty filesystem
touchfs mount workspace

# Mount with default content generation prompt
# This affects what content is generated when files are touched
touchfs mount workspace -p "Create a modern web application"

# Mount with filesystem generation prompt
# This generates an initial filesystem structure before mounting
touchfs mount workspace -F "Create a project structure for a FastAPI backend with tests"

# Mount with both prompts
# First generates structure, then uses content prompt for new files
touchfs mount workspace \
  -F "Create a React frontend project structure" \
  -p "Write modern React components with TypeScript"

# Mount in foreground mode with debug output
touchfs mount workspace -f

# Mount with overlay on existing directory
touchfs mount workspace --overlay ./existing-project

# List currently mounted TouchFS filesystems
touchfs mount

Key options:

Umount Command

The touchfs umount command unmounts a TouchFS filesystem:

# Basic unmount
touchfs umount workspace

# Force unmount if busy
touchfs umount workspace --force

This is equivalent to touchfs mount -u but provides a more familiar command name for Unix users.

Generate Command

The touchfs generate command generates content for files using the same content generation functionality as TouchFS mount points:

# Generate content for a single file
touchfs generate file.txt

# Create parent directories if needed
touchfs generate path/to/new/file.txt -p

# Generate content for multiple files at once
touchfs generate file1.txt file2.py README.md

# Skip confirmation prompt
touchfs generate file.txt --force

Unlike the touch command which only marks files for generation, this command directly generates and writes the content using TouchFS's content generation functionality. This is particularly useful for:

Touch Command

The touchfs touch command provides an explicit way to mark files for content generation, equivalent to using touch within a TouchFS filesystem:

# Mark a single file for generation
touchfs touch file.txt

# Create parent directories if needed
touchfs touch path/to/new/file.txt -p

# Mark multiple files at once
touchfs touch file1.txt file2.py README.md

# Skip confirmation for non-touchfs paths
touchfs touch file.txt --force

This command sets the generate_content xattr that TouchFS uses to identify files that should have their content generated. Within a TouchFS filesystem, this is automatically set by the touch command - this CLI provides an explicit way to set the same marker.

Context Command

The touchfs context command generates MCP-compliant context from files for LLM content generation:

# Generate context from current directory
touchfs context

# Generate context from specific directory
touchfs context /path/to/directory

# Limit token count
touchfs context --max-tokens 4000

# Exclude specific patterns
touchfs context --exclude "*.pyc" --exclude "node_modules/*"

# Enable debug output
touchfs context --debug-stdout

The command generates a JSON structure containing:

This is useful for:

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License. The context-aware file generation pattern described here is now published prior art and cannot be patented. Like the touch screen revolution before it, this fundamental pattern is now free for everyone to use, share, and build upon.

Documentation