Build, deploy, and manage serverless WebAssembly applications on Gcore FastEdge from Claude Code, Codex, or Cursor.
FastEdge runs Wasm workloads on 210+ global edge Points of Presence with sub-millisecond cold starts. The plugins in this repository let AI coding agents scaffold projects, deploy apps, and manage edge infrastructure through natural language.
Option 1: Install from GitHub (recommended)
From inside Claude Code, add the Gcore marketplace and install the plugin:
/plugin marketplace add G-Core/gcore-marketplace
/plugin install gcore-fastedge@gcore-marketplace
This persists across sessions. To pick up new versions later, run /plugin marketplace update gcore-marketplace.
Option 2: Install from a local clone (for development or air-gapped use)
Clone the repo first:
git clone https://github.com/G-Core/fastedge-plugin.gitThen either install persistently from the local path:
/plugin marketplace add /path/to/fastedge-plugin
/plugin install gcore-fastedge@gcore-fastedge-marketplace
Or load it for a single session by restarting Claude Code:
claude --plugin-dir /path/to/fastedge-pluginOption 1: Install from GitHub (recommended)
codex plugin marketplace add G-Core/gcore-marketplace
codex plugin add gcore-fastedge@gcore-marketplaceOption 2: Install from a local clone (for development or air-gapped use)
Clone the repo (the same repository hosts all runtime targets):
git clone https://github.com/G-Core/fastedge-plugin.gitAdd the Codex marketplace and install:
codex plugin marketplace add /path/to/fastedge-plugin
codex plugin add gcore-fastedge@gcore-fastedge-codex-marketplaceSee docs/codex-quickstart.md for full Codex setup details.
Add this repository as a personal Cursor marketplace:
agent plugin marketplace add https://github.com/G-Core/fastedge-plugin.gitThen run agent, enter /plugin, open the Marketplace tab, and install
Gcore FastEdge at user or project scope. Cursor currently performs plugin
installation interactively; the CLI command above registers the marketplace.
To refresh or remove the marketplace later:
agent plugin marketplace update gcore-fastedge-marketplace
agent plugin marketplace remove gcore-fastedge-marketplaceSee docs/cursor-quickstart.md for credential setup, team marketplace installation, and troubleshooting.
The plugins run build, deploy, and management operations through the FastEdge MCP server — a Docker image that ships the toolchains (Rust, Node, wasm targets) and FastEdge API client. Installing a plugin auto-loads its bundled MCP configuration, which launches the server on demand.
You need:
- Docker running locally — required to start the MCP server.
- Gcore API key — set as
GCORE_API_KEY(see below), or sign in through the portal instead (see No API key?).
Local-only mode (no Docker, no MCP) is available as an explicit opt-out for developers who prefer their own toolchain. See Running without the MCP server below.
- Go to the Gcore Portal
- Navigate to Profile → API Keys (or visit
portal.gcore.com/api-keysdirectly) - Click Create API Key, give it a name, and copy the generated key
- Give the key to the agent from outside your project folder: the MCP server mounts the project folder into its container, where your project's own build scripts (npm, cargo) can read every file in it. Either export it in the shell that starts the agent:
export GCORE_API_KEY="your-api-key"or, for Claude Code, add it to your user settings, ~/.claude/settings.json:
{
"env": {
"GCORE_API_KEY": "your-api-key"
}
}Add "GCORE_API_BASE" only for a key from a non-prod environment.
Don't put a key in .claude/settings.local.json, a .env or a .envrc in the project: those files are
inside the mounted folder. Managing a key's security is up to you; portal sign-in (see
No API key?) needs no key at all.
String literals only — no variable interpolation.
Values in an
envblock are passed through verbatim. Writing"GCORE_API_KEY": "${MY_SECRET}"will send the literal seven-character string${MY_SECRET}to the MCP server, not the value ofMY_SECRET. The same applies to forms like$MY_SECRETor~.If you want the value to come from a shell variable rather than be written into the file, the shell variable must already be named
GCORE_API_KEYorGCORE_API_BASE— and in that case, omit theenvblock entirely. The plugin's.mcp.jsonalready passesGCORE_API_KEYandGCORE_API_BASEfrom the parent shell environment into the container, so anexportis sufficient on its own.
Codex does not auto-load .env files, and — unlike Claude Code — you cannot pin credentials in .codex/config.toml for a plugin-provided MCP server. The bundled .mcp.json owns how the server launches (its transport), and Codex's config schema only lets user/project config set policy for a plugin server (e.g. enabled, startup_timeout_sec, tool toggles), not transport keys like env. Adding an env block under [plugins."…".mcp_servers.fastedge-assistant] is rejected with Additional properties are not allowed ('env' was unexpected) and silently ignored.
Instead, credentials reach the server through the host environment. The bundled .mcp.json declares env_vars = ["GCORE_API_KEY", "GCORE_API_BASE", "FASTEDGE_SESSION"], which tells Codex to forward those host variables into the server container. So set them in the shell you launch codex from:
export GCORE_API_KEY="your-api-key"
# export GCORE_API_BASE="https://api.preprod.world" # only for a non-prod environment
codexAn export in your shell rc gives you a personal default across all projects.
Whatever value is in the shell when you launch
codexis the value forwarded to the server. If a staleGCORE_API_KEYis exported in your rc, it will shadow everything else — unset or fix it there.
Cursor CLI inherits GCORE_API_KEY from the shell that launches it. The macOS
GUI does not normally inherit variables exported from .zshrc, so set the key
in the GUI session and restart Cursor:
launchctl setenv GCORE_API_KEY "your-api-key"Set GCORE_API_BASE only for a non-prod environment, with a key from that environment. Leave it unset
otherwise: the server then uses prod, or the environment you saved when signing in through the portal.
The Cursor plugin forwards these variables by name to the MCP Docker container; the key is not stored in the plugin or marketplace manifest.
No API key? Leave GCORE_API_KEY unset. The first API call then offers to sign you in through
the Gcore portal: you approve in your browser, and the MCP server gets a time-limited API token
(8 hours by default, 7 days at most). The server's token broker holds it; the agent never sees it.
The token is cached as plaintext in the fastedge-session Docker volume until it expires. Inside
the container only the token broker can read it, but anyone who can run Docker containers on this
machine can read it too. To keep this sign-in's token unusable on disk instead, choose Only for
this MCP server session on the page: the token is then encrypted to the running MCP server and you
approve again the next time it starts. A session saved earlier with "Keep me signed in" stays usable
until it expires or you sign out (login --logout). A key, when set, takes precedence. It can't be
combined with FASTEDGE_SESSION=ephemeral: the server then refuses to start.
In Codex, the sign-in runs a docker run … login command, which may need your approval to run outside the sandbox; if it can't run there, run the command it shows in your own terminal.
Set GCORE_API_BASE (via any of the methods above) to override the API host (default: https://api.gcore.com; preprod: https://api.preprod.world). The MCP server appends /fastedge/v1 itself. When set, it
also overrides the environment saved by portal sign-in (login --set-default-origin).
If you decline to run Docker, the deploy and manage skills can fall back to your local toolchain (fastedge-build, cargo, asc) and direct REST calls to api.gcore.com. This path is supported but not the default — you'll get a warning each session and you're responsible for keeping toolchains current.
The three plugins share the same skill set but use different invocation styles:
| CLI | Prefix | Example |
|---|---|---|
| Claude Code | /gcore-fastedge: |
/gcore-fastedge:deploy |
| Codex | $gcore-fastedge: |
$gcore-fastedge:deploy |
| Cursor | / |
/deploy |
| Skill | Claude Code command | Description |
|---|---|---|
| Scaffold | /gcore-fastedge:scaffold [http|cdn] [name] [description] |
Blueprint-driven project creation from SDK examples (HTTP and CDN) |
| Deploy | /gcore-fastedge:deploy [app-name] |
Build, test, and deploy a Wasm app to FastEdge via the MCP server |
| Manage | /gcore-fastedge:manage [list|get|update|delete|secrets|sync-env] [app-id] |
Inspect apps, manage secrets, and sync .env files to deployed apps |
| Test | /gcore-fastedge:test |
Generate and run test suites using @gcoredev/fastedge-test (CI-friendly) |
| Debug | /gcore-fastedge:debug |
Generate scenario fixtures for the visual debugger |
| Live-test | /gcore-fastedge:live-test |
Build, deploy, and run scenario fixtures against the live edge |
| Docs | Auto-invoked | FastEdge platform docs, SDK reference, and best practices |
Replace /gcore-fastedge: with $gcore-fastedge: for Codex. In Cursor, invoke
the corresponding skill as /scaffold, /deploy, /manage, /test, /debug,
or /live-test, or ask the agent naturally.
Ask your coding agent naturally:
- "Scaffold a new HTTP app called my-api" — creates a TypeScript project from SDK blueprints
- "Deploy this app to FastEdge" — builds the Wasm binary and deploys it to the edge
- "List my FastEdge apps" — shows all your deployed apps with status and URLs
- "How does the FastEdge KV store work?" — pulls up SDK reference docs inline
fastedge-plugin/
├── .claude-plugin/
│ ├── marketplace.json # Claude Code marketplace descriptor
│ └── plugin.json
├── .cursor-plugin/
│ └── marketplace.json # Cursor marketplace descriptor
└── plugins/
├── gcore-fastedge/ # Claude Code plugin
│ ├── .claude-plugin/plugin.json
│ ├── .mcp.json # Launches the FastEdge MCP server (Docker)
│ ├── CLAUDE.md # Shared knowledge base (API, SDK, auth, builds)
│ ├── docs-index.json # Pre-built docs search index
│ └── skills/
│ ├── scaffold/ # Blueprint-driven project scaffolding
│ │ └── reference/ # http/ + cdn/ blueprints, build/init CLI guides
│ ├── deploy/ # Build → upload binary → create/update app
│ ├── manage/ # List/get/update/delete + secrets + sync-env
│ ├── test/ # Generate & run tests (@gcoredev/fastedge-test)
│ ├── debug/ # Generate visual-debugger fixtures
│ ├── live-test/ # Verify against the deployed edge
│ └── fastedge-docs/ # Auto-invoked SDK / platform docs
│ └── reference/ # http/, cdn/, platform/ + SDK references
├── gcore-fastedge-codex/ # Codex plugin (shares the same MCP server)
│ ├── .codex-plugin/
│ ├── .mcp.json
│ ├── docs-index.json
│ └── skills/
└── gcore-fastedge-cursor/ # Cursor plugin
├── .cursor-plugin/plugin.json
├── mcp.json
├── docs-index.json
├── rules/
└── skills/