npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@byfungsi/funforge

v0.5.0

Published

Deploy without git, without leaving your editor

Readme

@byfungsi/funforge

Deploy without git. Without leaving your editor.

FunForge CLI lets you deploy directly from your local machine to FunForge - no commits, no pushes, no CI/CD pipelines. Just run funforge deploy and you're live.

Features

  • Git-Free Deployment - Deploy without committing. Perfect for rapid iteration.
  • Local-First Workflow - Work locally, deploy directly. Skip the CI/CD dance.
  • Editor Integration - MCP server for Claude Desktop, Cursor, and other AI assistants.
  • Full Control - Manage environment variables, custom domains, and deployments from CLI.

Installation

# npm
npm install -g @byfungsi/funforge

# pnpm
pnpm add -g @byfungsi/funforge

# bun
bun add -g @byfungsi/funforge

Quick Start

# 1. Authenticate (opens browser)
funforge login

# 2. Create an app (or link to existing)
funforge apps create my-app

# 3. Link your project
funforge link

# 4. Deploy
funforge deploy

That's it. Your app is live at https://your-app.funforge.app.

Commands

Authentication

funforge login          # Authenticate via browser (device flow)
funforge logout         # Clear stored credentials
funforge whoami         # Show current authenticated user

Apps

funforge apps list              # List all your apps
funforge apps create <name>     # Create a new app
funforge apps create <name> -s <slug>  # Create with custom subdomain
funforge link                   # Link current directory to an app (interactive)
funforge link <appId>           # Link to specific app

Deploy

funforge deploy         # Deploy current directory
funforge deploy -y      # Skip confirmation prompt
funforge deploy --no-watch  # Don't watch deployment logs

Environment Variables

funforge env list                    # List all env vars
funforge env set KEY=VALUE           # Set single variable
funforge env set KEY1=V1 KEY2=V2     # Set multiple variables
funforge env unset KEY               # Remove variable
funforge env unset KEY1 KEY2         # Remove multiple

Custom Domains

funforge domains list               # List custom domains
funforge domains add example.com    # Add domain (shows DNS instructions)
funforge domains add example.com -m txt  # Use TXT verification
funforge domains remove example.com # Remove domain
funforge domains verify example.com # Verify DNS and provision SSL

Config (Build Settings)

Manage build settings stored on the server:

funforge config show    # Compare local vs server settings
funforge config push    # Push local settings to server
funforge config pull    # Pull server settings to local file

Note: The config commands sync settings to the database. However, during deployment, funforge.json in your project is automatically read and takes priority over database settings.

Configuration

funforge.json

When you run funforge link, a funforge.json file is created in your project root:

{
  "appId": "your-app-uuid",
  "appName": "My App",
  "appSlug": "my-app",
  "build": {
    "buildCommand": "npm run build",
    "installCommand": "npm ci",
    "startCommand": "npm start",
    "nodeVersion": "20"
  },
  "port": 3000
}

Fields:

| Field | Description | |-------|-------------| | appId | (Required) The app UUID this project is linked to | | appName | Display name of the app | | appSlug | Subdomain slug (e.g., my-app for my-app.funforge.app) | | build.buildCommand | Custom build command (overrides auto-detection) | | build.installCommand | Custom install command (e.g., npm ci or pnpm install) | | build.startCommand | Custom start command (e.g., node server.js) | | build.nodeVersion | Node.js version: "18", "20", or "22" | | port | Port your app listens on (default: 3000) |

Build Settings Priority:

During deployment, build settings are resolved in this order:

  1. funforge.json (in your project) - highest priority
  2. Database settings (set via web UI or funforge config push)
  3. Railpack auto-detection - fallback

This means you can commit funforge.json to your Git repo and it will automatically be used during builds - no need to configure anything in the web UI or run funforge config push.

Git Users: Just add funforge.json to your repo. The builder will automatically read it during deployment.

CLI Users: Your funforge.json is included in the upload and used during builds.

.funforgeignore

Control which files are included in the deployment tarball. Uses .gitignore syntax:

# Ignore test files
__tests__/
*.test.ts

# Ignore local config
.env.local
config.local.json

By default, FunForge respects your .gitignore file. Use .funforgeignore to add additional exclusions.

Size Limits

  • Maximum tarball size: 50 MB
  • Use .funforgeignore to exclude large files (node_modules is automatically excluded)

MCP Server

FunForge includes an MCP (Model Context Protocol) server for AI assistant integration. Deploy directly from Claude Desktop, Cursor, or any MCP-compatible client.

Setup for Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "funforge": {
      "command": "npx",
      "args": ["@byfungsi/funforge-mcp"]
    }
  }
}

Setup for Cursor

Add to your MCP settings:

{
  "funforge": {
    "command": "npx",
    "args": ["@byfungsi/funforge-mcp"]
  }
}

Available Tools

| Tool | Description | |------|-------------| | funforge_whoami | Check authentication status | | funforge_apps_list | List all your apps | | funforge_apps_create | Create a new app | | funforge_status | Get deployment status | | funforge_deploy | Deploy a directory | | funforge_env_list | List environment variables | | funforge_env_set | Set environment variables | | funforge_env_unset | Remove environment variables | | funforge_domains_list | List custom domains | | funforge_domains_add | Add a custom domain |

Example Conversations

Once configured, you can use natural language:

  • "Deploy my current project to FunForge"
  • "Set the DATABASE_URL environment variable to postgres://..."
  • "Add api.myapp.com as a custom domain"
  • "What's the status of my deployment?"

Environment Variables

The CLI can be configured via environment variables:

| Variable | Description | Default | |----------|-------------|---------| | FUNFORGE_API_URL | API endpoint | https://funforge.fungsi.app | | FUNFORGE_API_KEY | API key (skips device auth) | - |

Authentication

FunForge uses device authentication flow:

  1. Run funforge login
  2. Browser opens to FunForge login page
  3. Sign in with GitHub
  4. CLI automatically receives credentials
  5. Credentials stored locally in ~/.config/funforge/

For CI/CD environments, set FUNFORGE_API_KEY instead.

How It Works

  1. Tarball Creation - CLI creates a .tar.gz of your project (respecting .gitignore and .funforgeignore)
  2. Upload - Tarball is uploaded to R2 storage
  3. Build - FunForge downloads and builds your app using Railpack (auto-detects framework)
  4. Deploy - Blue-green deployment with health checks
  5. Live - Your app is available at https://your-app.funforge.app

Links

Requirements

License

MIT