Skip to main content

FastApps

The python framework for apps in ChatGPT

PyPI Python PyPI Downloads License
CI Status Code style: black Ruff GitHub Stars


📚 Documentation: https://docs.fastapps.org/

👥 Community: Join Our Discord


Quick Start

We recommend installing FastApps with uv:

uv tool install fastapps
uv tool install --upgrade fastapps # Update to the latest version

For full installation instructions, including verification, upgrading from the official MCPSDK, and developer setup, see the Installation Guide.

Then, you can quickstart by running commands below :

uv run fastapps init my-app
cd my-app
uv sync          # Install Python deps & create uv.lock
uv run fastapps dev

That's it! You'll gonna see an image with a public url. You can test the server with following guides.

alt text

The public url is one-time, generated with cloudflare tunnel.

Managing Dependencies with uv

FastApps projects now rely on pyproject.toml + uv.lock for Python dependencies.

  • uv sync installs everything defined in pyproject.toml and writes/updates uv.lock for reproducible builds. Run it whenever you pull new changes or after editing dependencies.
  • uv add <package> adds new dependencies and immediately updates both pyproject.toml and uv.lock.
  • uv run <command> executes CLI tools (like fastapps dev) inside the synced environment without activating a virtualenv manually.

Tip: If uv is not installed, follow their installation instructions and rerun uv sync. Without uv, FastApps commands that manage dependencies (e.g., fastapps init, fastapps use) will fail with a helpful error message.

Test App

MCP server is available at /mcp endpoint of fastapps server.
Example : https://your-public-url.trycloudflare.com/mcp

Option A: Test on MCPJam Inspector

Add your public URL + /mcp to ChatGPT.

npx @mcpjam/inspector@latest

Option B: Test on ChatGPT

Add your public URL + /mcp to ChatGPT's "Settings > Connectors" .

Creating More Widgets

uv run fastapps create additional-widget

Using Widget Templates

FastApps provides pre-built templates to jumpstart your widget development:

# Create widget from a template
uv run fastapps create my-list --template list          # Vertical list with items
uv run fastapps create my-carousel --template carousel  # Horizontal scrolling cards
uv run fastapps create my-albums --template albums      # Photo gallery viewer

Editing Your Widget

You'll only need to edit these 2 folders:

server/tools/

This folder contains backend .py files, where you define conditions & server logics for the app.

Example :

### my_widget_tool.py
from fastapps import BaseWidget, Field, ConfigDict
from pydantic import BaseModel
from typing import Dict, Any

class MyWidgetInput(BaseModel):
    model_config = ConfigDict(populate_by_name=True)
    name: str = Field(default="World")

class MyWidgetTool(BaseWidget):
    identifier = "my-widget"
    title = "My Widget"
    input_schema = MyWidgetInput
    invoking = "Processing..."
    invoked = "Done!"
    
    widget_csp = {
        "connect_domains": [],      # APIs you'll call
        "resource_domains": []      # Images/fonts you'll use
    }
    
    async def execute(self, input_data: MyWidgetInput) -> Dict[str, Any]:
        # Your logic here
        return {
            "name": input_data.name,
            "message": f"Hello, {input_data.name}!"
        }

widgets/ - Frontend UI

The folder contains frontend component codes that will show up on the app screen according to the rules you've define with python codes above.

Apps in GPT components are react components - FastApps follows it. You can custom compoenents as you wish.

// my-widget/index.jsx
import React from 'react';
import { useWidgetProps } from 'fastapps';

export default function MyWidget() {
  const props = useWidgetProps();
  
  return (
    <div style={{
      padding: '40px',
      textAlign: 'center',
      background: '#4A90E2',
      color: 'white',
      borderRadius: '12px'
    }}>
      <h1>{props.message}</h1>
      <p>Welcome, {props.name}!</p>
    </div>
  );
}

That's it! These are the only files you need to write.


Contributing

We welcome contributions! Please see our contributing guidelines:

Quick Start for Contributors

# Fork and clone the repository
git clone https://github.com/YOUR_USERNAME/FastApps.git
cd FastApps

# Install uv (if not already installed)
# curl -LsSf https://astral.sh/uv/install.sh | sh

# Install development dependencies (recommended - matches CI)
uv sync --dev

# Install pre-commit hooks (already installed via uv sync --dev)
uv run pre-commit install

# Make changes and ensure they pass checks
uv run black .
uv run ruff check --fix .
uv run pytest

# Submit a pull request

License

MIT © Dooi Labs

Metadata

Release files for fastapps 1.4.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fastapps 1.4.3
File Size Uploaded
fastapps-1.4.3.tar.gz 2.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for fastapps 1.4.3
File Interpreter ABI Platform
fastapps-1.4.3-py3-none-any.whl Python 3 none any Details

Total release size: 2.3 MB

Release files / fastapps-1.4.3.tar.gz

Download URL fastapps-1.4.3.tar.gz
Size 2.2 MB
Tags Source
SHA-256 checksum
How to use checksums
71b560bed9b5bbca981e2ee216a6a1c90408794162a6b010fbc6c88350dfed5a
BLAKE2b-256 checksum
How to use checksums
da49079248ec41bd752297368664ae4c99c6b90d02046540acc97ffecad74e43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / fastapps-1.4.3-py3-none-any.whl

Download URL fastapps-1.4.3-py3-none-any.whl
Size 88.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2b748c7c0be1c794fd67bb9b12643741dc60a984ccd34c4362370adf24ec4064
BLAKE2b-256 checksum
How to use checksums
b5a0b961707d6320d370e5bc8278c14468076466c07b74fc898577aa26f537e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

1.4.3 This release

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.8

2 release files

1.3.7

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.4

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page