- name
- fastedge
- description
- Build and deploy WebAssembly applications to Gcore FastEdge edge computing platform. Use when creating, building, or deploying FastEdge HTTP apps with Rust SDK. Triggers on phrases like "deploy to FastEdge", "build FastEdge app", "create FastEdge application", "Wasm on FastEdge", or when working with Gcore edge computing.
- metadata
- {"openclaw":{"requires":{"bins":["rustup","cargo","python3"],"env":["GCORE_API_KEY"]},"primaryEnv":"GCORE_API_KEY","install":[{"id":"requests","kind":"uv","packages":["requests"],"label":"Install Python requests package (uv)"}]}}
FastEdge Skill
Build and deploy WebAssembly HTTP applications to Gcore FastEdge.
Quick Start
1. Create a new FastEdge app
Initialize a Rust project with the FastEdge SDK:
mkdir myapp && cd myappCreate .cargo/config.toml:
[build]
target = "wasm32-wasip1"Create Cargo.toml:
[package]
name = "myapp"
version = "0.1.0"
edition = "2021"
[lib]
crate-type = ["cdylib"]
[dependencies]
fastedge = "0.2"Create src/lib.rs:
use fastedge::{
body::Body,
http::{Request, Response, StatusCode, Error},
};
#[fastedge::http]
fn main(_req: Request<Body>) -> Result<Response<Body>, Error> {
Response::builder()
.status(StatusCode::OK)
.header("content-type", "text/plain")
.body(Body::from("Hello from FastEdge!"))
}2. Build the Wasm binary
Requires Rust and wasm32-wasip1 target:
rustup target add wasm32-wasip1
cargo build --releaseBinary location: target/wasm32-wasip1/release/myapp.wasm
3. Deploy via CLI
Set your API key (get from https://accounts.gcore.com/account-settings/api-tokens):
export GCORE_API_KEY="your_api_token"Upload binary:
curl -X POST \
'https://api.gcore.com/fastedge/v1/binaries/raw' \
-H 'accept: application/json' \
-H "Authorization: APIKey $GCORE_API_KEY" \
-H 'Content-Type: application/octet-stream' \
--data-binary '@./target/wasm32-wasip1/release/myapp.wasm'Save the id from response (binary_id).
Create app:
curl -X POST \
'https://api.gcore.com/fastedge/v1/apps' \
-H 'accept: application/json' \
-H 'client_id: 0' \
-H "Authorization: APIKey $GCORE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"name": "my-app-name",
"binary": BINARY_ID,
"status": 1
}'Your app will be at: https://my-app-name-XXXX.fastedge.app
Useful Patterns
HTML Response
Response::builder()
.status(StatusCode::OK)
.header("content-type", "text/html; charset=utf-8")
.body(Body::from(html_string))Access Request Headers
let ip = req.headers()
.get("x-real-ip")
.and_then(|v| v.to_str().ok())
.unwrap_or("unknown");Common headers provided by FastEdge:
x-real-ip- Client IP addressx-forwarded-for- Proxied client IPgeoip-country-code- Country codegeoip-city- City namehost- Request host
Update Existing App
curl -X PUT \
'https://api.gcore.com/fastedge/v1/apps/APP_ID' \
-H 'accept: application/json' \
-H "Authorization: APIKey $GCORE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"binary": NEW_BINARY_ID,
"status": 1,
"name": "app-name"
}'Resources
- Template project: See
assets/rust-template/for a starter template - Build script: See
scripts/build_rust.pyfor automated build/upload - API Docs: https://gcore.com/docs/fastedge