Jesse A. Green / notebook

AutoGPT — User Guide

Generated September 2026 from Significant-Gravitas/AutoGPT at c035ab1

AI-generated documentation. The library is checked by sampling (three repositories so far); this guide was not individually reviewed. Verify against the project before relying on it.

AutoGPT is an open-source platform for building, deploying, and running AI agents that carry out complete workflows. You describe an outcome in plain English (AutoPilot) or wire every step yourself on a visual canvas (Build), then run the agent on demand, on a schedule, or from a webhook trigger. The same repository powers the paid, hosted AutoGPT Platform at platform.agpt.co and the free self-hosted deployment you run on your own infrastructure.

This guide is for people who use AutoGPT: running it, building agents, connecting integrations, scheduling work, and troubleshooting. Architecture, the complete configuration reference, security hardening, and internals live in the companion Admin Guide.

Note

The repository contains two products. autogpt_platform/ is the current, maintained AutoGPT Platform and is the subject of almost all of this guide. classic/ is the original 2023 autonomous agent (plus the forge framework and a benchmark harness). Classic is officially unsupported and receives no dependency updates; it is covered briefly in Classic AutoGPT for completeness.

Surface What it is Where
AutoPilot Conversational assistant that builds agents, runs agents, and runs blocks directly /copilot
Agents (Library) Your agents, their tasks (runs), schedules, triggers, templates, and costs /library
Marketplace Community and team-published agents you can add with one click /marketplace
Build Visual canvas where you connect blocks into an agent graph /build

1. Quick Start

You have two paths. Pick the one that matches what you want.

Hosted AutoGPT Platform Self-hosted
Access Public signup at platform.agpt.co Run it on your own machine or server
Cost Paid plan plus agent usage No license fee; you pay your own infrastructure and model providers
Setup None Docker and configuration
Model access Built in Bring your own API keys
Updates Managed by AutoGPT Managed by you
Support Plan-dependent Community

1.1 Fastest path: the hosted Platform

  1. Sign up at https://platform.agpt.co/signup.
  2. Open AutoPilot and describe a job, for example: "Build me an agent that takes a blog topic as input, generates an outline, then writes the full article."
  3. Review the agent AutoPilot creates, then run it from your Agents library.

No API keys or infrastructure are required on the hosted Platform; some plans include managed AI providers.

1.2 Fastest self-hosted path: from source with Docker Compose

This is the currently supported self-hosting path on Linux, macOS, and Windows.

git clone https://github.com/Significant-Gravitas/AutoGPT.git
cd AutoGPT/autogpt_platform
make init-env
docker compose up -d --build
[+] Running ... containers
 ✔ Container autogpt_platform-db-1        Healthy
 ✔ Container autogpt_platform-migrate-1   Exited
 ✔ Container autogpt_platform-rest_server-1  Started
 ✔ Container autogpt_platform-frontend-1  Started
 ...

Open http://localhost:3000, create an account, and open Build.

Important

Run make init-env before docker compose up. It creates each .env from its .env.default and generates the three secrets the defaults deliberately leave blank (ENCRYPTION_KEY, UNSUBSCRIBE_SECRET_KEY, BETTER_AUTH_SECRET). The backend refuses to start while ENCRYPTION_KEY is empty.

1.3 Your first agent (no API key needed)

The Calculator agent uses no model provider, so it is the best way to confirm a fresh self-hosted install works:

  1. Open Build.
  2. Add two Input blocks; name them a and b.
  3. Add a Calculator block and connect a → Calculator a, b → Calculator b.
  4. Add an Output block named results and connect Calculator's result to its value.
  5. Press Ctrl+S (Cmd+S on macOS), name the agent, and save.
  6. Run it with 227 and 17 and the Multiply operation.
results: 3859

Tip

Provider keys are not required to boot, create an account, use Build, or run provider-free blocks. Model-backed blocks return a clear missing-credential error until you configure a provider.


2. Installation

2.1 Choose an installation method

Method Status Platforms Best for
From source (Docker Compose) Supported, recommended today Linux, macOS, Windows Most self-hosters; offline installs with local LLMs
Single-container appliance (significantgravitas/autogpt) Experimental Linux/macOS hosts running Linux containers on amd64/arm64 One-container, loopback-bound single-tenant installs
Release installer script Not yet live Linux, macOS Future one-command appliance install
Local development (Poetry + pnpm) Supported Any Contributors and block developers

Warning

The self-hosting guide in the repository says it plainly: do not follow outside tutorials — they will likely be out of date. The platform's setup, auth stack, and secret handling have changed substantially (for example the switch from Supabase to the built-in Better Auth service).

Note

The hosted release installer (setup.agpt.co/install.sh) still serves the older Compose installer, and the appliance image tags are not public until the maintainers' release gates pass. Until then — and always on Windows — use the from-source setup.

2.2 Requirements

Requirement From source (Compose) Single-container appliance
Docker Docker Desktop or Docker Engine Docker Engine or Desktop running Linux containers (linux/amd64 or linux/arm64)
Docker Compose Required (docker compose) Not required
Git Required Not required
Node.js + npm Required by the checkout workflow Not required
Memory Enough for Postgres, Redis cluster, RabbitMQ, FalkorDB, ClamAV and app services More than the measured 5–6 GiB, plus headroom
Disk Image layers + autogpt_platform/data/ Image + growing /data volume + room for one full compressed backup
Shell tools — Bash, curl, and sha256sum or shasum (for the Unix bootstrap)

Caution

Podman and podman-compose are not supported. They cause path-resolution failures, particularly on Windows (see Troubleshooting).

Verify your tools:

git --version
node -v
npm -v
docker -v
docker compose version
git version 2.x
v20.x
10.x
Docker version 2x.x
Docker Compose version v2.x

2.3 Install from source (Docker Compose)

Linux / macOS

git clone https://github.com/Significant-Gravitas/AutoGPT.git
cd AutoGPT/autogpt_platform
make init-env
docker compose up -d --build
✔ Container autogpt_platform-frontend-1  Started

Windows (Docker Desktop + WSL 2)

Enable the WSL 2 engine first (Docker Desktop → Settings → General → Use the WSL 2 based engine, then restart Docker Desktop). Then, in a shell with make and python3 available (for example a WSL 2 distribution):

git clone https://github.com/Significant-Gravitas/AutoGPT.git
cd AutoGPT/autogpt_platform
make init-env
docker compose up -d --build

Without make, run the equivalent steps by hand:

cp -n .env.default .env
cp -n backend/.env.default backend/.env
cp -n frontend/.env.default frontend/.env
python3 single-container/runtime_config.py fill-env --path .env
python3 single-container/runtime_config.py fill-env --path backend/.env
python3 single-container/runtime_config.py fill-env --path frontend/.env
docker compose up -d --build

Warning

On Windows, select WSL 2 rather than Hyper-V. Hyper-V can cause the db (Postgres) container to be marked unhealthy. Switching an existing Docker Desktop to WSL 2 may erase existing containers and build history — back up anything important first.

What make init-env does

Step Effect
cp -n .env.default .env (root, backend/, frontend/) Creates missing .env files; never overwrites an existing one
runtime_config.py fill-env --missing-ok on each file Fills every secret whose line is present but empty
Safe to re-run Existing files and existing values are never overwritten

Important

make init-env does not merge newly added variables into an .env you already have. After upgrading, diff each .env against its .env.default and copy new keys across yourself.

Default ports (Compose)

Port Service
3000 Frontend (Next.js UI and embedded auth service)
8006 REST API server (rest_server)
8001 WebSocket server (websocket_server)
8002 Graph executor
8003 Scheduler
8005 Database manager
8007 Notification server
8008 AutoPilot (copilot) executor
8009 Platform linking manager (bot profile only)
5432 PostgreSQL (pgvector/pgvector:pg15)
5672 RabbitMQ
17000–17002 Redis cluster nodes
6380 / 3001 FalkorDB (Redis protocol / web UI)
3310 ClamAV virus scanner

Check that it is running by visiting http://localhost:3000, or probe the API:

curl http://localhost:8006/health
{"status":"healthy"}

2.4 Docker: single-container appliance (experimental)

The appliance packages the frontend and backend together with PostgreSQL, a three-node Valkey cluster, RabbitMQ, nginx, and FalkorDB in one container. Only nginx listens publicly, on container port 3000. All durable state lives under /data.

Step 1 — Pick an image.

Tag Meaning
latest Newest fully verified stable Platform release
vX.Y.Z Immutable image for GitHub release autogpt-platform-beta-vX.Y.Z
sha-<git-sha> Immutable image for an exact dev or release revision
canary-sha-* Legacy pre-release artifacts — not supported
IMAGE=significantgravitas/autogpt:latest
docker pull "${IMAGE}"

Or build from source (from the repository root):

docker buildx bake \
  --file autogpt_platform/single-container/docker-bake.hcl \
  --load \
  single-container
IMAGE=autogpt-platform:single-container-dev

Step 2 — Create a private environment file.

umask 077
touch autogpt.env
chmod 600 autogpt.env

Add at least:

AUTOGPT_PUBLIC_URL=http://localhost:3000
AUTH_SIGNUP_ALLOWLIST=[email removed]

Step 3 — Start the appliance.

docker run --detach --name autogpt \
  --restart unless-stopped \
  --shm-size 2g \
  --ulimit nofile=65536:65536 \
  --log-driver json-file \
  --log-opt max-size=50m \
  --log-opt max-file=5 \
  --env-file autogpt.env \
  --publish 127.0.0.1:3000:3000 \
  --volume autogpt-data:/data \
  "${IMAGE}"
Flag Why
--restart unless-stopped Lets Docker recover the container after the internal watchdog stops it
--shm-size 2g Keeps temporary ChatGPT/Codex auth homes in memory
--ulimit nofile=65536:65536 Predictable file-descriptor ceiling for bundled services
--log-opt max-size=50m --log-opt max-file=5 Caps logs at about five 50 MB files
--publish 127.0.0.1:3000:3000 Loopback-only exposure — this is the exposure control
--volume autogpt-data:/data Named volume holding all durable state

Step 4 — Wait for health, then create and promote the administrator.

docker inspect --format '{{.State.Health.Status}}' autogpt
starting

Repeat until it reports:

healthy

Open http://localhost:3000, sign up with the allow-listed email (passwords need at least 12 characters), then:

docker exec autogpt autogpt-admin promote [email removed]

Sign out and back in so your session picks up the administrator role.

Step 5 — Close signup. Add to autogpt.env:

AUTH_ALLOW_NEW_ACCOUNTS=false

Replace only the container (the named volume is kept):

docker stop autogpt
docker rm autogpt

Then repeat the Step 3 docker run command.

Caution

Do not stop the container while the first boot is applying database migrations. An interrupted migration makes later boots refuse to continue. For a brand-new empty install, remove the unused volume and start again; for an existing install, restore the pre-upgrade backup.

Warning

If you omit AUTH_SIGNUP_ALLOWLIST, anyone who can reach the published port can create an account until you set AUTH_ALLOW_NEW_ACCOUNTS=false. Bootstrap the admin while the app is still loopback-only.

2.5 Local development setup (contributors)

Backend (Poetry)

Requires Python >=3.10,<3.14 and Poetry.

cd autogpt_platform
make start-core
cd backend
poetry install --with dev
poetry run app

make start-core runs docker compose up -d deps (Postgres, Redis, RabbitMQ). poetry run app starts the backend.

Frontend (pnpm)

Requires Node.js and pnpm.

cd autogpt_platform
docker compose --profile local up deps_backend --build --detach
cd frontend
pnpm install
pnpm generate:api-client
pnpm dev

Note

When the frontend runs outside Docker, Next.js only reads .env (not .env.default), and the embedded auth service needs DATABASE_URL and BETTER_AUTH_SECRET from it. Run make init-env first.

2.6 Setup verification checklist

  • [ ] docker compose ps (or docker inspect ... autogpt) shows all services healthy
  • [ ] http://localhost:3000 loads and you can create an account
  • [ ] curl http://localhost:8006/health returns {"status":"healthy"} (Compose)
  • [ ] The Calculator agent from Quick Start runs
  • [ ] At least one model provider key is set if you want AI blocks or AutoPilot
  • [ ] Signup is restricted (AUTH_SIGNUP_ALLOWLIST) or closed (AUTH_ALLOW_NEW_ACCOUNTS=false) before any non-loopback exposure

3. Configuration Basics

Self-hosted AutoGPT is configured entirely through environment files. This section covers only what you need to run; every setting is documented in the Admin Guide's Configuration Mastery chapter.

3.1 Where settings live

File Used by Created from
autogpt_platform/.env Compose-level settings (Postgres host/port/password) .env.default
autogpt_platform/backend/.env Backend services (DB, Redis, RabbitMQ, secrets, provider keys, OAuth apps) backend/.env.default
autogpt_platform/frontend/.env Next.js UI and embedded Better Auth service frontend/.env.default
autogpt.env (appliance) Every setting for the single-container image You create it (optionally from single-container/.env.example)

Precedence (Compose): .env.default → .env → Compose environment: → your shell environment (highest).

Important

.env.default files are public. Never put a working secret in them. Secrets belong in your .env files (or autogpt.env), which make init-env generates per machine.

3.2 Environment Variables

Model providers (backend .env) — add only the ones you use

Variable Purpose
OPENAI_API_KEY OpenAI models; also OpenAI embeddings for memory
ANTHROPIC_API_KEY Anthropic models; also routes AutoPilot directly to Anthropic
GROQ_API_KEY Groq models
LLAMA_API_KEY Llama API models
AIML_API_KEY AI/ML API (300+ models)
OPEN_ROUTER_API_KEY OpenRouter (default remote AutoPilot route)
NVIDIA_API_KEY NVIDIA models
V0_API_KEY v0 blocks

After adding keys to a Compose install, restart:

docker compose down && docker compose up -d

AutoPilot model routing

Profile Settings
OpenRouter + OpenAI embeddings (default remote) CHAT_USE_LOCAL=false, CHAT_USE_OPENROUTER=true, OPEN_ROUTER_API_KEY, OPENAI_API_KEY
Anthropic chat + remote memory CHAT_USE_LOCAL=false, CHAT_USE_OPENROUTER=false, ANTHROPIC_API_KEY, OPEN_ROUTER_API_KEY, OPENAI_API_KEY
Ollama / local OpenAI-compatible server CHAT_USE_LOCAL=true, CHAT_BASE_URL=http://host.docker.internal:11434/v1, CHAT_API_KEY=ollama, CHAT_FAST_STANDARD_MODEL=<model>

Tip

For the local profile, pull the chat and embedding models on the Docker host and raise Ollama's context window — AutoPilot's system prompt is roughly 8k tokens:

ollama pull hf.co/unsloth/Qwen3.5-4B-GGUF:Q4_K_M
ollama pull nomic-embed-text

Set OLLAMA_CONTEXT_LENGTH=32768 on the Ollama server (not in AutoGPT's env file) and restart Ollama.

Note

CHAT_API_KEY must be non-empty even when the local server ignores it. Under the local transport, extended-thinking mode is automatically downgraded to fast.

Accounts and URLs

Variable Where Purpose
AUTOGPT_PUBLIC_URL appliance Exact browser origin, including scheme and non-default port
AUTH_SIGNUP_ALLOWLIST appliance / frontend Comma-separated exact emails or @domain entries allowed to sign up
AUTH_ALLOW_NEW_ACCOUNTS appliance / frontend false blocks all new accounts
AUTH_REQUIRE_EMAIL_VERIFICATION frontend Keep false (the appliance refuses to start if enabled)
FRONTEND_BASE_URL backend Frontend URL used in links and OAuth callbacks (default http://localhost:3000)
PLATFORM_BASE_URL backend Backend URL for webhooks and OAuth (default http://localhost:8006)

Email (optional, for password reset)

POSTMARK_SERVER_API_TOKEN=
POSTMARK_SENDER_EMAIL=
POSTMARK_WEBHOOK_TOKEN=

Warning

Without Postmark there is no self-service password reset and no CLI to reset a password. Store the administrator password securely before closing signup.

AutoPilot spend caps (appliance defaults to disabled)

CHAT_DAILY_COST_LIMIT_MICRODOLLARS=5000000
CHAT_WEEKLY_COST_LIMIT_MICRODOLLARS=20000000

Values are in microdollars (1 USD = 1000000). -1 disables a cap. The daily window resets at midnight UTC; the weekly window at Monday 00:00 UTC.

3.3 OAuth apps for integration blocks

Integration blocks that use OAuth need your own OAuth application credentials in backend/.env. The callback URL for every provider is:

<your_frontend_url>/auth/integrations/oauth_callback

For a default local install: http://localhost:3000/auth/integrations/oauth_callback.

Provider Variables
GitHub GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET
Google (Gmail, Sheets, Calendar, ...) GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET
Notion NOTION_CLIENT_ID, NOTION_CLIENT_SECRET
Twitter / X (OAuth 2.0 + PKCE) TWITTER_CLIENT_ID, TWITTER_CLIENT_SECRET
Linear LINEAR_CLIENT_ID, LINEAR_CLIENT_SECRET
Todoist TODOIST_CLIENT_ID, TODOIST_CLIENT_SECRET
Discord DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET
Reddit REDDIT_CLIENT_ID, REDDIT_CLIENT_SECRET

Note

Google blocks have no API-key fallback, so they are disabled until Google OAuth is configured. The appliance's prebuilt frontend cannot configure Google Picker public keys at runtime.


4. Everyday Usage

4.1 Navigating the platform

Area What you do there
Home / New Task Entry points to AutoPilot
AutoPilot (/copilot) Chat to build, edit, and run agents or run blocks directly
Agents (/library) Run agents, view tasks, schedules, triggers, templates, costs
Marketplace (/marketplace) Find, add, download, and publish agents
Build (/build) Visual canvas for agent graphs
Settings Integrations, API keys, Billing, Creator Dashboard, account

4.2 Build an agent on the canvas

The builder has a canvas, a Blocks menu on the left, and a Save button.

Block types

Type Role
Input blocks Define what the agent asks for when it runs; they become the run form fields
Action blocks Do the work — AI text/image generation, API calls, data processing, hundreds of integrations
Output blocks Define what the agent returns; they become the visible result
Trigger blocks Special input blocks that start the agent from an external webhook event

Input and output blocks define the agent's schema — the only parts a person running the agent sees.

Add and connect blocks

  1. Open the Blocks menu, browse categories or search.
  2. Click a block to place it on the canvas.
  3. Click an output pin, then an input pin (or drag between them) to draw a connection.
  4. Configure settings directly on the block — for example, choose the model on AI Text Generator, or hardcode a value on an input pin instead of connecting it.

Tip

Name your Input and Output blocks clearly. Those names become the labels users see on the run form and results.

Pin types

Type Carries
Text Strings
Number Numeric values
File Uploads and downloads
List Arrays
Boolean True/false
Object Structured data

Connections are only allowed between compatible pin types.

Save

  • Press Ctrl+S / Cmd+S, or click Save.
  • Saving creates or updates an agent graph version in your library.
  • The builder keeps a local recovery draft while you edit; a successful save clears it.

Note

Publishing to the Marketplace is a separate action from saving.

4.3 Credentials inside the builder

If a block needs a credential you have not connected, a credential bar appears on the block. Connect via OAuth, API key, or username/password depending on the service, or pick an existing compatible credential.

4.4 Run an agent

  1. Open Agents and click the agent.
  2. Click New agent task.
  3. Fill in inputs and credentials.
  4. Click Start Task.

The task runs immediately. While it runs, coloured beads slide along connection lines on the canvas to show data flowing from output pins to input pins.

4.5 View task results and cost

Where What you see
Left pane of the agent page History of every task (run)
Task detail Inputs, Outputs, and Cost (in dollars)
Agent tabs Tasks, Scheduled, Triggers, Templates with counts

4.6 Manage your library

Action How
Favorite Click the heart icon; view under the Favorites tab
Folders Create a folder, then Move to folder from an agent's menu
Edit Agent page → ⋯ → Edit Agent
Delete Agent page → ⋯ → Delete Agent (permanent)
Export Agent page → ⋯ → Export Agent to File
Import Library → Import → AutoGPT agent tab → upload the .json

Caution

Deleting an agent is permanent and cannot be undone.

4.7 Use AutoPilot

AutoPilot (/copilot) performs supported platform actions through conversation:

Capability Example request
Run agents "Run my SEO agent for the keyword espresso grinders."
Build agents "Build an agent that takes a topic, researches it, and emails me a summary."
Edit agents "Add a step that translates the output to Spanish." (user-created or duplicated agents only)
Browse the Marketplace "Find an agent that summarizes YouTube videos."
Run blocks directly Research with Perplexity, generate or edit images, generate video, run models on Replicate, make custom HTTP requests, write and execute code
Manage the library View task results, set up schedules

AutoPilot requests missing inputs or credentials before running anything.

AutoPilot Agent Builder
Audience Everyone Users comfortable with visual programming
How Describe what you want Drag, drop, connect
Builds agents Yes Yes (manually)
Edits agents User-created or duplicated editable agents Full visual editing
Block access Runs supported blocks without an agent Blocks must be wired into an agent

Tip

Be specific. "Build me an agent that takes a blog topic as input, generates an outline with Claude, then writes the full article" works far better than "make me an agent."

4.8 Use the Marketplace

  1. Open Marketplace; search or browse by category.
  2. Open an agent page (title, description, creator, video, output showcase, instructions).
  3. Click Add to Library. If you already have it, the button reads See Runs.

Marketplace agents open read-only. To change one, open it in the builder and click Duplicate to create an editable fork; your fork never modifies the listing.

For a self-hosted instance, use Download here under "Want to use this agent locally?" on the listing, then import the JSON into your library.

4.9 Templates

Templates save a completed task's inputs and selected credential references (never the secrets themselves) for reuse.

Step Action
Create Task ⋯ → Save as Template → name + description → Save
Use Templates tab → pick template → review → Start task from template

Note

A template is pinned to the graph version it came from; later edits to the agent do not update it.

4.10 Share results

  1. Open the completed task and click Share results.
  2. Review the public-access warning and click Enable Sharing.
  3. Copy the Share URL. Use Stop Sharing in the same dialog to revoke.

Warning

Anyone with a share URL can view the run's outputs. Inputs are not published, but outputs may contain sensitive data. Copying the normal (authenticated) task URL does not create a public link.

4.11 Integrations and credentials

Open Settings → Integrations (/settings/integrations) to add, review, or remove credentials centrally, or connect them in context when a block or task asks.

Credential type How you connect Examples
OAuth Authorize on the service's login page Google, GitHub, Twitter
API key Paste the key from the service dashboard Linear, OpenAI
Username & password Enter account credentials Varies

MCP services: services with an MCP badge in Settings → Integrations (also listed in Connect Service) can be connected by sign-in/token, or with No sign-in → Check connection for public tools. Some ask for your region or an official server URL; Allow changes adds a service's optional write actions.

Warning

Removing a credential can break agents, workflows, or active webhooks that reference it. Read the dependency warning before confirming.

4.12 Credits and billing (hosted Platform)

Concept Behavior
When charged When blocks run
Pricing Fixed or usage-based (tokens, provider cost, time, data size, item count)
Estimates Usage-based blocks may be estimated before execution and reconciled after
Balance Automation-credits wallet in the navigation, and Settings → Billing → Automation Credits
Out of credits Paid blocks cannot start; scheduled tasks may fail; reconciliation can leave a negative balance
Top-up Settings → Billing → Automation Credits → Add credits, or configure auto-refill

Note

Self-hosted installs run with BEHAVE_AS=local, which bypasses subscription entitlement gating. You pay model providers directly.


5. Common Workflows

5.1 Q&A agent with an AI model

Requires: a model provider key (self-hosted) or a hosted account.

  1. Add Input (name it question), AI Text Generator, and Output (name it answer).
  2. Connect Input result → AI Text Generator Prompt; AI Text Generator response → Output value.
  3. Save as "question and answer".
  4. Run with How far is Earth from Pluto?.
  5. Read the answer in Agent Outputs or via View More.

5.2 Reuse an agent as a block

Every saved agent is also available as a block in other agents.

  1. Build and save a base agent (for example Input question → AI Text Generator → Output answer, saved as "Weather Agent").
  2. In another agent, open the Blocks menu, click the agent tag or search for "Weather Agent".
  3. Add it and connect its question input and answer output like any other block.

Tip

Compose research → writing → editing → formatting agent blocks to build larger pipelines from proven parts.

5.3 Process a list item by item

Blocks can emit a whole list or each item one at a time, and some blocks iterate over an incoming list, yielding each item.

  1. Use a block that outputs a list of URLs.
  2. Feed it into an iterating block.
  3. Connect each yielded item to an AI block.
  4. Collect results in an Output block.

5.4 Robust error handling

A failing block does not stop the whole agent; it produces data on its error pin.

Choice Wiring
Surface the error Connect the error pin to an Output block
Recover Connect the error pin to fallback blocks (retry with other settings, default value, alternate path)
Ignore Leave it unconnected; downstream blocks that needed the failed output simply don't run

Tip

During development, wire error pins to Output blocks so you can see failures; add real fallbacks once the agent works.

5.5 Run an agent every weekday morning

  1. Open the agent → New agent task.
  2. Fill every input.
  3. Click Schedule Task (next to Start Task).
  4. Set Schedule Name, Repeats (e.g. Weekly), Repeats On (e.g. weekdays), At (e.g. 09:00). The timezone shown is your local timezone.
  5. Save. Manage it from the agent's Scheduled tab.

5.6 Start an agent from a webhook

  1. In Build, add a trigger block as the agent's input and connect it to your workflow. Save.
  2. In Agents, open the agent → New agent task.
  3. Enter the trigger name, description, and any required inputs or credentials; click Set up Trigger.
  4. Copy the Webhook URL from the Trigger Status panel. Its shape is:
https://<backend-host>/api/integrations/generic_webhook/webhooks/<webhook-id>/ingress
  1. Configure the external service to POST to that URL, or send a test event:
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"event":"test"}' \
  "https://<backend-host>/api/integrations/generic_webhook/webhooks/<webhook-id>/ingress"

Important

Trigger-based agents cannot be started manually — they only run when data reaches the webhook URL.

Schedule Trigger
Starts At configured times When an external event hits the webhook
Inputs Fixed when you create the schedule From the webhook payload
Setup New agent task → Schedule Task Trigger block in Build, then New agent task → Set up Trigger

5.7 React to a GitHub pull request

  1. Configure GitHub OAuth (GITHUB_CLIENT_ID / GITHUB_CLIENT_SECRET) on a self-hosted install, or use the hosted Platform.
  2. Add the GitHub pull-request trigger block and select which events should fire it.
  3. Connect its outputs (payload, sender, event, number, pull_request) to AI and notification blocks.
  4. Set up the trigger from the library; the platform registers the webhook with GitHub using your credential.

5.8 Classic AutoGPT (legacy)

The original autonomous agent still runs from classic/ (Python 3.12+, Poetry). It is unsupported, has known dependency vulnerabilities, and is intended for educational use.

git clone https://github.com/Significant-Gravitas/AutoGPT.git
cd AutoGPT/classic
poetry install
cp .env.example .env

Set OPENAI_API_KEY in .env, then:

Goal Command
Run the interactive agent CLI poetry run autogpt
Serve the Agent Protocol server poetry run serve --debug
Run the Forge agent poetry run python -m forge
Run benchmarks poetry run direct-benchmark run

Agents listen on http://localhost:8000 by default. Each agent works inside a workspace (.autogpt/ in the current directory) with layered permissions:

# .autogpt/autogpt.yaml
allow:
  - read_file({workspace}/**)
  - write_to_file({workspace}/**)
  - web_search(*)
deny:
  - read_file(**.env)
  - execute_shell(sudo:*)

Permission check order (first match wins): agent deny → workspace deny → agent allow → workspace allow → prompt you (Once, Agent, Workspace, or Deny).

5.9 Move an agent between installations

  1. Source: ⋯ → Export Agent to File.
  2. Destination: Library → Import → AutoGPT agent → upload → complete metadata → Upload.
  3. Reconnect credentials on the destination (exports never carry secrets).

5.10 Guard your model spend (self-hosted)

CHAT_DAILY_COST_LIMIT_MICRODOLLARS=5000000
CHAT_WEEKLY_COST_LIMIT_MICRODOLLARS=20000000

Once a window is exhausted, AutoPilot turns are refused with HTTP 429 until it resets. ChatGPT/Codex subscription turns and local servers (which report no cost) never count against a cap.


6. Advanced Usage

6.1 API Usage

AutoGPT exposes an External API mounted at /external-api, with interactive Swagger docs at https://backend.agpt.co/external-api/docs on the hosted Platform (and at the same path on your own backend).

Authenticate with an API key (create one under Settings → API Keys):

curl -H "X-API-Key: YOUR_API_KEY" \
  https://backend.agpt.co/external-api/v1/blocks

Or with an OAuth access token:

curl -H "Authorization: Bearer agpt_xt_..." \
  https://backend.agpt.co/external-api/v1/blocks

External API v1 endpoints

Method Path Purpose
GET /external-api/v1/me Current user (id, name, email, timezone)
GET /external-api/v1/blocks List blocks
POST /external-api/v1/blocks/{block_id}/execute Run a single block
POST /external-api/v1/graphs Create an agent graph
POST /external-api/v1/graphs/{graph_id}/execute/{graph_version} Run an agent
GET /external-api/v1/graphs/{graph_id}/executions/{graph_exec_id}/results Read run results
GET /external-api/v1/store/agents Browse store agents
GET /external-api/v1/store/agents/{username}/{agent_name} Store agent detail
GET /external-api/v1/store/creators Browse creators
GET /external-api/v1/store/creators/{username} Creator detail

Run an agent and fetch results

curl -X POST \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"node_input": {"question": "How far is the Moon?"}}' \
  https://backend.agpt.co/external-api/v1/graphs/GRAPH_ID/execute/1
{"id":"GRAPH_EXEC_ID"}

The key requires the EXECUTE_GRAPH permission. Then poll (the result includes a status field):

curl -H "X-API-Key: YOUR_API_KEY" \
  https://backend.agpt.co/external-api/v1/graphs/GRAPH_ID/executions/GRAPH_EXEC_ID/results

Note

Request/response schemas are authoritative in the Swagger UI. Check it for the exact body of each endpoint before scripting against it.

OAuth scopes

Scope Grants
IDENTITY Read user ID, e-mail, timezone
EXECUTE_GRAPH Run agents
READ_GRAPH Read agent run results
WRITE_GRAPH Create and update agent graphs
EXECUTE_BLOCK Run individual blocks
READ_BLOCK Read block definitions
READ_STORE Access the agent store
WRITE_LIBRARY Add agents to your library
USE_TOOLS Use platform tools
MANAGE_INTEGRATIONS Create and update user integrations
READ_INTEGRATIONS Read integration status
DELETE_INTEGRATIONS Remove user integrations

"Sign in with AutoGPT" / OAuth for your app (PKCE required)

  1. Redirect to:
https://platform.agpt.co/auth/authorize?client_id=CLIENT_ID&redirect_uri=https://yourapp.com/callback&scope=EXECUTE_GRAPH%20READ_GRAPH&state=RANDOM&code_challenge=CHALLENGE&code_challenge_method=S256&response_type=code
  1. Exchange the code:
curl -X POST https://backend.agpt.co/api/oauth/token \
  -H "Content-Type: application/json" \
  -d '{"grant_type":"authorization_code","code":"CODE","redirect_uri":"https://yourapp.com/callback","client_id":"CLIENT_ID","client_secret":"CLIENT_SECRET","code_verifier":"VERIFIER"}'
{"token_type":"Bearer","access_token":"agpt_xt_...","refresh_token":"agpt_rt_...","scopes":["EXECUTE_GRAPH","READ_GRAPH"], ...}
Token Lifetime
Access token (agpt_xt_...) 1 hour
Refresh token (agpt_rt_...) 30 days
Authorization code 10 minutes

Refresh with "grant_type":"refresh_token" on the same endpoint; introspect with POST /api/oauth/introspect; revoke with POST /api/oauth/revoke.

Tip

On a self-hosted install, register an OAuth client with the backend CLI: poetry run oauth-tool generate-app --name "My App" --redirect-uris "https://app.example.com/callback" --scopes "EXECUTE_GRAPH,READ_GRAPH" (run from autogpt_platform/backend). See the CLI Reference.

Integration Setup Wizard — send users to connect third-party services before your app uses them:

https://platform.agpt.co/auth/integrations/setup-wizard?client_id=CLIENT_ID&providers=BASE64_JSON&redirect_uri=https://yourapp.com/callback&state=RANDOM

where providers is Base64 of, for example, [{"provider":"github","scopes":["repo","read:user"]},{"provider":"slack"}]. The callback receives success=true or success=false.

6.2 Plugins & Extensions: custom blocks

On a self-hosted install you extend AutoGPT by adding blocks — Python classes in autogpt_platform/backend/backend/blocks/. They are auto-discovered: every .py file in the tree is imported at startup except __init__.py and files starting with test_.

Minimal block:

import uuid
from backend.blocks._base import Block, BlockOutput, BlockSchemaInput, BlockSchemaOutput
from backend.data.model import SchemaField


class ShoutBlock(Block):
    class Input(BlockSchemaInput):
        text: str = SchemaField(description="Text to shout")

    class Output(BlockSchemaOutput):
        shouted: str = SchemaField(description="Upper-cased text")

    def __init__(self):
        super().__init__(
            id="REPLACE-WITH-A-REAL-uuid4",
            description="Upper-cases its input",
            input_schema=ShoutBlock.Input,
            output_schema=ShoutBlock.Output,
            test_input={"text": "hi"},
            test_output=("shouted", "HI"),
        )

    async def run(self, input_data: Input, **kwargs) -> BlockOutput:
        yield "shouted", input_data.text.upper()

Generate the ID once and paste it in:

python -c "print(__import__('uuid').uuid4())"

Test it:

cd autogpt_platform/backend
poetry run pytest 'backend/blocks/test/test_block.py::test_available_blocks[ShoutBlock]' -xvs

Important

Never invent a block id — generate a real UUID4. Block IDs are used across users for templates, and collisions break things.

For credentials, OAuth, webhooks, file handling, error classes, and the SDK ProviderBuilder, see the Admin Guide's Plugin / Extension System section.

6.3 Webhooks

AutoGPT uses webhooks in two directions:

Direction What Where to configure
Inbound (events start agents) Generic webhook triggers and provider triggers (GitHub, Slant3D, ...) Trigger blocks in Build + Set up Trigger in the library
Inbound (chat bots) Slack, Telegram, Microsoft Teams AutoPilot bots AUTOPILOT_BOT_* env vars (see Admin Guide)

Warning

For providers with no signing scheme, the webhook URL's UUID is the only secret. Treat the URL like a password and don't paste it into public places.

6.4 AutoPilot chat bots (Discord, Slack, Telegram, Teams)

AutoPilot can answer in chat platforms once an operator configures the bot:

Platform Required variables
Discord AUTOPILOT_BOT_DISCORD_TOKEN
Slack AUTOPILOT_BOT_SLACK_TOKEN + AUTOPILOT_BOT_SLACK_SIGNING_SECRET
Telegram AUTOPILOT_BOT_TELEGRAM_TOKEN + AUTOPILOT_BOT_TELEGRAM_WEBHOOK_SECRET (and register the webhook with Telegram)
Microsoft Teams MICROSOFT_CLIENT_ID + MICROSOFT_CLIENT_SECRET + MICROSOFT_TENANT_ID

As a user: mention the bot in a channel. If your chat account isn't linked, the bot sends a Link Account prompt; use /setup to link and /unlink to disconnect. In Teams, commands must @mention the bot (for example @AutoGPT /setup) and group chats are not supported.


7. How It Works

7.1 Core terms

Term Meaning
Agent / graph A saved workflow of connected blocks, stored as JSON with version history
Block One action (AI call, API call, data transform, integration)
Node A block placed in a specific graph
Pin A typed input or output on a block
Task / execution One run of an agent
Preset / template Saved inputs and credential references for re-running
Trigger Webhook-driven agent start
Schedule Cron-like recurring run
Library Your agents (built, imported, or added from the Marketplace)
Credits Metered cost of block execution on the hosted Platform

7.2 Execution order

  1. Execution starts at every starting node: Agent Input blocks and any executable block with no inbound links.
  2. A downstream block is queued when its required inputs validate after upstream outputs and configured values are applied.
  3. Execution continues until no more blocks can be queued; conditional branches and skipped nodes mean not every block runs.
  4. Output blocks collect whatever results reach them.

A block runs only when all connected input pins have received data and all required input pins have a value (connected or hardcoded). Independent blocks may run in any order.

Concept Behavior
Starting point Input blocks and blocks with no inbound links
Ending point Output blocks
Parallelism Independent blocks can execute in any order
Errors Failed blocks emit on their error pin; you decide what happens
Lists Whole list or item by item
Visual feedback Coloured beads on connection lines

7.3 What happens when you click Start Task

Browser (Next.js :3000)
   │  REST  /api/graphs/{id}/execute/{version}
   ▼
REST server (:8006) ──► PostgreSQL (graph + execution rows)
   │  enqueue
   ▼
RabbitMQ ──► Executor (:8002) runs nodes, charges credits, resolves credentials
                 │ progress events (Redis)
                 ▼
          WebSocket server (:8001) ──► Browser (live beads + results)

Schedules come from the scheduler service, AutoPilot turns from the copilot executor, and emails/push from the notification service.

7.4 Where your data lives (self-hosted)

Data Compose location Appliance location
Accounts, agents, runs Postgres, autogpt_platform/data/db/data /data/postgres
Queue state RabbitMQ container /data/rabbitmq
Cache / realtime Redis cluster /data/valkey
Memory graph FalkorDB /data/falkordb
User workspaces backend storage /data/workspaces
Marketplace media (no GCS) local store-media/ /data/store-media

Integration credentials are encrypted with ENCRYPTION_KEY. Lose the key and stored credentials become unreadable.


8. Troubleshooting

Installation and startup

Error: ENCRYPTION_KEY is not set

Cause: backend/.env has no ENCRYPTION_KEY value (it is blank in .env.default by design). Solution: From autogpt_platform/, run make init-env, then docker compose up -d. Prevention: Always run make init-env before the first docker compose up.

Error: ENCRYPTION_KEY is set to a value that was published…

Cause: Your install still uses the key that .env.default shipped up to release v0.7.4 — a publicly known value. Solution: Follow the key-rotation upgrade: stop the stack, export the old key as OLD_ENCRYPTION_KEY, blank ENCRYPTION_KEY= and UNSUBSCRIBE_SECRET_KEY= in backend/.env (and BETTER_AUTH_SECRET= in frontend/.env), run make init-env, then:

docker compose build migrate rest_server
docker compose run --rm migrate
docker compose run --rm --no-deps -e OLD_ENCRYPTION_KEY rest_server cli rotate-encryption-key
docker compose run --rm --no-deps -e OLD_ENCRYPTION_KEY rest_server cli rotate-encryption-key --apply

Prevention: Never copy secrets from .env.default.

Error: the specified Containerfile or Dockerfile does not exist, ..\..\autogpt_platform\backend\Dockerfile

Cause: You are using Podman / podman-compose. Solution: Install Docker Desktop (or Docker Engine) and use docker compose. Prevention: Podman is not supported.

Error: db container is unhealthy on Windows

Cause: Docker Desktop is using Hyper-V. Solution: Enable Use the WSL 2 based engine in Docker Desktop → Settings → General, restart Docker. Prevention: Choose WSL 2 when installing Docker on Windows.

Error: JWT_JWKS_URL fetches keys over cleartext http:// from a non-local host (...)

Cause: Backend and frontend are on different machines and the JWKS URL uses http://. Solution: Put the frontend behind TLS and set JWT_JWKS_URL=https://<frontend>/api/auth/jwks. On a genuinely trusted network you may set JWKS_ALLOW_INSECURE_TRANSPORT=true (a startup warning is logged). Prevention: Keep backend and frontend on one Docker network, or use HTTPS.

Error: JWT_JWKS_URL must be set to the JWKS endpoint of the platform auth service ...

Cause: JWT_JWKS_URL is empty. Solution: Set it in backend/.env, e.g. JWT_JWKS_URL=http://localhost:3000/api/auth/jwks for a local run.

Error: Invalid JWT_JWKS_URL: '...'. Must be an http:// or https:// URL.

Cause: Malformed URL. Solution: Use a full http:// or https:// URL ending in /api/auth/jwks.

Error: Invalid JWT_JWKS_ALGORITHMS entry: '...'. JWKS verification only supports asymmetric algorithms.

Cause: A symmetric algorithm such as HS256 was listed. Solution: Use the default ES256,RS256,EdDSA or a subset of asymmetric algorithms.

Nobody can reach the backend after changing BETTER_AUTH_SECRET

Cause: The frontend's stored token-signing key was encrypted under the old secret. Solution:

docker compose up -d --wait db
docker compose exec db psql -U postgres -c 'DELETE FROM platform."UserAuthJwks";'
docker compose up -d --build

A new key is created on the next sign-in; everyone signs in once.

Integrations show as disconnected / revoked after an upgrade

Cause: The stack started on a new ENCRYPTION_KEY before stored credentials were re-encrypted. Solution: Stop the stack and run cli rotate-encryption-key --apply with OLD_ENCRYPTION_KEY. Untouched credentials are recovered; ones a user replaced in between stay revoked and must be reconnected.

Old Supabase database fails to start after moving the data directory

Symptoms: restart loop with could not open configuration file, could not access file "$libdir/…", unrecognized configuration parameter, extension "…" is not available, data directory … has wrong ownership, or Permission denied. Cause: The plain pgvector/pgvector:pg15 image lacks Supabase extensions/roles, or file ownership is wrong. Solution: rm -rf data/db/data and use the dump-and-restore fallback (pg_dump --no-owner --no-privileges from supabase/postgres:15.8.1.049, then pg_restore into the new db, after DROP SCHEMA IF EXISTS auth CASCADE;). Prevention: Back up autogpt_platform/db/docker/volumes/db/data before upgrading.

Upgraded Supabase install shows zero users

Cause: pg_restore failed on auth.users, or the fresh auth.users shim collided with the restore. Solution: Check select count(*) from auth.users. If 0, drop the auth schema and restore again before running docker compose run --rm migrate.

prisma generate targets the global Python instead of the virtualenv

Solution: pip uninstall prisma, then poetry run prisma generate again.

Single-container appliance

The browser cannot connect after docker run --rm "${IMAGE}"

Cause: A bare run publishes no port. Solution: Use the full Quick start command with --publish 127.0.0.1:3000:3000.

Port 3300 opens but sign-in and other auth actions fail

Cause: AUTOGPT_PUBLIC_URL doesn't match the browser origin. Solution: Use --publish 127.0.0.1:3300:3000 and AUTOGPT_PUBLIC_URL=http://localhost:3300, then replace the container.

Signup shows Email Not Allowed

Cause: Registration is closed or your address isn't on the allowlist. Solution: Set AUTH_ALLOW_NEW_ACCOUNTS=true and an exact AUTH_SIGNUP_ALLOWLIST=[email removed], replace the container, sign up, then close signup again.

Container stays starting or becomes unhealthy

Solution: First boot can take several minutes. Run docker exec autogpt autogpt-healthcheck and read docker logs --tail 100 autogpt for the first failed service.

Container is OOM-killed or restarts repeatedly during startup

Cause: The appliance uses about 5–6 GiB before workload headroom. Solution: Raise Docker Desktop's VM memory (Settings → Resources) or host memory.

Startup refuses to continue after an interrupted migration

Solution: Empty new install — stop, remove the container and its unused volume, start over. Existing install — restore the pre-upgrade backup. Only use prisma migrate resolve after confirming what the migration changed.

Error: DB_CONNECTION_LIMIT / DB_CONNECT_TIMEOUT / DB_POOL_TIMEOUT rejected

Solution: Use integers in range: 1–5, 1–600, 1–3600 respectively.

Startup rejects legacy JWT secrets

Solution: For a fresh install remove JWT_VERIFY_KEY and SUPABASE_JWT_SECRET. Only for an intentional legacy migration set AUTOGPT_ENABLE_LEGACY_AUTH=true and both secrets to the same value of at least 32 characters.

Error: AUTOGPT_PUBLIC_URL must use http or https

Also: must include a host, must not include credentials, must be an origin without path, query, or fragment, has an invalid port, has an invalid host. Solution: Use a bare origin like https://agents.example.com or http://localhost:3300.

Error: <NAME> differs from the value persisted on first boot; restore the original value or start with a new data volume

Cause: You supplied a different value for a secret generated on first boot and stored in /data/config/runtime.env. Solution: Remove the override (or restore the original). There is no in-place rotation of generated appliance secrets.

Error: RABBITMQ_DEFAULT_USER may not use the built-in guest account

Solution: Choose a different RabbitMQ username (and avoid unsupported characters).

Error: VAPID_PRIVATE_KEY and VAPID_PUBLIC_KEY must be set together

Solution: Set both or neither. The private key must decode to exactly 32 bytes; the public key must be an uncompressed P-256 key.

Error: ENCRYPTION_KEY must be a Fernet-compatible key

Solution: Generate one with poetry run cli gen-encrypt-key or from cryptography.fernet import Fernet; Fernet.generate_key().decode().

A run stays RUNNING after a restart

Cause: The container stopped mid-run; the queue message was dropped and the row not reconciled. Solution: Start a new run. In-flight runs never resume.

Requests stall for minutes under concurrent runs

Cause: Prisma connection-pool exhaustion (max 5 per backend role in the appliance). Solution: Reduce concurrency or move to a distributed deployment. Lowering DB_POOL_TIMEOUT only fails faster.

Data appears missing after replacing the container

Cause: The new container uses a different or anonymous /data volume. Solution: Inspect the mount and reattach the original named volume:

docker inspect --format '{{range .Mounts}}{{if eq .Destination "/data"}}{{.Name}}{{end}}{{end}}' autogpt

The container exits after a persistent health failure

Cause: The watchdog allows 600 s for initial health, then stops the container on purpose. Solution: Keep --restart unless-stopped so Docker retries; fix the failing service shown in the logs.

AutoPilot and models

AutoPilot returns a provider 401

Solution: Configure the key for the selected transport — the default remote route needs OPEN_ROUTER_API_KEY; full remote memory also needs OPENAI_API_KEY.

AutoPilot returns HTTP 429

Cause: Daily or weekly spend cap reached. Solution: Wait for reset (midnight UTC daily, Monday 00:00 UTC weekly) or raise CHAT_DAILY_COST_LIMIT_MICRODOLLARS / CHAT_WEEKLY_COST_LIMIT_MICRODOLLARS.

Local chat works but memory ingestion fails

Solution: Install the embedding model and confirm its /v1/embeddings endpoint works. If your server lacks the default slugs, set GRAPHITI_LLM_MODEL, GRAPHITI_RERANKER_MODEL, and GRAPHITI_EMBEDDER_MODEL.

Ollama cannot be reached from AutoGPT

Solution: On Docker Engine add --add-host host.docker.internal:host-gateway; make Ollama listen on an address Docker can reach; test with:

docker exec autogpt curl --fail --show-error http://host.docker.internal:11434/api/tags

AutoPilot answers are cut off or ignore instructions with a local model

Cause: Ollama's default context is too small for the ~8k-token system prompt. Solution: Set OLLAMA_CONTEXT_LENGTH=32768 on the Ollama server and restart it.

AI blocks fail with a missing-credential error

Solution: Add the provider key to backend/.env (self-hosted) and restart, or connect the credential from the block.

Agents, schedules and triggers

A trigger-based agent has no Start Task option

Cause: Trigger agents cannot be started manually. Solution: Use New agent task → Set up Trigger, then send data to the webhook URL.

I can't edit a Marketplace agent

Cause: Marketplace agents are read-only. Solution: Open it in the builder and click Duplicate.

A block shows a broken image in the Blocks menu

Cause: The provider's icon PNG is missing from frontend/public/integrations/{provider_name}.png. Solution: Add the icon (developers) — it doesn't affect execution.

Scheduled task failed with insufficient balance

Solution: Add credits or enable auto-refill under Settings → Billing → Automation Credits.

A schedule keeps firing after its workflow was removed from an expert

Cause: Known open issue (#14607): nothing at execution time checks expert-workflow membership. Solution: Delete the schedule from the agent's Scheduled tab.

Error: Invalid cron expression format.

Solution: Use the schedule form's controls rather than a hand-typed cron string; check each field.

Error: Authentication error — please sign in again.

Cause: Your session expired during an upload. Solution: Sign in again and retry.

Removing a credential broke an agent

Solution: Reconnect a compatible credential in the block or task, or restore it in Settings → Integrations.

Template ignores my latest agent changes

Cause: Templates are pinned to the graph version they were created from. Solution: Create a new template from a task run on the current version.

Chat bots

/setup fails with an httpx.ConnectError (local Docker)

Cause: platform_linking_manager isn't running. Solution: docker compose up -d platform_linking_manager or docker compose --profile bot up -d.

The Telegram bot ignores @mentions in groups

Solution: Disable group privacy mode via BotFather /setprivacy.

The Teams bot ignores /setup in a channel

Solution: @mention it: @AutoGPT /setup. Group chats are not supported at all.

API and OAuth

OAuth error invalid_client

Solution: Verify the client ID and that the app is active.

OAuth error invalid_redirect_uri

Solution: Register the exact redirect URI with the platform admin.

OAuth error invalid_scope

Solution: Request only scopes allowed for your app.

OAuth error invalid_grant

Cause: Code expired (10 minutes) or already used. Solution: Restart the authorization flow.

API returns 401 / 403

Solution: 401 = invalid or expired token/key (refresh or regenerate); 403 = missing scope.

Classic AutoGPT

Error: --continuous-limit can only be used with --continuous

Solution: Add -c, e.g. poetry run autogpt run -c -l 5.

Error: OpenAI is unavailable: invalid API key

Also ... can't load credentials, and the same for Anthropic and Groq. Solution: Set a valid OPENAI_API_KEY (or ANTHROPIC_API_KEY / GROQ_API_KEY) in classic/.env.

Error: The agent failed to output valid thoughts N times in a row.

Cause: The model repeatedly returned unparseable output. Solution: Use a stronger SMART_LLM, simplify the task, or check provider errors in the logs.

Error: Access to internal/private addresses is restricted

Cause: Forge's URL validator blocks private/internal addresses (also: Access to local files is restricted, URL is too long, Invalid URL format: URL must start with http:// or https://). Solution: Use a public http(s) URL.


9. FAQ

Q: What is the difference between the AutoGPT Platform and AutoGPT Classic?

The Platform (autogpt_platform/) is the current product: a web app for building and running block-based agents. Classic (classic/) is the original 2023 autonomous agent; it is unsupported and kept for education.

Q: Is self-hosting free?

Yes. There is no license fee; you pay for your infrastructure and model providers. The hosted Platform is a paid service with usage-based runs.

Q: What license does AutoGPT use?

autogpt_platform/ is under the Polyform Shield license (free for personal and internal business use; you may not sell it as a competing hosted service). classic/ and everything else is MIT.

Q: Do I need an API key to try it?

Not on the hosted Platform. Self-hosted, you can boot, sign up, build, and run provider-free blocks (like Calculator) without keys; AI blocks and AutoPilot need a provider.

Q: Which model providers are supported?

OpenAI, Anthropic, Groq, Llama API, AI/ML API, OpenRouter, NVIDIA, and local OpenAI-compatible servers (Ollama, vLLM, LocalAI, LM Studio, LiteLLM) for AutoPilot. The exact model list ships in backend/data/llm_registry/catalog.py.

Q: Can I run everything offline with a local LLM?

The from-source setup supports a fully offline install with a local LLM. Set CHAT_USE_LOCAL=true and point CHAT_BASE_URL at your server.

Q: Which ports does the Compose stack use?

UI 3000, REST 8006, WebSocket 8001, plus internal services (see Default ports).

Q: Which port does the single container use?

Only 3000 inside the container. Publish it to loopback (127.0.0.1:3000:3000) and put a TLS reverse proxy in front for remote access.

Q: Can I change the host port of the appliance?

Yes: --publish 127.0.0.1:3300:3000 plus AUTOGPT_PUBLIC_URL=http://localhost:3300.

Q: Does the appliance support Windows?

Windows users should use the manual (from-source) guide for now.

Q: Is Podman supported?

No. Use Docker.

Q: How much memory does the appliance need?

More than the measured 5–6 GiB, plus headroom for agents, local models, and growth. There is no measured minimum CPU count.

Q: How do I become an administrator on the appliance?

Sign up, then run docker exec autogpt autogpt-admin promote [email removed], and sign out and back in.

Q: How do I stop strangers from creating accounts?

Set AUTH_SIGNUP_ALLOWLIST to exact emails during bootstrap, then AUTH_ALLOW_NEW_ACCOUNTS=false.

Q: Can I allow a whole email domain?

Yes, with an entry starting with @ (e.g. @example.com). Only use domains you fully control — never public domains like @gmail.com.

Q: Is email verification supported?

Not in the appliance; enabling AUTH_REQUIRE_EMAIL_VERIFICATION stops startup. Keep it false.

Q: How do I reset a forgotten password?

Only through Postmark-powered password reset. Without Postmark, create a replacement administrator using the add-administrator procedure; the old password cannot be reset.

Q: Why are my social-login buttons missing on the appliance?

The bundled local-mode frontend doesn't render them, even if AUTH_*_CLIENT_ID/SECRET are set.

Q: What does make init-env actually generate?

ENCRYPTION_KEY, UNSUBSCRIBE_SECRET_KEY, and BETTER_AUTH_SECRET (plus any other secret listed in SECRET_GENERATORS), only where the line exists and is empty.

Q: Can I re-run make init-env?

Yes; it never overwrites existing files or values.

Q: What happens if I lose ENCRYPTION_KEY?

Stored integration credentials become unreadable and must be reconnected.

Q: How do I rotate ENCRYPTION_KEY?

Set the new key, export the old one as OLD_ENCRYPTION_KEY, run cli rotate-encryption-key (dry run), then with --apply.

Q: What is a block?

A single action with typed input and output pins — AI call, API call, data transform, or integration.

Q: How many blocks are there?

Hundreds, across 45+ connected platforms.

Q: What's the difference between an input block and a trigger block?

An input block collects values when you start a task manually; a trigger block starts the agent when a webhook event arrives.

Q: Does a failed block stop my agent?

No. It emits on its error pin; blocks that needed its normal output don't run.

Q: In what order do blocks run?

Whenever their required inputs are satisfied; independent blocks may run in any order.

Q: Can I use an agent inside another agent?

Yes — saved agents appear as blocks in the Blocks menu.

Q: How do I save in the builder?

Ctrl+S / Cmd+S or the Save button. Each save is a new version.

Q: Will I lose work if my browser crashes mid-edit?

The builder keeps a local recovery draft until the next successful save.

Q: How do I run an agent on a schedule?

New agent task → Schedule Task, then set name, repeat, days, and time.

Q: What timezone do schedules use?

Your local timezone, shown on the schedule form.

Q: Why can't I start my trigger agent manually?

By design; trigger agents run only from webhook events.

Q: How do I share a result publicly?

Share results → Enable Sharing, then copy the Share URL. Stop Sharing revokes it.

Q: Does sharing expose my inputs?

No, only outputs — which may still be sensitive.

Q: How do I move an agent to another account or server?

Export Agent to File then Import on the other side; reconnect credentials.

Q: Do exports include my API keys?

No. Templates and exports store credential references, never secrets.

Q: Can I edit a Marketplace agent?

Duplicate it first; your fork is editable and independent.

Q: How do I publish to the Marketplace?

From the builder (Publish to Marketplace) or Settings → Creator Dashboard → Publish Agent; fill title, subheader, slug, images, optional video and output demo, category, description, instructions, recommended schedule; click Submit for review. The AutoGPT team reviews it.

Q: How are hosted runs billed?

In automation credits when blocks run; some blocks are fixed-price, others usage-based and reconciled after running.

Q: Where do I see what a run cost?

In the task detail header (Cost) and under Settings → Billing → Automation Credits.

Q: Can my balance go negative?

Yes, if reconciliation for a usage-based block that already ran exceeds the balance.

Q: Do self-hosted installs use credits?

With BEHAVE_AS=local (the appliance default) entitlement gating is bypassed; you pay providers directly.

Q: How do I call AutoGPT from my own code?

Use the External API at /external-api/v1/... with an X-API-Key header or an OAuth bearer token.

Q: Where is the full API reference?

The Swagger UI at /external-api/docs on the backend (hosted: https://backend.agpt.co/external-api/docs).

Q: Is PKCE optional for OAuth?

No, PKCE with S256 is required for every authorization request.

Q: How long do OAuth tokens last?

Access 1 hour, refresh 30 days, authorization code 10 minutes.

Q: Can I use AutoGPT as a "Sign in with" provider?

Yes, request the IDENTITY scope and call GET /external-api/v1/me.

Q: Can AutoPilot talk to me in Slack or Discord?

Yes, once an operator configures the bot; link your account with /setup.

Q: Does AutoPilot remember things between chats?

Memory uses Graphiti on FalkorDB and requires a working model profile (and embeddings).

Q: Are uploaded files virus-scanned?

The Compose stack runs ClamAV. The single-container appliance bundles no antivirus — treat uploads as trusted input there.

Q: How do I back up the appliance?

Use the documented cold-backup block, which stops the container, tars /data (excluding ./cache), and writes a SHA-256 checksum. There is no supported hot backup.

Q: What happens to runs when I stop the container?

In-flight runs are abandoned and do not resume; start new runs after restart.

Q: Can I downgrade the appliance?

Only by running the prior image against its matching pre-upgrade backup restored into a new volume. Never run an older image on a volume migrated by a newer one.

Q: Can I turn the appliance into a multi-tenant hosted service?

No. The bundled frontend is compiled in local mode; BEHAVE_AS=cloud alone is not a complete hosted switch.

Q: Is Classic AutoGPT still maintained?

No. It's unsupported, has known dependency vulnerabilities, and will not be updated.

Q: What Python version does Classic need?

Python 3.12+ with Poetry.

Q: Where does a Classic agent keep its files?

In .autogpt/agents/AutoGPT-{agent_id}/ inside the workspace, with file access sandboxed to its workspace/ subdirectory.

Q: Where do I get help?

Discord (discord.gg/autogpt), docs at docs.agpt.co, and GitHub Issues.


10. Reference

10.1 CLI Reference

Make targets (autogpt_platform/)

Command What it does
make init-env Create missing .env files and generate blank secrets
make start-core docker compose up -d deps (Postgres, Redis, RabbitMQ)
make stop-core docker compose stop
make logs-core Tail core-service logs
make reset-db Stop db, delete data/db/data, re-run migrations and Prisma generate
make migrate prisma migrate deploy + prisma generate + gen-prisma-stub
make run-backend cd backend && poetry run app
make run-frontend cd frontend && pnpm dev
make format Backend poetry run format; frontend pnpm format and pnpm lint
make test-data Run the test data creator
make load-store-agents Load store agents from the agents/ folder into the test DB
make help List targets

Caution

make reset-db deletes data/db/data — all accounts, agents, and run history.

Backend Poetry scripts (autogpt_platform/backend)

Command Starts / does
poetry run app All backend services together
poetry run rest REST API server
poetry run ws WebSocket server
poetry run executor Graph executor
poetry run copilot-executor AutoPilot executor
poetry run batch-executor Batch executor
poetry run scheduler Scheduler
poetry run notification Notification service
poetry run db Database manager service
poetry run platform-linking-manager Chat-bot account linking service
poetry run copilot-bot AutoPilot chat bot (standalone)
poetry run cli ... Admin CLI (see below)
poetry run oauth-tool ... OAuth app tooling (see below)
poetry run export-api-schema Write the OpenAPI JSON
poetry run format / lint / test Code quality and tests
poetry run load-store-agents Seed store agents
poetry run analytics-setup / analytics-views Analytics views
poetry run gen-prisma-stub Regenerate Prisma type stubs

poetry run cli — backend admin CLI

Command Options Purpose
cli start — Start the backend
cli stop — Stop the backend
cli gen-encrypt-key — Print a new Fernet ENCRYPTION_KEY
cli rotate-encryption-key --old-key (or env OLD_ENCRYPTION_KEY), --apply Re-encrypt stored credentials under the current key; dry run without --apply
cli chat list --user, --limit/-n (default 20) List AutoPilot chat sessions
cli chat view SESSION_ID [SEQ_RANGE] --full/-f, --json, --limit/-n Show a chat session (range forms 7, 6-10, 6-, -10)
cli store backfill-categories --apply, --limit, --concurrency (default 5) Classify store listings into categories
cli test reddit SERVER_ADDRESS — Test helper
cli test populate-db SERVER_ADDRESS — Populate test data
cli test graph SERVER_ADDRESS — Create a test graph
cli test execute GRAPH_ID CONTENT — Execute a graph
cli test event — Send a test event
cli test websocket SERVER_ADDRESS GRAPH_EXEC_ID — Watch execution over WebSocket

In Docker, prefix with docker compose run --rm rest_server, e.g. docker compose run --rm --no-deps rest_server cli gen-encrypt-key.

poetry run oauth-tool

Command Options
generate-app --name, --description, --redirect-uris (comma-separated), --scopes (comma-separated, e.g. EXECUTE_GRAPH,READ_GRAPH), --grant-types (default authorization_code,refresh_token)
hash-secret SECRET Hash a client secret
validate-secret SECRET HASH SALT Validate a secret against a hash
test-server --owner-id, --port, --platform-url (default http://localhost:3000), --backend-url (default http://localhost:8006)

Single-container appliance commands

Command Purpose
docker exec autogpt autogpt-admin promote EMAIL Grant administrator role
docker exec autogpt autogpt-healthcheck Check every bundled service
docker exec autogpt supervisorctl status Show supervised processes (e.g. runtime:rest, state:postgres)
python3 single-container/runtime_config.py fill-env --path FILE [--missing-ok] Fill blank secrets in an env file

Classic: poetry run autogpt (from classic/)

Command / option Purpose
autogpt run Run the interactive agent
-c, --continuous Continuous mode (no approval between steps)
-l, --continuous-limit Max iterations in continuous mode (requires -c)
--speak Speak mode
--install-plugin-deps Install third-party plugin dependencies
--skip-news Suppress startup news
-y, --skip-reprompt Skip re-prompting at start
--ai-name, --ai-role Override AI name/role
--constraint, --resource, --best-practice Add directives (repeatable)
--override-directives Replace instead of append directives
--debug Implies --log-level=DEBUG --log-format=debug
--log-level, --log-format, --log-file-format Logging controls (structured_google_cloud disables file logs)
--component-config-file JSON component configuration
-w, --workspace Workspace directory (default: current directory)
autogpt serve Agent Protocol server; takes --install-plugin-deps, --debug, logging options, -w
autogpt config -e/--env-file (default ~/.autogpt/.env)

Classic: poetry run direct-benchmark

Command Key options
run -s/--strategies (default one_shot), -m/--models, -c/--categories, -S/--skip-category, -t/--tests, -N/--attempts (1), -p/--parallel (4), --timeout (300), --cutoff, --no-cutoff, --max-steps (50), --maintain, --improve, --explore, --no-dep, --workspace, --challenges-dir, --reports-dir, --keep-answers, -q, -v, --json, --ci, --fresh, --retry-failures, --reset-strategy, --reset-model, --reset-challenge, --debug, -b/--benchmark (gaia, swe-bench, agent-bench), --benchmark-split (validation), --benchmark-subset, --benchmark-limit, --benchmark-cache-dir
list-challenges --challenges-dir
list-models —
list-strategies —
list-benchmarks —
state show / state clear --reports-dir
state reset -s/--strategy, -m/--model, -c/--challenge, --reports-dir

10.2 Configuration Quick Reference

Setting File Default / example Notes
ENCRYPTION_KEY backend blank → generated Required; Fernet key
UNSUBSCRIBE_SECRET_KEY backend blank → generated Email unsubscribe links
BETTER_AUTH_SECRET frontend blank → generated Session signing
DATABASE_URL backend, frontend postgresql://postgres:...@localhost:5432/postgres?schema=platform... Frontend auth uses it too
DB_SCHEMA / AUTH_DB_SCHEMA backend / frontend platform
REDIS_HOST / REDIS_PORT backend localhost / 17000
JWT_JWKS_URL backend http://localhost:3000/api/auth/jwks HTTPS over untrusted networks
FRONTEND_BASE_URL backend http://localhost:3000
PLATFORM_BASE_URL backend http://localhost:8006 Webhooks + OAuth
NEXT_PUBLIC_AGPT_SERVER_URL frontend http://localhost:8006/api
NEXT_PUBLIC_AGPT_WS_SERVER_URL frontend ws://localhost:8001/ws
NEXT_PUBLIC_FRONTEND_BASE_URL frontend http://localhost:3000
AUTOGPT_PUBLIC_URL appliance http://localhost:3000 Exact browser origin
AUTH_SIGNUP_ALLOWLIST appliance / frontend empty (open) Emails or @domain
AUTH_ALLOW_NEW_ACCOUNTS appliance / frontend open false closes signup
CHAT_USE_LOCAL backend / appliance false Local OpenAI-compatible AutoPilot
CHAT_BASE_URL / CHAT_API_KEY backend / appliance empty Required for local profile
CHAT_DAILY_COST_LIMIT_MICRODOLLARS appliance -1 (off) Microdollars
CHAT_WEEKLY_COST_LIMIT_MICRODOLLARS appliance -1 (off) Microdollars
DB_CONNECTION_LIMIT backend / appliance 12 (Compose default file); appliance range 1–5, default 5
DB_CONNECT_TIMEOUT backend / appliance 60 Appliance range 1–600
DB_POOL_TIMEOUT backend / appliance 300 Appliance range 1–3600
BEHAVE_AS appliance local cloud for backend entitlement enforcement
AUTOGPT_ENABLE_BOT_SERVICES appliance false Enables chat-bot processes
POSTMARK_* backend / appliance empty Password reset emails

The complete reference — every variable, service, and default — is in the Admin Guide.