Make Effects
Make Effects is an AI media creation workspace at
makefx.app where people and agents can generate, refine,
track, compare, and continue assets across images, audio, and video.
The hosted app is the source of truth for spaces, assets, variants, prompts,
recipes, immutable lineage, lightweight space organization, collaboration state,
and stored media. The makefx CLI lets local agents, scripts, and developers
drive that same asset loop from the command line: start generation jobs, watch
progress, download outputs, inspect results, upload media, and curate variants.
Agents are first-class users: the CLI and hosted MCP server expose the same
asset, recipe, and lineage model used by the web app.
What You Can Build With It
- Generate images, audio, and video through website-backed jobs.
- Track every result as an asset variant with prompt, provider metadata, and
lineage.
- Organize Space assets visually while keeping variants tucked into asset
details.
- Refine an existing variant or derive new assets from references.
- Upload local media into a collaborative space so generated and hand-made
assets live together.
- Let automation agents use the CLI as a stable control surface instead of
touching database or storage internals.
Features
- Authentication: Google OAuth with JWT tokens, OIDC-compliant
- Dual-Worker Architecture: Separate workers for HTTP/frontend and media generation
- React 19 Frontend: Vite, TanStack Router, Zustand, CSS Modules
- D1 Database: SQLite with migrations and Kysely query builder
- R2 Media Storage: Durable media artifacts for generated and uploaded files
- Dependency Injection: InversifyJS for clean architecture
- Make Effects CLI: Command-line access through the
makefx package and command
- TypeScript: End-to-end type safety
CLI Quick Start
Install the CLI from npm:
Authenticate with the hosted app:
Create a space or bind an existing website space to the current directory:
makefx spaces create "My Game Assets" --init
makefx init --space YOUR_SPACE_ID
Generate media and download completed outputs:
makefx generate "A cozy pixel-art market background" \
--name "Market Background" \
--type scene \
-o art/market.png
makefx audio sfx generate "A crisp magical item pickup" \
--name "Item Pickup" \
-o audio/item-pickup.wav
makefx video generate "A looping idle animation for a tiny robot" \
--name "Robot Idle" \
--type animation \
-o video/robot-idle.mp4
makefx video derive "move from the entrance to the desk" \
--first-frame refs/start.png \
--last-frame refs/end.png \
--name "Desk Move" \
--type animation \
-o video/desk-move.mp4
Inspect and reuse tracked results:
makefx assets
makefx assets search "hero sword" --media image
makefx assets show ASSET_ID --json
makefx assets download VARIANT_ID -o references/variant.png
makefx assets clone VARIANT_ID --from-space SOURCE_SPACE_ID --to-space TARGET_SPACE_ID
makefx collections add-asset COLLECTION_ID ASSET_ID --variant VARIANT_ID
makefx collections add-variant COLLECTION_ID VARIANT_ID
makefx recipes run VARIANT_ID
makefx usage --from 2026-06-01
makefx spend --from 2026-06-01 --provider gemini
makefx listen --space YOUR_SPACE_ID
Use run manifests for debugging agent workflows:
makefx runs --debug
makefx runs show --latest --debug --json
The CLI defaults to production at https://makefx.app. Use --env stage for
staging or --local for a local development server.
CLI Commands
| Command | Description |
|---|
makefx login | Authenticate with makefx.app |
makefx spaces | List, view, or create collaborative spaces |
makefx init | Bind the current directory to a website space |
makefx generate | Generate a new image asset |
makefx refine | Refine an existing image variant |
makefx derive | Create a new image asset from variant IDs or local refs |
makefx batch | Generate multiple images and write a debug run manifest |
makefx audio | Generate speech, dialogue, music, or sound effects |
makefx video | Generate, refine, or derive video assets |
makefx upload | Upload local media files and return Space IDs for chaining |
makefx assets | List, search, show, download, clone, rename, delete, and set active assets |
makefx collections | Create collections and add existing assets or exact variants |
makefx variants | Retry, star, rate, or delete variants |
makefx recipes | Re-run a variant's stored generation recipe |
makefx usage | Show platform storage and workflow consumption for a space |
makefx spend | Show admin provider cost summaries |
makefx listen | Stream real-time space events |
makefx runs | Inspect debug-only local generation manifests |
See docs/cli.md and
docs/cli-generation.md for the full command guide.
MCP Quick Start
Make Effects hosts a Streamable HTTP MCP server at https://makefx.app/mcp.
Connect it to Claude Code with:
claude mcp add --transport http makefx https://makefx.app/mcp
The production endpoint is live, but current Claude Code and Codex releases
cannot complete its dynamic OAuth registration. See
docs/mcp.md for the verified limitation and the complete tool,
permission, and error reference.
Local Development
pnpm install
cp .env.example .env
pnpm run db:migrate
pnpm run dev
Access at http://localhost:3001/
Developer Commands
| Command | Description |
|---|
pnpm run dev | Start local development (frontend + worker) |
pnpm run build:cli | Build dist/cli/makefx.mjs |
pnpm run pack:cli | Build and inspect the npm CLI package |
pnpm run cli:dev -- --help | Run the CLI from TypeScript sources |
pnpm run db:migrate | Apply database migrations locally |
pnpm test | Run tests |
pnpm run typecheck | TypeScript type checking |
pnpm run lint | ESLint |
pnpm run deploy:stage | Deploy to stage environment |
pnpm run deploy:production | Deploy the full production bundle: app, generation, and polar workers |
Transactional Email
Registration and Space sharing notifications use Cloudflare Email Service from
the backend Worker only. Stage and production require:
[[send_email]] binding named EMAIL.
MAKEFX_EMAIL_FROM set to the verified sender allowed by the binding.
MAKEFX_ADMIN_NOTIFICATION_EMAILS set to comma-separated admin recipients
for new-user registration notifications.
PUBLIC_SITE_ORIGIN set so Space links in emails point at the right host.
Email delivery is best-effort: send failures are logged and do not roll back
auth or Space sharing mutations.
Project Structure
src/
โโโ backend/ # API routes, services, middleware
โโโ frontend/ # React application
โโโ dao/ # Data access layer
โโโ db/migrations/ # SQL migrations
โโโ cli/ # CLI tool
โโโ worker/ # Cloudflare Worker entry points
Documentation
Tech Stack
- Runtime: Cloudflare Workers
- Database: Cloudflare D1 (SQLite)
- Frontend: React 19, Vite, Zustand
- Backend: Hono, InversifyJS, Kysely
- Auth: Google OAuth, JWT (jose)
- Testing: Node.js test runner
License
MIT