Claude-skill-registry-data manyfold

Self-hosted 3D model library manager for organizing, viewing, and managing 3D print files. Use when the user asks about deploying, configuring, or using Manyfold for managing STL/OBJ/3MF collections. Triggers on phrases like "Manyfold", "3D model library", "manage my 3D prints", "self-hosted model manager", "organize STL files", "3D print collection", or any Docker/homelab deployment involving 3D model organization.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry-data
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry-data "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/manyfold" ~/.claude/skills/majiayu000-claude-skill-registry-data-manyfold && rm -rf "$T"
manifest: data/manyfold/SKILL.md
source content

Manyfold Skill

Manyfold is a self-hosted web application for managing 3D print file collections with interactive previews, metadata organization, and Fediverse federation support.

Quick Reference

Docker Image:

ghcr.io/manyfold3d/manyfold:latest
Default Port: 3214 Web UI:
http://{server}:3214

Deployment Options

Minimal (Solo with SQLite)

services:
  manyfold:
    image: ghcr.io/manyfold3d/manyfold-solo:latest
    ports:
      - "3214:3214"
    volumes:
      - /path/to/config:/config
      - /path/to/models:/libraries
    environment:
      SECRET_KEY_BASE: <generate-128-char-hex>
      PUID: 1000
      PGID: 1000
    restart: unless-stopped

Production (PostgreSQL + Redis)

services:
  manyfold:
    image: ghcr.io/manyfold3d/manyfold:latest
    ports:
      - "3214:3214"
    volumes:
      - /path/to/models:/libraries
    environment:
      DATABASE_URL: postgresql://manyfold:password@db/manyfold?pool=5
      REDIS_URL: redis://redis:6379/1
      SECRET_KEY_BASE: <generate-128-char-hex>
      PUID: 1000
      PGID: 1000
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - DAC_OVERRIDE
      - SETUID
      - SETGID
    depends_on:
      - db
      - redis

  db:
    image: postgres:15
    volumes:
      - db_data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: manyfold
      POSTGRES_PASSWORD: password
      POSTGRES_DB: manyfold

  redis:
    image: redis:7

volumes:
  db_data:

Required Environment Variables

VariableDescription
SECRET_KEY_BASE
128-char hex string for cookie signing. Generate with
openssl rand -hex 64
PUID
/
PGID
User/group ID for file permissions. Get with
id
command
REDIS_URL
Redis connection (not needed for solo image). Format:
redis://host:6379/1

Database Configuration

Option 1: DATABASE_URL (recommended)

  • PostgreSQL:
    postgresql://user:pass@host/dbname?pool=5
  • MySQL:
    mysql2://user:pass@host/dbname?pool=5
  • SQLite:
    sqlite3:/config/manyfold.sqlite3?pool=5

Option 2: Individual variables

  • DATABASE_ADAPTER
    : postgresql, mysql2, or sqlite3
  • DATABASE_HOST
    ,
    DATABASE_PORT
    ,
    DATABASE_USER
    ,
    DATABASE_PASSWORD
    ,
    DATABASE_NAME

Key Optional Features

VariableDescription
MULTIUSER=enabled
Enable login, roles, permissions
FEDERATION=enabled
ActivityPub/Fediverse support
HTTPS_ONLY=enabled
Force HTTPS, set HSTS headers
DEMO_MODE=enabled
Disable all destructive operations

OIDC Single Sign-On

OIDC_CLIENT_ID=<client-id>
OIDC_CLIENT_SECRET=<secret>
OIDC_ISSUER=https://auth.example.com/
OIDC_NAME=Authentik
FORCE_OIDC=enabled  # Optional: disable local login

Email (SMTP)

SMTP_SERVER=smtp.example.com
SMTP_PORT=587
SMTP_USERNAME=user
SMTP_PASSWORD=pass
SMTP_FROM_ADDRESS=manyfold@example.com
PUBLIC_HOSTNAME=manyfold.example.com

Performance Tuning

VariableDefaultDescription
WEB_CONCURRENCY
4Web worker processes
RAILS_MAX_THREADS
16Threads per worker
DEFAULT_WORKER_CONCURRENCY
4Background job threads
PERFORMANCE_WORKER_CONCURRENCY
1Heavy job threads (analysis, conversion)

Security Settings

MAX_FILE_UPLOAD_SIZE=536870912    # 512MB in bytes
MAX_FILE_EXTRACT_SIZE=1073741824  # 1GB in bytes
MIN_PASSWORD_SCORE=4              # 0-4, higher = stricter

Core Concepts

  • Library: Storage location (local folder or S3 bucket) containing models
  • Model: A folder containing related 3D files (parts, images, docs)
  • Creator: Content author/designer
  • Collection: Grouping of related models
  • Tags: Organizational keywords

User Workflows

Initial Setup

  1. Access web UI at
    http://server:3214
  2. Create admin account (email, username, password)
  3. Add first library (path inside container, e.g.,
    /libraries
    )
  4. Scan runs automatically to index existing files

Scanning

  • Scan for new files: Detect new folders/files added outside Manyfold
  • Rescan all models: Re-check existing models for problems/metadata

Uploading

  • Upload ZIP archives (extracted as separate models)
  • Upload individual STL/OBJ files (creates single model)
  • Progress shown during upload, extraction happens in background

External Integrations (v0.118+)

Import metadata from Thingiverse, MyMiniFactory, Cults3D:

  1. Configure API keys in Settings > Integrations
  2. Add link to model page
  3. Click sync icon to import metadata/images
  4. Or paste URL in search bar for direct import

Supported File Formats

See references/supported_formats.md for complete list.

3D Models with Preview: STL, OBJ, 3MF, GLTF/GLB, FBX, PLY, 3DS Slicer Files: GCode (preview), Chitubox, Lychee Images: PNG, JPG, GIF, WebP, SVG, TIFF, BMP Documents: PDF, Markdown, TXT Archives: ZIP, RAR, 7z, gzip, bzip2

Troubleshooting

Container won't start

  • Ensure
    SECRET_KEY_BASE
    is set
  • Check
    PUID
    /
    PGID
    have read/write access to mounted volumes
  • Verify Redis is accessible (for full image)

Files not appearing

  • Check library path matches container mount (not host path)
  • Run manual scan from web UI
  • Verify file extensions are supported

Permission errors

  • Match
    PUID
    /
    PGID
    to owner of library folders
  • Ensure container has write access for temp files

Health check

wget --no-verbose --tries=1 --spider http://localhost:3214/health

Reverse Proxy

Set

RAILS_RELATIVE_URL_ROOT=/manyfold
for non-root paths.

Required headers for HTTPS proxy:

  • X-Forwarded-Proto: https
  • X-Forwarded-For
  • Host

Note: Federation requires domain root (no subpath).

Additional References

  • Configuration details: references/configuration.md
  • All supported formats: references/supported_formats.md