{"id":"67e762ca-4a66-435f-870a-fb35f38cd9e9","entityType":"agent","slug":"clawhub-geri4-gcore-fastedge","name":"Gcore FastEdge","canonicalUrl":"https://www.xpersona.co/agent/clawhub-geri4-gcore-fastedge","canonicalPath":"/agent/clawhub-geri4-gcore-fastedge","generatedAt":"2026-10-11T10:50:22.420Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T08:38:00.156Z","emptyReason":null},"description":"Use when building, compiling, or deploying WebAssembly HTTP apps to Gcore FastEdge edge computing — triggers on \"deploy to FastEdge\", \"build a FastEdge app\", \"Wasm on the edge\", \"Gcore edge function\", uploading a .wasm binary, or working with the fastedge Rust SDK. Skill: Gcore FastEdge Owner: geri4 Summary: Use when building, compiling, or deploying WebAssembly HTTP apps to Gcore FastEdge edge computing — triggers on \"deploy to FastEdge\", \"build a FastEdge app\", \"Wasm on the edge\", \"Gcore edge function\", uploading a .wasm binary, or working with the fastedge Rust SDK. Tags: latest:1.0.2 Version history: v1.0.2 | 2026-06-27T20:17:44.438Z | user Expanded documentation & a more r","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17dr0xajrz45sx3e5r8726m8983njyp:gcore-fastedge","sourceUrl":"https://clawhub.ai/geri4/gcore-fastedge","homepage":"https://clawhub.ai/geri4/skills/gcore-fastedge","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/geri4/gcore-fastedge","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/geri4/skills/gcore-fastedge","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Use when building, compiling, or deploying WebAssembly HTTP apps to Gcore FastEdge edge computing — triggers on \"deploy to FastEdge\", \"build a FastEdge app\", \"W"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T08:38:00.156Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T08:38:00.156Z","emptyReason":null},"stars":null,"forks":null,"downloads":1110,"packageName":null,"latestVersion":"1.0.2","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T08:38:00.145Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T08:38:00.156Z","lastCrawledAt":"2026-10-11T08:38:00.145Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T08:38:00.145Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.2","createdAt":"2026-06-27T20:17:44.438Z","changelog":"Expanded documentation & a more robust build script Added - App configuration guide in SKILL.md — how to set environment variables, encrypted secrets (with secret-slot timing gotchas), and KV/edge storage, including how to read each from Wasm and the \"PUT replaces the whole config\" caveat. - requests auto-install manifest declared in frontmatter metadata (required bins, GCORE_API_KEY env, and the uv install step). - upload and one-shot release commands in scripts/build_rust.py (build → upload → create/update an app in a single step). - Troubleshooting & common-mistakes table covering Rust toolchain issues, missing .wasm artifacts, auth errors, and raw-string HTML pitfalls. Fixed - Build failures from a shadowed Rust toolchain (e.g. Homebrew cargo/rustc ahead of rustup on PATH, missing the wasm32-wasip1 target). The build script now resolves the toolchain via rustup which and respects CARGO/RUSTC overrides. - More resilient build/deploy error handling and .wasm artifact discovery. Changed - requests is now imported lazily, so the build command works without it installed.","fileCount":8,"zipByteSize":10161},{"version":"1.0.1","createdAt":"2026-04-15T13:40:51.325Z","changelog":"- Added metadata describing required binaries (rustup, cargo, python3), the required environment variable (GCORE_API_KEY), and instructions to install the \"requests\" Python package using uv. - No changes to skill functionality or usage documentation.","fileCount":8,"zipByteSize":5844},{"version":"1.0.0","createdAt":"2026-04-15T13:20:34.770Z","changelog":"Initial release of the FastEdge skill. - Enables building and deploying WebAssembly HTTP applications to the Gcore FastEdge platform using the Rust SDK. - Provides step-by-step instructions for project setup, building, and deployment via CLI. - Includes useful Rust code patterns for FastEdge apps, such as sending HTML and accessing request headers. - Offers guidance for updating existing apps and links to additional resources like templates and documentation.","fileCount":7,"zipByteSize":4620}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17dr0xajrz45sx3e5r8726m8983njyp:gcore-fastedge","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-geri4-gcore-fastedge/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-geri4-gcore-fastedge/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-geri4-gcore-fastedge/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-geri4-gcore-fastedge/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-geri4-gcore-fastedge/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-geri4-gcore-fastedge/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T10:50:22.420Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-geri4-gcore-fastedge/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-geri4-gcore-fastedge/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-geri4-gcore-fastedge/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-geri4-gcore-fastedge/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T08:38:00.156Z","emptyReason":null},"readme":"Skill: Gcore FastEdge\n\nOwner: geri4\n\nSummary: Use when building, compiling, or deploying WebAssembly HTTP apps to Gcore FastEdge edge computing — triggers on \"deploy to FastEdge\", \"build a FastEdge app\", \"Wasm on the edge\", \"Gcore edge function\", uploading a .wasm binary, or working with the fastedge Rust SDK.\n\nTags: latest:1.0.2\n\nVersion history:\n\nv1.0.2 | 2026-06-27T20:17:44.438Z | user\n\nExpanded documentation & a more robust build script\n\nAdded\n\n- App configuration guide in SKILL.md — how to set environment variables, encrypted secrets (with secret-slot timing gotchas), and KV/edge storage, including how to read each from Wasm and the \"PUT replaces the whole config\" caveat.\n- requests auto-install manifest declared in frontmatter metadata (required bins, GCORE_API_KEY env, and the uv install step).\n- upload and one-shot release commands in scripts/build_rust.py (build → upload → create/update an app in a single step).\n- Troubleshooting & common-mistakes table covering Rust toolchain issues, missing .wasm artifacts, auth errors, and raw-string HTML pitfalls.\n\nFixed\n\n- Build failures from a shadowed Rust toolchain (e.g. Homebrew cargo/rustc ahead of rustup on PATH, missing the wasm32-wasip1 target). The build script now resolves the toolchain via rustup which and respects CARGO/RUSTC overrides.\n- More resilient build/deploy error handling and .wasm artifact discovery.\n\nChanged\n- requests is now imported lazily, so the build command works without it installed.\n\nv1.0.1 | 2026-04-15T13:40:51.325Z | user\n\n- Added metadata describing required binaries (rustup, cargo, python3), the required environment variable (GCORE_API_KEY), and instructions to install the \"requests\" Python package using uv.\n- No changes to skill functionality or usage documentation.\n\nv1.0.0 | 2026-04-15T13:20:34.770Z | user\n\nInitial release of the FastEdge skill.\n\n- Enables building and deploying WebAssembly HTTP applications to the Gcore FastEdge platform using the Rust SDK.\n- Provides step-by-step instructions for project setup, building, and deployment via CLI.\n- Includes useful Rust code patterns for FastEdge apps, such as sending HTML and accessing request headers.\n- Offers guidance for updating existing apps and links to additional resources like templates and documentation.\n\nArchive index:\n\nArchive v1.0.2: 8 files, 10161 bytes\n\nFiles: _meta.json (133b), assets/rust-template/.cargo/config.toml (33b), assets/rust-template/Cargo.toml (190b), assets/rust-template/src/lib.rs (433b), README.md (693b), scripts/build_rust.py (5855b), skill-card.md (2301b), SKILL.md (11728b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: fastedge\ndescription: Use when building, compiling, or deploying WebAssembly HTTP apps to Gcore FastEdge edge computing — triggers on \"deploy to FastEdge\", \"build a FastEdge app\", \"Wasm on the edge\", \"Gcore edge function\", uploading a .wasm binary, or working with the fastedge Rust SDK.\nmetadata: '{\"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)\"}]}}'\n---\n\n# FastEdge\n\nBuild and deploy WebAssembly HTTP applications to the Gcore FastEdge edge computing platform using the Rust SDK.\n\n## Prerequisites\n\n- `rustup` + `cargo` with the `wasm32-wasip1` target\n- `GCORE_API_KEY` — Gcore API token from https://accounts.gcore.com/account-settings/api-tokens\n- `python3` (only for the `scripts/build_rust.py` helper; the raw `curl`/`cargo` flow needs nothing extra)\n\n```bash\nrustup target add wasm32-wasip1\nexport GCORE_API_KEY=\"your_api_token\"   # keep out of shared shells and logs; rotate after use\n```\n\n## Workflow\n\nDeploying is three steps: **build** the Wasm → **upload** the binary (get a `binary_id`) → **create/update** the app referencing that binary.\n\n```dot\ndigraph fastedge {\n    rankdir=LR;\n    \"cargo build --release\" -> \"POST /binaries/raw\\n(returns binary id)\";\n    \"POST /binaries/raw\\n(returns binary id)\" -> \"App exists?\" [label=\"binary_id\"];\n    \"App exists?\" -> \"POST /apps\\n(create)\" [label=\"no\"];\n    \"App exists?\" -> \"PUT /apps/{id}\\n(update)\" [label=\"yes\"];\n}\n```\n\n## 1. Scaffold a project\n\nCopy `assets/rust-template/` for a ready starter, or create the three files manually:\n\n`.cargo/config.toml`\n```toml\n[build]\ntarget = \"wasm32-wasip1\"\n```\n\n`Cargo.toml`\n```toml\n[package]\nname = \"myapp\"\nversion = \"0.1.0\"\nedition = \"2021\"\n\n[lib]\ncrate-type = [\"cdylib\"]\n\n[dependencies]\nfastedge = \"0.2\"\n\n[profile.release]\nopt-level = \"z\"   # optimize for size — smaller Wasm = faster cold start\nlto = true\nstrip = true\n```\n\n`src/lib.rs`\n```rust\nuse fastedge::{\n    body::Body,\n    http::{Request, Response, StatusCode, Error},\n};\n\n#[fastedge::http]\nfn main(_req: Request<Body>) -> Result<Response<Body>, Error> {\n    Response::builder()\n        .status(StatusCode::OK)\n        .header(\"content-type\", \"text/plain\")\n        .body(Body::from(\"Hello from FastEdge!\"))\n}\n```\n\n## 2. Build\n\n```bash\ncargo build --release\n# Output: target/wasm32-wasip1/release/myapp.wasm\n```\n\nCargo replaces `-` with `_` in the artifact name (`my-app` → `my_app.wasm`).\n\n### Build fails with `can't find crate for core`/`std` (multiple Rust installs)\n\nIf `cargo build` errors with `error[E0463]: can't find crate for 'core'` (or `std`) and hints \"the `wasm32-wasip1` target may not be installed\" — **even though `rustup target add wasm32-wasip1` reports it's already installed** — your `cargo`/`rustc` on PATH is not rustup's. This is common on **macOS with Homebrew**: `brew install rust` puts `/opt/homebrew/bin/{cargo,rustc}` ahead of rustup's shims, and Homebrew's Rust does not carry the rustup-managed wasm target.\n\nDiagnose:\n```bash\nwhich -a rustc cargo     # is /opt/homebrew/bin (or other) before ~/.cargo/bin?\nrustc --version          # Homebrew builds print \"(Homebrew)\"\nrustup which rustc       # the toolchain that actually HAS the target\n```\n\nFix — force both tools to come from rustup (portable, no hardcoded target triple):\n```bash\nRUSTC=\"$(rustup which rustc)\" \"$(rustup which cargo)\" build --release\n```\n\n> `rustup run stable cargo build` is **not** enough if your shell profile re-prepends Homebrew's bin to PATH afterward — `rustc` still resolves to Homebrew. Setting `RUSTC` explicitly bypasses PATH. The `build_rust.py` helper already resolves cargo/rustc via `rustup which` automatically (override with `CARGO`/`RUSTC` env vars), so it builds correctly even when a foreign cargo is first on PATH.\n\nPermanent fix: ensure rustup's shims (`~/.cargo/bin`) precede `/opt/homebrew/bin` in your PATH, or `brew uninstall rust` and use rustup exclusively.\n\n## 3. Deploy\n\n### Option A — helper script (recommended)\n\n`scripts/build_rust.py` does build, upload, and deploy. Requires the `requests` package (`uv pip install requests` or `pip install requests`) and `GCORE_API_KEY`.\n\n```bash\n# One-shot: build + upload + create app\npython3 scripts/build_rust.py release --app-name my-app-name\n\n# One-shot: build + upload + update an existing app\npython3 scripts/build_rust.py release --app-name my-app-name --app-id 456\n\n# Individual steps\npython3 scripts/build_rust.py build                                    # compile only\npython3 scripts/build_rust.py upload                                   # build + upload, prints binary id\npython3 scripts/build_rust.py deploy --binary-id 123 --app-name foo    # create from an existing binary\npython3 scripts/build_rust.py deploy --binary-id 124 --app-id 456 --app-name foo  # update\n```\n\n### Option B — raw API\n\nUpload the binary (save the `id` from the response):\n```bash\ncurl -X POST 'https://api.gcore.com/fastedge/v1/binaries/raw' \\\n  -H 'accept: application/json' \\\n  -H \"Authorization: APIKey $GCORE_API_KEY\" \\\n  -H 'Content-Type: application/octet-stream' \\\n  --data-binary '@./target/wasm32-wasip1/release/myapp.wasm'\n```\n\nCreate the app:\n```bash\ncurl -X POST 'https://api.gcore.com/fastedge/v1/apps' \\\n  -H 'accept: application/json' \\\n  -H 'client_id: 0' \\\n  -H \"Authorization: APIKey $GCORE_API_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"name\": \"my-app-name\", \"binary\": BINARY_ID, \"status\": 1}'\n```\n\nApp URL: `https://my-app-name-XXXX.fastedge.app`\n\nUpdate an existing app (re-deploy a new binary):\n```bash\ncurl -X PUT 'https://api.gcore.com/fastedge/v1/apps/APP_ID' \\\n  -H 'accept: application/json' \\\n  -H \"Authorization: APIKey $GCORE_API_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"binary\": NEW_BINARY_ID, \"status\": 1, \"name\": \"app-name\"}'\n```\n\n> Before any upload/create/update, confirm the artifact, target app name, `binary_id`, and `app_id` — these commands publish to a live edge endpoint.\n\n## 4. Configuration: env vars, secrets & KV storage\n\n> For the complete, current API surface (every endpoint and field), fetch\n> **https://gcore.com/docs/fastedge/llms.txt** and follow the links for the\n> specific feature — the snippets below cover the common paths only.\n\nApps read configuration three ways, all set in the app body (`POST /apps` or\n`PUT /apps/{id}`). **A `PUT` replaces the whole config** — re-send `env`,\n`secrets`, and `stores` on every update or the omitted maps are wiped.\n\n### Environment variables (non-sensitive)\n\nApp config: `\"env\": {\"MY_VAR\": \"value\"}`. Read in Wasm with `std::env::var(\"MY_VAR\")`.\n\n### Secrets (tokens, API keys — encrypted at rest)\n\nTwo steps: create the secret, then bind it to the app under the key your code reads.\n\n```bash\n# 1) Create — note the \"id\" in the response.\ncurl -X POST 'https://api.gcore.com/fastedge/v1/secrets' \\\n  -H \"Authorization: APIKey $GCORE_API_KEY\" -H 'Content-Type: application/json' \\\n  -d '{\n    \"name\": \"my-bot-token\",\n    \"comment\": \"Telegram bot token\",\n    \"secret_slots\": [ { \"slot\": 1700000000, \"value\": \"s3cr3t-value\" } ]\n  }'\n```\n\n`slot` is the unix timestamp from which the value becomes effective. Use a\n**past** time (e.g. `date -d '1 hour ago' +%s`) — a future slot means the secret\nis not active yet and reads return `None`. Rotate by adding a newer slot.\n\nBind it in the app body (the map key is what the Wasm looks up):\n```jsonc\n\"secrets\": { \"MY_BOT_TOKEN\": { \"id\": SECRET_ID } }\n```\n\nRead in Wasm:\n```rust\n// In fastedge 0.2.0, secret::get returns Result<Option<String>> — bind the value\n// directly. (docs.rs shows Vec<u8>; newer crate versions may differ — trust what\n// the compiler reports rather than calling String::from_utf8 unconditionally.)\nif let Ok(Some(token)) = fastedge::secret::get(\"MY_BOT_TOKEN\") {\n    // token: String\n}\n```\n\n### KV / edge storage (persistent key-value)\n\n```bash\n# Create a store — returns an \"id\". Optionally back it with your own Redis via\n# \"byod\": {\"url\": \"redis://host:6379/0\", \"prefix\": \"app:prod:\"}.\ncurl -X POST 'https://api.gcore.com/fastedge/v1/kv' \\\n  -H \"Authorization: APIKey $GCORE_API_KEY\" -H 'Content-Type: application/json' \\\n  -d '{\"name\": \"my-store\", \"comment\": \"lead cache\"}'\n```\n\nBind it to the app:\n```jsonc\n\"stores\": { \"my-store\": { \"id\": STORE_ID } }\n```\n\nRead in Wasm via the `key_value` module:\n```rust\nuse fastedge::key_value::Store;\nlet store = Store::open(\"my-store\")?;          // Result<Store, Error>\nif let Some(bytes) = store.get(\"some-key\")? {  // get -> Result<Option<Vec<u8>>>\n    let value = String::from_utf8_lossy(&bytes);\n}\n```\n\nRelated storage APIs in the SDK: `fastedge::cache` (`get(key)` /\n`set(key, content, ttl_ms)`) for ephemeral per-region caching, and\n`fastedge::dictionary` for fast read-only config lookups.\n\n## Patterns\n\n### HTML response\n```rust\nResponse::builder()\n    .status(StatusCode::OK)\n    .header(\"content-type\", \"text/html; charset=utf-8\")\n    .body(Body::from(html_string))\n```\n\nEmbedding a whole HTML page as a Rust string literal? Use a raw string with **double** hashes — `r##\" ... \"##` — not `r#\" ... \"#`. A single-hash raw string is terminated by the sequence `\"#`, which appears in any `href=\"#anchor\"` fragment link. Double hashes only close on `\"##`, which HTML practically never contains.\n\n### Read request headers\n```rust\nlet ip = req.headers()\n    .get(\"x-real-ip\")\n    .and_then(|v| v.to_str().ok())\n    .unwrap_or(\"unknown\");\n```\n\nHeaders FastEdge provides:\n\n| Header | Meaning |\n|--------|---------|\n| `x-real-ip` | Client IP address |\n| `x-forwarded-for` | Proxied client IP chain |\n| `geoip-country-code` | Country code |\n| `geoip-city` | City name |\n| `host` | Request host |\n\n## Common mistakes\n\n| Symptom | Fix |\n|---------|-----|\n| `can't find crate for core`/`std`, target \"may not be installed\" — but it *is* | Wrong `cargo`/`rustc` on PATH (e.g. Homebrew shadowing rustup). See [Build fails…](#build-fails-with-cant-find-crate-for-corestd-multiple-rust-installs) above |\n| `cargo build` produces no `.wasm` (and target genuinely missing) | `rustup target add wasm32-wasip1`, and ensure `.cargo/config.toml` sets the target |\n| No `.wasm` at expected path | Cargo turned `-` into `_`; check `target/wasm32-wasip1/release/*.wasm` |\n| `401`/auth errors on API calls | `GCORE_API_KEY` unset or wrong; header must be `Authorization: APIKey $GCORE_API_KEY` |\n| Linker errors building Wasm | `crate-type = [\"cdylib\"]` missing from `[lib]` |\n| Raw-string HTML page won't compile | `href=\"#id\"` closes an `r#\"...\"#` string. Use `r##\"...\"##` (or more `#`) when the HTML contains `\"#` |\n| `secret::get(...)` value won't compile / type mismatch | In fastedge 0.2.0 it returns `Option<String>`, not `Option<Vec<u8>>` — bind the value directly, don't `String::from_utf8`. Match on what the compiler reports for your version |\n| Secret reads return `None` at runtime | The secret's `slot` is a future timestamp; use a past unix time so it's effective now |\n| `env`/`secrets`/`stores` disappear after an app update | `PUT /apps/{id}` replaces the entire config; re-send all of them (plus `name`, `binary`, `status`) every time |\n\n## Resources\n\n- Starter template: `assets/rust-template/`\n- Build/deploy helper: `scripts/build_rust.py`\n- **Full API reference for LLMs: https://gcore.com/docs/fastedge/llms.txt** — fetch this and follow the per-feature links before guessing endpoints/fields\n- Gcore FastEdge docs: https://gcore.com/docs/fastedge\n- Edge storage (KV) API: https://gcore.com/docs/api-reference/fastedge/edge-storage/create-a-new-edge-store\n- API tokens: https://accounts.gcore.com/account-settings/api-tokens\n\nFile v1.0.2:README.md\n\n# FastEdge Skill\n\nFastEdge skill for building and deploying WebAssembly apps to Gcore FastEdge.\n\n## Installation\n\n```bash\nopenclaw skill install fastedge\n```\n\n## Usage\n\nAfter installation, Codex will automatically use this skill when you ask about FastEdge, edge computing, or Wasm deployment.\n\nExample prompts:\n- \"Deploy this to FastEdge\"\n- \"Create a new FastEdge app\"\n- \"Build a Wasm app for edge computing\"\n\n## Structure\n\n```\nfastedge-skill/\n├── SKILL.md                 # Main skill documentation\n├── assets/\n│   └── rust-template/       # Starter Rust project template\n├── scripts/\n│   └── build_rust.py        # Build helper script\n```\n\n## License\n\nMIT\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn762eqpe1r3gp0gv86e5875bx83mcmn\",\n  \"slug\": \"gcore-fastedge\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1782591464438\n}\n\nFile v1.0.2:skill-card.md\n\n## Description:\n\nHelps agents build, compile, configure, and deploy Rust WebAssembly HTTP apps to Gcore FastEdge.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[geri4](https://clawhub.ai/user/geri4)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and engineers use this skill to scaffold, build, upload, and release Rust WebAssembly HTTP applications on Gcore FastEdge. It also guides app configuration for environment variables, encrypted secrets, and edge storage.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The bundled update helper can unintentionally wipe existing app configuration on a live Gcore deployment.\n\nMitigation: Avoid using the helper for existing production apps until it preserves full app configuration or shows a complete diff; when updating, re-send environment variables, secrets, stores, name, binary, and status.\n\nRisk: Build, upload, and deploy commands can publish artifacts to live FastEdge endpoints when a valid Gcore API token is present.\n\nMitigation: Use a least-privileged Gcore API token, run builds in a minimal environment, and confirm the artifact, app name, binary id, and app id before upload or deployment.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/geri4/skills/gcore-fastedge)\n- [Gcore FastEdge docs](https://gcore.com/docs/fastedge)\n- [Gcore FastEdge API reference for LLMs](https://gcore.com/docs/fastedge/llms.txt)\n- [Gcore edge storage API](https://gcore.com/docs/api-reference/fastedge/edge-storage/create-a-new-edge-store)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown with inline code, shell commands, configuration snippets, and API examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May invoke local build commands and Gcore FastEdge API calls when the user chooses deployment steps.]\n\n## Skill Version(s):\n\n1.0.2 (source: server release evidence and artifact metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.2:assets/rust-template/.cargo/config.toml\n\n[build]\ntarget = \"wasm32-wasip1\"\n\nFile v1.0.2:assets/rust-template/Cargo.toml\n\n[package]\nname = \"fastedge-app\"\nversion = \"1.0.0\"\nedition = \"2021\"\n\n[lib]\ncrate-type = [\"cdylib\"]\n\n[dependencies]\nfastedge = \"0.2\"\n\n[profile.release]\nopt-level = \"z\"\nlto = true\nstrip = true\n\nArchive v1.0.1: 8 files, 5844 bytes\n\nFiles: assets/rust-template/.cargo/config.toml (33b), assets/rust-template/Cargo.toml (190b), assets/rust-template/src/lib.rs (433b), README.md (693b), scripts/build_rust.py (3672b), skill-card.md (2071b), SKILL.md (3526b), _meta.json (133b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: fastedge\ndescription: 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.\nmetadata: '{\"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)\"}]}}'\n---\n\n# FastEdge Skill\n\nBuild and deploy WebAssembly HTTP applications to Gcore FastEdge.\n\n## Quick Start\n\n### 1. Create a new FastEdge app\n\nInitialize a Rust project with the FastEdge SDK:\n\n```bash\nmkdir myapp && cd myapp\n```\n\nCreate `.cargo/config.toml`:\n```toml\n[build]\ntarget = \"wasm32-wasip1\"\n```\n\nCreate `Cargo.toml`:\n```toml\n[package]\nname = \"myapp\"\nversion = \"0.1.0\"\nedition = \"2021\"\n\n[lib]\ncrate-type = [\"cdylib\"]\n\n[dependencies]\nfastedge = \"0.2\"\n```\n\nCreate `src/lib.rs`:\n```rust\nuse fastedge::{\n    body::Body,\n    http::{Request, Response, StatusCode, Error},\n};\n\n#[fastedge::http]\nfn main(_req: Request<Body>) -> Result<Response<Body>, Error> {\n    Response::builder()\n        .status(StatusCode::OK)\n        .header(\"content-type\", \"text/plain\")\n        .body(Body::from(\"Hello from FastEdge!\"))\n}\n```\n\n### 2. Build the Wasm binary\n\nRequires Rust and wasm32-wasip1 target:\n\n```bash\nrustup target add wasm32-wasip1\ncargo build --release\n```\n\nBinary location: `target/wasm32-wasip1/release/myapp.wasm`\n\n### 3. Deploy via CLI\n\nSet your API key (get from https://accounts.gcore.com/account-settings/api-tokens):\n\n```bash\nexport GCORE_API_KEY=\"your_api_token\"\n```\n\nUpload binary:\n```bash\ncurl -X POST \\\n  'https://api.gcore.com/fastedge/v1/binaries/raw' \\\n  -H 'accept: application/json' \\\n  -H \"Authorization: APIKey $GCORE_API_KEY\" \\\n  -H 'Content-Type: application/octet-stream' \\\n  --data-binary '@./target/wasm32-wasip1/release/myapp.wasm'\n```\n\nSave the `id` from response (binary_id).\n\nCreate app:\n```bash\ncurl -X POST \\\n  'https://api.gcore.com/fastedge/v1/apps' \\\n  -H 'accept: application/json' \\\n  -H 'client_id: 0' \\\n  -H \"Authorization: APIKey $GCORE_API_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"name\": \"my-app-name\",\n    \"binary\": BINARY_ID,\n    \"status\": 1\n  }'\n```\n\nYour app will be at: `https://my-app-name-XXXX.fastedge.app`\n\n## Useful Patterns\n\n### HTML Response\n\n```rust\nResponse::builder()\n    .status(StatusCode::OK)\n    .header(\"content-type\", \"text/html; charset=utf-8\")\n    .body(Body::from(html_string))\n```\n\n### Access Request Headers\n\n```rust\nlet ip = req.headers()\n    .get(\"x-real-ip\")\n    .and_then(|v| v.to_str().ok())\n    .unwrap_or(\"unknown\");\n```\n\nCommon headers provided by FastEdge:\n- `x-real-ip` - Client IP address\n- `x-forwarded-for` - Proxied client IP\n- `geoip-country-code` - Country code\n- `geoip-city` - City name\n- `host` - Request host\n\n### Update Existing App\n\n```bash\ncurl -X PUT \\\n  'https://api.gcore.com/fastedge/v1/apps/APP_ID' \\\n  -H 'accept: application/json' \\\n  -H \"Authorization: APIKey $GCORE_API_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"binary\": NEW_BINARY_ID,\n    \"status\": 1,\n    \"name\": \"app-name\"\n  }'\n```\n\n## Resources\n\n- **Template project**: See `assets/rust-template/` for a starter template\n- **Build script**: See `scripts/build_rust.py` for automated build/upload\n- **API Docs**: https://gcore.com/docs/fastedge\n\nFile v1.0.1:README.md\n\n# FastEdge Skill\n\nFastEdge skill for building and deploying WebAssembly apps to Gcore FastEdge.\n\n## Installation\n\n```bash\nopenclaw skill install fastedge\n```\n\n## Usage\n\nAfter installation, Codex will automatically use this skill when you ask about FastEdge, edge computing, or Wasm deployment.\n\nExample prompts:\n- \"Deploy this to FastEdge\"\n- \"Create a new FastEdge app\"\n- \"Build a Wasm app for edge computing\"\n\n## Structure\n\n```\nfastedge-skill/\n├── SKILL.md                 # Main skill documentation\n├── assets/\n│   └── rust-template/       # Starter Rust project template\n├── scripts/\n│   └── build_rust.py        # Build helper script\n```\n\n## License\n\nMIT\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn762eqpe1r3gp0gv86e5875bx83mcmn\",\n  \"slug\": \"gcore-fastedge\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1776260451325\n}\n\nFile v1.0.1:skill-card.md\n\n## Description: <br>\nBuild and deploy WebAssembly applications to Gcore FastEdge edge computing platform. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[geri4](https://clawhub.ai/user/geri4) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and engineers use this skill to create Rust-based FastEdge HTTP applications, build them as WebAssembly, and deploy or update them on Gcore FastEdge. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill requires GCORE_API_KEY and can make authenticated deployment requests to Gcore FastEdge. <br>\nMitigation: Use a scoped or temporary API key where possible, keep it out of shared shells and logs, and rotate it after sensitive deployment work. <br>\nRisk: Build and deployment commands can publish or update remote FastEdge applications. <br>\nMitigation: Review the WebAssembly artifact, target app name, binary ID, and app ID before running upload, create, or update commands. <br>\n\n\n## Reference(s): <br>\n- [Gcore FastEdge documentation](https://gcore.com/docs/fastedge) <br>\n- [Gcore API tokens](https://accounts.gcore.com/account-settings/api-tokens) <br>\n- [ClawHub publisher profile](https://clawhub.ai/user/geri4) <br>\n- [ClawHub skill page](https://clawhub.ai/geri4/gcore-fastedge) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown with inline bash, TOML, and Rust code blocks] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May include deployment commands that require GCORE_API_KEY and calls to Gcore FastEdge APIs.] <br>\n\n## Skill Version(s): <br>\n1.0.1 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.1:assets/rust-template/.cargo/config.toml\n\n[build]\ntarget = \"wasm32-wasip1\"\n\nFile v1.0.1:assets/rust-template/Cargo.toml\n\n[package]\nname = \"fastedge-app\"\nversion = \"1.0.0\"\nedition = \"2021\"\n\n[lib]\ncrate-type = [\"cdylib\"]\n\n[dependencies]\nfastedge = \"0.2\"\n\n[profile.release]\nopt-level = \"z\"\nlto = true\nstrip = true\n\nArchive v1.0.0: 7 files, 4620 bytes\n\nFiles: assets/rust-template/.cargo/config.toml (33b), assets/rust-template/Cargo.toml (190b), assets/rust-template/src/lib.rs (433b), README.md (693b), scripts/build_rust.py (3672b), SKILL.md (3284b), _meta.json (133b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: fastedge\ndescription: 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.\n---\n\n# FastEdge Skill\n\nBuild and deploy WebAssembly HTTP applications to Gcore FastEdge.\n\n## Quick Start\n\n### 1. Create a new FastEdge app\n\nInitialize a Rust project with the FastEdge SDK:\n\n```bash\nmkdir myapp && cd myapp\n```\n\nCreate `.cargo/config.toml`:\n```toml\n[build]\ntarget = \"wasm32-wasip1\"\n```\n\nCreate `Cargo.toml`:\n```toml\n[package]\nname = \"myapp\"\nversion = \"0.1.0\"\nedition = \"2021\"\n\n[lib]\ncrate-type = [\"cdylib\"]\n\n[dependencies]\nfastedge = \"0.2\"\n```\n\nCreate `src/lib.rs`:\n```rust\nuse fastedge::{\n    body::Body,\n    http::{Request, Response, StatusCode, Error},\n};\n\n#[fastedge::http]\nfn main(_req: Request<Body>) -> Result<Response<Body>, Error> {\n    Response::builder()\n        .status(StatusCode::OK)\n        .header(\"content-type\", \"text/plain\")\n        .body(Body::from(\"Hello from FastEdge!\"))\n}\n```\n\n### 2. Build the Wasm binary\n\nRequires Rust and wasm32-wasip1 target:\n\n```bash\nrustup target add wasm32-wasip1\ncargo build --release\n```\n\nBinary location: `target/wasm32-wasip1/release/myapp.wasm`\n\n### 3. Deploy via CLI\n\nSet your API key (get from https://accounts.gcore.com/account-settings/api-tokens):\n\n```bash\nexport GCORE_API_KEY=\"your_api_token\"\n```\n\nUpload binary:\n```bash\ncurl -X POST \\\n  'https://api.gcore.com/fastedge/v1/binaries/raw' \\\n  -H 'accept: application/json' \\\n  -H \"Authorization: APIKey $GCORE_API_KEY\" \\\n  -H 'Content-Type: application/octet-stream' \\\n  --data-binary '@./target/wasm32-wasip1/release/myapp.wasm'\n```\n\nSave the `id` from response (binary_id).\n\nCreate app:\n```bash\ncurl -X POST \\\n  'https://api.gcore.com/fastedge/v1/apps' \\\n  -H 'accept: application/json' \\\n  -H 'client_id: 0' \\\n  -H \"Authorization: APIKey $GCORE_API_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"name\": \"my-app-name\",\n    \"binary\": BINARY_ID,\n    \"status\": 1\n  }'\n```\n\nYour app will be at: `https://my-app-name-XXXX.fastedge.app`\n\n## Useful Patterns\n\n### HTML Response\n\n```rust\nResponse::builder()\n    .status(StatusCode::OK)\n    .header(\"content-type\", \"text/html; charset=utf-8\")\n    .body(Body::from(html_string))\n```\n\n### Access Request Headers\n\n```rust\nlet ip = req.headers()\n    .get(\"x-real-ip\")\n    .and_then(|v| v.to_str().ok())\n    .unwrap_or(\"unknown\");\n```\n\nCommon headers provided by FastEdge:\n- `x-real-ip` - Client IP address\n- `x-forwarded-for` - Proxied client IP\n- `geoip-country-code` - Country code\n- `geoip-city` - City name\n- `host` - Request host\n\n### Update Existing App\n\n```bash\ncurl -X PUT \\\n  'https://api.gcore.com/fastedge/v1/apps/APP_ID' \\\n  -H 'accept: application/json' \\\n  -H \"Authorization: APIKey $GCORE_API_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"binary\": NEW_BINARY_ID,\n    \"status\": 1,\n    \"name\": \"app-name\"\n  }'\n```\n\n## Resources\n\n- **Template project**: See `assets/rust-template/` for a starter template\n- **Build script**: See `scripts/build_rust.py` for automated build/upload\n- **API Docs**: https://gcore.com/docs/fastedge\n\nFile v1.0.0:README.md\n\n# FastEdge Skill\n\nFastEdge skill for building and deploying WebAssembly apps to Gcore FastEdge.\n\n## Installation\n\n```bash\nopenclaw skill install fastedge\n```\n\n## Usage\n\nAfter installation, Codex will automatically use this skill when you ask about FastEdge, edge computing, or Wasm deployment.\n\nExample prompts:\n- \"Deploy this to FastEdge\"\n- \"Create a new FastEdge app\"\n- \"Build a Wasm app for edge computing\"\n\n## Structure\n\n```\nfastedge-skill/\n├── SKILL.md                 # Main skill documentation\n├── assets/\n│   └── rust-template/       # Starter Rust project template\n├── scripts/\n│   └── build_rust.py        # Build helper script\n```\n\n## License\n\nMIT\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn762eqpe1r3gp0gv86e5875bx83mcmn\",\n  \"slug\": \"gcore-fastedge\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1776259234770\n}\n\nFile v1.0.0:assets/rust-template/.cargo/config.toml\n\n[build]\ntarget = \"wasm32-wasip1\"\n\nFile v1.0.0:assets/rust-template/Cargo.toml\n\n[package]\nname = \"fastedge-app\"\nversion = \"1.0.0\"\nedition = \"2021\"\n\n[lib]\ncrate-type = [\"cdylib\"]\n\n[dependencies]\nfastedge = \"0.2\"\n\n[profile.release]\nopt-level = \"z\"\nlto = true\nstrip = true","readmeExcerpt":"Skill: Gcore FastEdge Owner: geri4 Summary: Use when building, compiling, or deploying WebAssembly HTTP apps to Gcore FastEdge edge computing — triggers on \"deploy to FastEdge\", \"build a FastEdge app\", \"Wasm on the edge\", \"Gcore edge function\", uploading a .wasm binary, or working with the fastedge Rust SDK. Tags: latest:1.0.2 Version history: v1.0.2 | 2026-06-27T20:17:44.438Z | user Expanded documentation & a more r","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"rustup target add wasm32-wasip1\nexport GCORE_API_KEY=\"your_api_token\"   # keep out of shared shells and logs; rotate after use"},{"language":"dot","snippet":"digraph fastedge {\n    rankdir=LR;\n    \"cargo build --release\" -> \"POST /binaries/raw\\n(returns binary id)\";\n    \"POST /binaries/raw\\n(returns binary id)\" -> \"App exists?\" [label=\"binary_id\"];\n    \"App exists?\" -> \"POST /apps\\n(create)\" [label=\"no\"];\n    \"App exists?\" -> \"PUT /apps/{id}\\n(update)\" [label=\"yes\"];\n}"},{"language":"toml","snippet":"[build]\ntarget = \"wasm32-wasip1\""},{"language":"toml","snippet":"[package]\nname = \"myapp\"\nversion = \"0.1.0\"\nedition = \"2021\"\n\n[lib]\ncrate-type = [\"cdylib\"]\n\n[dependencies]\nfastedge = \"0.2\"\n\n[profile.release]\nopt-level = \"z\"   # optimize for size — smaller Wasm = faster cold start\nlto = true\nstrip = true"},{"language":"rust","snippet":"use fastedge::{\n    body::Body,\n    http::{Request, Response, StatusCode, Error},\n};\n\n#[fastedge::http]\nfn main(_req: Request<Body>) -> Result<Response<Body>, Error> {\n    Response::builder()\n        .status(StatusCode::OK)\n        .header(\"content-type\", \"text/plain\")\n        .body(Body::from(\"Hello from FastEdge!\"))\n}"},{"language":"bash","snippet":"cargo build --release\n# Output: target/wasm32-wasip1/release/myapp.wasm"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: fastedge\ndescription: Use when building, compiling, or deploying WebAssembly HTTP apps to Gcore FastEdge edge computing — triggers on \"deploy to FastEdge\", \"build a FastEdge app\", \"Wasm on the edge\", \"Gcore edge function\", uploading a .wasm binary, or working with the fastedge Rust SDK.\nmetadata: '{\"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)\"}]}}'\n---\n\n# FastEdge\n\nBuild and deploy WebAssembly HTTP applications to the Gcore FastEdge edge computing platform using the Rust SDK.\n\n## Prerequisites\n\n- `rustup` + `cargo` with the `wasm32-wasip1` target\n- `GCORE_API_KEY` — Gcore API token from https://accounts.gcore.com/account-settings/api-tokens\n- `python3` (only for the `scripts/build_rust.py` helper; the raw `curl`/`cargo` flow needs nothing extra)\n\n```bash\nrustup target add wasm32-wasip1\nexport GCORE_API_KEY=\"your_api_token\"   # keep out of shared shells and logs; rotate after use\n```\n\n## Workflow\n\nDeploying is three steps: **build** the Wasm → **upload** the binary (get a `binary_id`) → **create/update** the app referencing that binary.\n\n```dot\ndigraph fastedge {\n    rankdir=LR;\n    \"cargo build --release\" -> \"POST /binaries/raw\\n(returns binary id)\";\n    \"POST /binaries/raw\\n(returns binary id)\" -> \"App exists?\" [label=\"binary_id\"];\n    \"App exists?\" -> \"POST /apps\\n(create)\" [label=\"no\"];\n    \"App exists?\" -> \"PUT /apps/{id}\\n(update)\" [label=\"yes\"];\n}\n```\n\n## 1. Scaffold a project\n\nCopy `assets/rust-template/` for a ready starter, or create the three files manually:\n\n`.cargo/config.toml`\n```toml\n[build]\ntarget = \"wasm32-wasip1\"\n```\n\n`Cargo.toml`\n```toml\n[package]\nname = \"myapp\"\nversion = \"0.1.0\"\nedition = \"2021\"\n\n[lib]\ncrate-type = [\"cdylib\"]\n\n[dependencies]\nfastedge = \"0.2\"\n\n[profile.release]\nopt-level = \"z\"   # optimize for size — smaller Wasm = faster cold start\nlto = true\nstrip = true\n```\n\n`src/lib.rs`\n```rust\nuse fastedge::{\n    body::Body,\n    http::{Request, Response, StatusCode, Error},\n};\n\n#[fastedge::http]\nfn main(_req: Request<Body>) -> Result<Response<Body>, Error> {\n    Response::builder()\n        .status(StatusCode::OK)\n        .header(\"content-type\", \"text/plain\")\n        .body(Body::from(\"Hello from FastEdge!\"))\n}\n```\n\n## 2. Build\n\n```bash\ncargo build --release\n# Output: target/wasm32-wasip1/release/myapp.wasm\n```\n\nCargo replaces `-` with `_` in the artifact name (`my-app` → `my_app.wasm`).\n\n### Build fails with `can't find crate for core`/`std` (multiple Rust installs)\n\nIf `cargo build` errors with `error[E0463]: can't find crate for 'core'` (or `std`) and hints \"the `wasm32-wasip1` target may not be installed\" — **even though `rustup target add wasm32-wasip1` reports it's already installed** — your `cargo`/`rustc` on PATH is not rustup's. This is common on **macOS with Homebrew**: `brew install rust` puts `/opt/homebrew/bin/{cargo,rustc}` ah"},{"path":"README.md","content":"# FastEdge Skill\n\nFastEdge skill for building and deploying WebAssembly apps to Gcore FastEdge.\n\n## Installation\n\n```bash\nopenclaw skill install fastedge\n```\n\n## Usage\n\nAfter installation, Codex will automatically use this skill when you ask about FastEdge, edge computing, or Wasm deployment.\n\nExample prompts:\n- \"Deploy this to FastEdge\"\n- \"Create a new FastEdge app\"\n- \"Build a Wasm app for edge computing\"\n\n## Structure\n\n```\nfastedge-skill/\n├── SKILL.md                 # Main skill documentation\n├── assets/\n│   └── rust-template/       # Starter Rust project template\n├── scripts/\n│   └── build_rust.py        # Build helper script\n```\n\n## License\n\nMIT"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn762eqpe1r3gp0gv86e5875bx83mcmn\",\n  \"slug\": \"gcore-fastedge\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1782591464438\n}"},{"path":"skill-card.md","content":"## Description:\n\nHelps agents build, compile, configure, and deploy Rust WebAssembly HTTP apps to Gcore FastEdge.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[geri4](https://clawhub.ai/user/geri4)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and engineers use this skill to scaffold, build, upload, and release Rust WebAssembly HTTP applications on Gcore FastEdge. It also guides app configuration for environment variables, encrypted secrets, and edge storage.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The bundled update helper can unintentionally wipe existing app configuration on a live Gcore deployment.\n\nMitigation: Avoid using the helper for existing production apps until it preserves full app configuration or shows a complete diff; when updating, re-send environment variables, secrets, stores, name, binary, and status.\n\nRisk: Build, upload, and deploy commands can publish artifacts to live FastEdge endpoints when a valid Gcore API token is present.\n\nMitigation: Use a least-privileged Gcore API token, run builds in a minimal environment, and confirm the artifact, app name, binary id, and app id before upload or deployment.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/geri4/skills/gcore-fastedge)\n- [Gcore FastEdge docs](https://gcore.com/docs/fastedge)\n- [Gcore FastEdge API reference for LLMs](https://gcore.com/docs/fastedge/llms.txt)\n- [Gcore edge storage API](https://gcore.com/docs/api-reference/fastedge/edge-storage/create-a-new-edge-store)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown with inline code, shell commands, configuration snippets, and API examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May invoke local build commands and Gcore FastEdge API calls when the user chooses deployment steps.]\n\n## Skill Version(s):\n\n1.0.2 (source: server release evidence and artifact metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"assets/rust-template/.cargo/config.toml","content":"[build]\ntarget = \"wasm32-wasip1\""}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Use when building, compiling, or deploying WebAssembly HTTP apps to Gcore FastEdge edge computing — triggers on \"deploy to FastEdge\", \"build a FastEdge app\", \"Wasm on the edge\", \"Gcore edge function\", uploading a .wasm binary, or working with the fastedge Rust SDK. Skill: Gcore FastEdge Owner: geri4 Summary: Use when building, compiling, or deploying WebAssembly HTTP apps to Gcore FastEdge edge computing — triggers on \"deploy to FastEdge\", \"build a FastEdge app\", \"Wasm on the edge\", \"Gcore edge function\", uploading a .wasm binary, or working with the fastedge Rust SDK. Tags: latest:1.0.2 Version history: v1.0.2 | 2026-06-27T20:17:44.438Z | user Expanded documentation & a more r","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1258,"uniquenessScore":47,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T08:38:00.156Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T08:38:00.156Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T10:50:22.420Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}