selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Shumai logo

Self-host Shumai

v0.6.1

Open-source Frame.io alternative for creative teams

BetaOpen SourceMIT
Docker ComposeCompose file & guide
docker compose up -d
Updated9 hours ago
LanguageTypescript
Setup difficultyModerate
Stars
236
RAM
2 GB+ (Lite), 4 GB+ (with Embedding Server), 8 GB+ (Full)
Port
3000 (HTTP web server)
Requires
PostgreSQL with pgvector
Docker
shumaione/shumai
Shumai app screenshot showing the creative asset management interfaceShumai creative asset management interface showing project files, media assets, and folders

What is Shumai?

Shumai is an open-source, self-hosted alternative to Frame.io built for creative teams. It centralizes asset management with S3-compatible and local storage, enables frame-accurate annotations and comments on video and image files, provides secure sharing with collections and watermarking, and offers granular role-based access control. The platform includes AI agents with Model Context Protocol (MCP) support, isolated sandbox execution, semantic search, 3D asset turntable previews, document PDF conversion via Gotenberg, NLE export to Premiere Pro, DaVinci Resolve, Final Cut Pro, and Avid, plus a built-in Kanban board for task management. It runs via Docker Compose with PostgreSQL (pgvector) and optional embedding server, turntable renderer, and Gotenberg. Licensed under MIT.

Should you self-host Shumai?

Shumai scores 47/100 on selfhost.directory (how scoring works) and ranks #85 of 142 in Media Management. It has 236 GitHub stars.

It shipped 10 stable releases in the past year. The latest, v0.6.1, came out on 24 October 2026. New versions land roughly every 4 days.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is MIT-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is FreeFrame (51/100, 241 stars). It scores higher overall, so compare the two before you pick. See Shumai vs FreeFrame side by side.

Features

  • 3D Asset Turntable Previews
  • AI Agents with MCP Support
  • Built-in Kanban BoardAgentic Kanban is work in progress
  • Custom Asset Metadata
  • Durable Workflows via DBOS
  • Frame-by-Frame Annotations & Comments
  • Granular Access Control
  • NLE Export & Premiere Pro PluginExperimental Premiere Pro plugin
  • S3-Compatible & Local Storage
  • Scalable Deployment on Kubernetes
  • Secure Sharing & Collections
  • Semantic Search
  • Share Link Watermarking
  • Wide File Format Support

Shumai README

How to install Shumai

Install Shumai with Docker Compose

Environment variables
SHUMAI_SERVER_PORT, STORAGE_BACKEND, AWS_ENDPOINT_URL_S3, S3_BUCKET, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_REGION, BETTER_AUTH_SECRET, ENABLE_WEAKER_NESTED_SANDBOX, and many more (see Environment Variables docs)
  1. Create and navigate to a new directory for your configuration and data volumes:
    mkdir shumai && cd shumai
    
  2. Download your preferred docker-compose.yaml configuration based on your needs and available RAM:
    • Lite (Suggested RAM: 2 GB+): Minimal deployment containing Shumai and PostgreSQL database.
      curl -o docker-compose.yaml https://raw.githubusercontent.com/shumaiOne/shumai/main/docker-compose/local/docker-compose.yaml
      
    • With Embedding Server (Suggested RAM: 4 GB+): Adds local multimodal semantic search powered by shumaiOne/embedding-server (EmbeddingGemma 2 740M).
      curl -o docker-compose.yaml https://raw.githubusercontent.com/shumaiOne/shumai/main/docker-compose/local/docker-compose.embedding.yaml
      
    • Full (Suggested RAM: 8 GB+): All-in-one setup including embedding-server, turntable-renderer (3D previews), and Gotenberg (document PDF proxying).
      curl -o docker-compose.yaml https://raw.githubusercontent.com/shumaiOne/shumai/main/docker-compose/local/docker-compose.full.yaml
      
  3. Configure environment variables (optional):
    • SHUMAI_SERVER_PORT controls the port the Shumai server listens on. The default is 3000.
    • By default, Shumai uses the bundled local storage service in this Docker Compose setup. To use an external S3-compatible storage instead, configure the environment variables for your S3 provider.
  4. Start the services in detached mode:
    docker compose up -d
    
  5. Open your browser and access Shumai at http://localhost:3000 (or http://<your-server-ip>:3000 for remote deployments).

Three variants: Lite, With Embedding Server, Full. GPU hardware acceleration optional via hwaccel.transcoding.yaml.

How to configure Shumai

  • ANTHROPIC_API_KEYAPI key for Anthropic provider.

    API key for Anthropic provider.

  • APP_URLThe public URL of the web application. Used for notification email deep links (falls back to BETTER_AUTH_URL).

    The public URL of the web application. Used for notification email deep links (falls back to BETTER_AUTH_URL).

  • AWS_ENDPOINT_URL_S3http://localhost:3000 (respects SHUMAI_SERVER_PORT fallback if unset)Endpoint for S3 storage or local storage. Used by the browser to build file upload URLs. Must include port if deploying remotely or using custom ports.

    Endpoint for S3 storage or local storage. Used by the browser to build file upload URLs. Must include port if deploying remotely or using custom ports.

  • BETTER_AUTH_SECRETA secure, random 32-byte secret used to sign session cookies and JWTs.

    A secure, random 32-byte secret used to sign session cookies and JWTs.

    values: Generate with openssl rand -base64 32

  • BETTER_AUTH_URLhttp://localhost:3000 (respects SHUMAI_SERVER_PORT fallback)The public URL of your Hono backend API. Used for redirect flows and notification email links fallback.

    The public URL of your Hono backend API. Used for redirect flows and notification email links fallback.

  • CONCURRENCY_AGENT5Maximum concurrent AI tasks executed by workers. Set to 1 when running local embedding-server.

    Maximum concurrent AI tasks executed by workers. Set to 1 when running local embedding-server.

  • CONCURRENCY_TRANSCODE1Maximum concurrent media transcoding tasks executed by workers.

    Maximum concurrent media transcoding tasks executed by workers.

  • DATABASE_URLpostgresql://user:pass@localhost:5432/db?schema=publicPostgreSQL connection URL. Must target a database with the pgvector extension installed.

    PostgreSQL connection URL. Must target a database with the pgvector extension installed.

  • EMBEDDING_CHUNK_DURATION60.0The duration in seconds for each video chunk when generating video embeddings.

    The duration in seconds for each video chunk when generating video embeddings.

  • EMBEDDING_CHUNK_OVERLAP5.0The duration in seconds to overlap video chunks when generating video embeddings.

    The duration in seconds to overlap video chunks when generating video embeddings.

  • EMBEDDING_PROVIDERgemini-embedding-2Multimodal embedding provider. Options: gemini-embedding-2, gemma-embedding-2-openai.

    Multimodal embedding provider. Options: gemini-embedding-2, gemma-embedding-2-openai.

    values: gemini-embedding-2, gemma-embedding-2-openai

  • ENABLE_EMBEDDING_AGENTfalseWhen set to true, automatically provisions and enables the system embedding agent for all teams on startup.

    When set to true, automatically provisions and enables the system embedding agent for all teams on startup.

    values: true, false

  • ENABLE_WEAKER_NESTED_SANDBOXfalseEnables weaker nested sandbox mode for environments without user namespace permissions (e.g., Docker).

    Enables weaker nested sandbox mode for environments without user namespace permissions (e.g., Docker).

    values: true, false

  • GEMINI_API_KEYAPI key for Google Gemini provider.

    API key for Google Gemini provider.

  • GEMMA_EMBEDDING_OPENAI_BASE_URLhttp://embedding-server:9379/v1Base URL of the OpenAI-compatible LiteRT-LM embedding server.

    Base URL of the OpenAI-compatible LiteRT-LM embedding server.

  • GOTENBERG_BASIC_AUTH_PASSWORDsecretPassword when Basic Authentication is enabled on the Gotenberg instance.

    Password when Basic Authentication is enabled on the Gotenberg instance.

  • GOTENBERG_BASIC_AUTH_USERNAMEadminUsername when Basic Authentication is enabled on the Gotenberg instance.

    Username when Basic Authentication is enabled on the Gotenberg instance.

  • GOTENBERG_URLhttp://gotenberg:3000Base URL of the external Gotenberg conversion API.

    Base URL of the external Gotenberg conversion API.

  • LOG_FORMATjsonLog format style. Use json for production logging, or pretty for human-readable terminal output.

    Log format style. Use json for production logging, or pretty for human-readable terminal output.

    values: json, pretty

  • LOG_LEVELinfoPino logging level. Options: debug, info, warn, error.

    Pino logging level. Options: debug, info, warn, error.

    values: debug, info, warn, error

  • MAX_REQUEST_BODY_SIZE10737418240Maximum allowed size for request bodies (e.g., for large file uploads). Default is 10GB in bytes.

    Maximum allowed size for request bodies (e.g., for large file uploads). Default is 10GB in bytes.

  • OPENAI_API_KEYAPI key for OpenAI provider.

    API key for OpenAI provider.

  • POD_NAMEKubernetes pod name, used to provide stable per-pod worker identity across StatefulSet restarts.

    Kubernetes pod name, used to provide stable per-pod worker identity across StatefulSet restarts.

  • PRESIGNED_URL_EXPIRES_IN5Number of hours for which generated presigned download/upload links are valid.

    Number of hours for which generated presigned download/upload links are valid.

  • S3_ACCESS_KEY_IDminioadminAccess key credentials for S3.

    Access key credentials for S3.

  • S3_BUCKETshumaiS3 bucket name.

    S3 bucket name.

  • S3_REGIONautoS3 storage region.

    S3 storage region.

  • S3_SECRET_ACCESS_KEYminioadminSecret key credentials for S3.

    Secret key credentials for S3.

  • SHUMAI_SERVER_PORT3000The port on which the Shumai web server will listen.

    The port on which the Shumai web server will listen.

  • SHUMAI_WORKER_IDOptional explicit instance ID for worker replicas in multi-node deployments (auto-derived from hostname and process ID if unset).

    Optional explicit instance ID for worker replicas in multi-node deployments (auto-derived from hostname and process ID if unset).

  • SHUMAI_WORKERSallQueues listened to by the web server. Options: all (default), none (API/UI only), agent (or ai), transcode.

    Queues listened to by the web server. Options: all (default), none (API/UI only), agent (or ai), transcode.

    values: all, none, agent, transcode

  • STORAGE_BACKENDlocalStorage type. Use local for local file system storage, or s3 for S3-compatible cloud storage.

    Storage type. Use local for local file system storage, or s3 for S3-compatible cloud storage.

    values: local or s3

  • TURNTABLE_RENDERER_BASIC_AUTH_PASSWORDsecretPassword when Basic Authentication is enabled on the turntable renderer (alias: TURNTABLE_RENDERER_PASSWORD).

    Password when Basic Authentication is enabled on the turntable renderer (alias: TURNTABLE_RENDERER_PASSWORD).

  • TURNTABLE_RENDERER_BASIC_AUTH_USERNAMEadminUsername when Basic Authentication is enabled on the turntable renderer (alias: TURNTABLE_RENDERER_USERNAME).

    Username when Basic Authentication is enabled on the turntable renderer (alias: TURNTABLE_RENDERER_USERNAME).

  • TURNTABLE_RENDERER_URLhttp://turntable-renderer:3000Base URL of the external turntable-renderer service.

    Base URL of the external turntable-renderer service.

Shumai releases & version history

More in Asset Management

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…