β Help us reach more developers and grow the InsForge community. Star this repo!
The all-in-one, open-source backend platform for agentic coding. InsForge gives your coding agent database, auth, storage, compute, hosting, and AI gateway to ship full-stack apps end-to-end.
read-me.mp4
Coding agents interact with InsForge through one of two interfaces:
- MCP Server (self-hosted and cloud): exposes InsForge's operations as tools any MCP-compatible agent can call.
- CLI + Skills (cloud only): a command-line interface paired with Skills that agents invoke directly from the terminal.
Both interfaces let coding agents operate the backend like backend engineers:
- Read backend context and state: Pull documentation, schemas, metadata (deployed functions, bucket contents, auth config), and runtime logs, so the agent has what it needs to write code, verify what it built, and debug when something breaks.
- Configure primitives: Deploy edge functions, run database migrations, create storage buckets, set up auth providers, and configure other backend resources directly.
graph TB
subgraph TOP[" "]
AG[AI Coding Agents]
end
subgraph MID[" "]
SL[InsForge]
end
AG --> SL
SL --> AUTH[Authentication]
SL --> DB[Database]
SL --> ST[Storage]
SL --> EF[Edge Functions]
SL --> MG[Model Gateway]
SL --> CP[Compute]
SL --> DEP[Deployment]
classDef bar fill:#0b0f14,stroke:#30363d,stroke-width:1px,color:#ffffff
classDef card fill:#161b22,stroke:#30363d,stroke-width:1px,color:#ffffff
class AG,SL bar
class AUTH,DB,ST,EF,MG,CP,DEP card
style TOP fill:transparent,stroke:transparent
style MID fill:transparent,stroke:transparent
linkStyle default stroke:#30363d,stroke-width:1px
- Authentication: User management, authentication, and sessions
- Database: Postgres relational database
- Storage: S3 compatible file storage
- Model Gateway: OpenAI compatible API across multiple LLM providers
- Edge Functions: Serverless code running on the edge
- Compute (private preview): Long-running container services
- Site Deployment: Site build and deployment
If you find InsForge useful or interesting, a GitHub Star βοΈ would be greatly appreciated.
Cloud-hosted: insforge.dev
Prerequisites: Docker with Compose v2.
curl -fsSL https://raw.githubusercontent.com/InsForge/InsForge/main/deploy/setup.sh | sh -s ~/insforgeFetches the files the stack reads and generates JWT_SECRET, ENCRYPTION_KEY,
POSTGRES_PASSWORD, ROOT_ADMIN_PASSWORD, and the two access keys into
~/insforge/.env (mode 600). Nothing is started. Re-running refreshes the files
and keeps every value you have set β it only ever adds COMPOSE_FILE, or points
it at this checkout's compose file if it still names the development one.
cd ~/insforge
$EDITOR .env # API_BASE_URL, VITE_API_BASE_URL β the URL browsers will use
docker compose up -d.env sets COMPOSE_FILE, so plain docker compose commands work from that
directory β no -f flags to remember.
Building from source instead
For working on InsForge itself. docker-compose.prod.yml reads the same
variables but generates nothing, so set the secrets in .env yourself before
starting anything you expose.
git clone https://github.com/InsForge/InsForge.git
cd InsForge
cp .env.example .env
$EDITOR .env
docker compose -f docker-compose.prod.yml upSet JWT_SECRET, ENCRYPTION_KEY, POSTGRES_PASSWORD, and
ROOT_ADMIN_PASSWORD β .env.example ships placeholders for them, and the
compose file falls back to published defaults for any you leave unset. Set
ACCESS_API_KEY and ACCESS_ANON_KEY too if you want to know your own keys;
left empty, the backend generates a pair only it knows.
This path passes -f explicitly, which overrides COMPOSE_FILE. Add overlays as
further -f flags rather than editing that variable.
Follow the steps to connect InsForge MCP Server
To verify the connection, send the following prompt to your agent:
I'm using InsForge as my backend platform, call InsForge MCP's fetch-docs tool to learn about InsForge instructions.
Give each project its own directory:
curl -fsSL https://raw.githubusercontent.com/InsForge/InsForge/main/deploy/setup.sh | sh -s ~/project1
curl -fsSL https://raw.githubusercontent.com/InsForge/InsForge/main/deploy/setup.sh | sh -s ~/project2Then give each a project name and its own ports. Both .env files start with
COMPOSE_PROJECT_NAME=insforge, and two directories sharing that name share
containers β the second up -d adopts the first's, rebuilt with the second's
config. Set it before starting anything.
~/project1/.env keeps the default ports β which collide with the ~/insforge
instance from the quickstart above if it is still running. Stop that one, or give
project1 its own ports the way project2 has:
COMPOSE_PROJECT_NAME=project1~/project2/.env:
COMPOSE_PROJECT_NAME=project2
POSTGRES_PORT=5442
POSTGREST_PORT=5440
APP_PORT=7230
AUTH_PORT=7231
DENO_PORT=7233Now each directory is a separate instance with its own containers, volumes, database, and secrets:
cd ~/project1 && docker compose up -d
cd ~/project2 && docker compose up -ddocker compose ps, logs -f, and down operate on whichever directory you
run them from.
InsForge stores files on the local filesystem by default. Backing storage with an S3-compatible store also enables the S3-compatible gateway at /storage/v1/s3 (use aws CLI, rclone, or any AWS SDK against your InsForge Storage).
Append one overlay to COMPOSE_FILE in .env. Bundled MinIO, whose store stays
internal to the Docker network:
COMPOSE_FILE=deploy/docker-compose/docker-compose.yml:docker-compose.minio.ymlOr RustFS, an Apache-2.0 licensed alternative:
COMPOSE_FILE=deploy/docker-compose/docker-compose.yml:docker-compose.rustfs.ymlKeep one β the file is read as shell assignments, so a second line replaces the
first. Then docker compose up -d as usual.
The overlays ship with default store credentials β set MINIO_ROOT_USER/MINIO_ROOT_PASSWORD (or RUSTFS_ACCESS_KEY/RUSTFS_SECRET_KEY) in .env before production use.
Or bring your own S3-compatible store (AWS S3, MinIO, RustFS, Wasabi, R2, Tencent COS, Aliyun OSS ...) by setting S3_BUCKET, S3_REGION, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY β plus S3_ENDPOINT_URL for non-AWS providers β in .env. If the endpoint is not reachable by browsers (private network), also set S3_USE_PRESIGNED_URLS=false to enable proxy mode.
See the self-hosted storage guide for provider notes, presigned vs. proxy mode, and upgrade tips.
In addition to running InsForge locally, you can also launch InsForge using a pre-configured setup. This allows you to get up and running quickly with InsForge without installing Docker on your local machine.
| Railway | Zeabur | Sealos |
|---|---|---|
Contributing: If you're interested in contributing, you can check our guide here CONTRIBUTING.md. We truly appreciate pull requests, all types of help are appreciated!
Support: If you need any help or support, we're responsive on our Discord channel, and also feel free to email us info@insforge.dev too!
- Official Docs - Comprehensive guides and API references
- Email: info@insforge.dev
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Show your project is built with InsForge.
Markdown:
[](https://insforge.dev)HTML:
<a href="https://insforge.dev">
<img
width="168"
height="30"
src="https://insforge.dev/badge-made-with-insforge.svg"
alt="Made with InsForge"
/>
</a>Markdown:
[](https://insforge.dev)HTML:
<a href="https://insforge.dev">
<img
width="168"
height="30"
src="https://insforge.dev/badge-made-with-insforge-dark.svg"
alt="Made with InsForge"
/>
</a>β Star us on GitHub to get notified about new releases!


