Install
openclaw skills install @geri4/gcore-fastedgeBuild 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.
openclaw skills install @geri4/gcore-fastedgeBuild and deploy WebAssembly HTTP applications to Gcore FastEdge.
Initialize a Rust project with the FastEdge SDK:
mkdir myapp && cd myapp
Create .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!"))
}
Requires Rust and wasm32-wasip1 target:
rustup target add wasm32-wasip1
cargo build --release
Binary location: target/wasm32-wasip1/release/myapp.wasm
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
Response::builder()
.status(StatusCode::OK)
.header("content-type", "text/html; charset=utf-8")
.body(Body::from(html_string))
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 hostcurl -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"
}'
assets/rust-template/ for a starter templatescripts/build_rust.py for automated build/upload