FastEdge
Run application logic where requests happen
Keep access checks, routing, and personalization close to your users. Run that logic at the edge without provisioning servers or sending every decision back to origin.
No credit card needed
Generous FREE tier
Set up FastEdge with AI:
https://docs.gcore.com/fastedgeBuild, ship, and respond from the edge
Deploy edge logic without provisioning servers, managing regions, or rebuilding your backend for every new request-time decision.
01
Start with code or a template
Write request-time logic in JavaScript or Rust, or use a FastEdge template for routing, access, personalization, and more.
02
Deploy edge functions
Push your FastEdge application through the Portal, API, CLI, or Terraform, then
run it closer to users on Gcore’s edge network.
03
Serve the right response
Run decisions at the edge, use nearby data for fast reads, and send traffic back to origin only when it is needed.
Built for edge logic. Without the server work.
Move routing, access, personalization, and transformation logic closer to users while keeping server setup and runtime operations out of your way.
Build in familiar ways
Create FastEdge apps with documented JavaScript and Rust SDK paths, then deploy them as WebAssembly applications at the edge.
Deploy without provisioning
Push apps through the Customer Portal, API, CLI, or Terraform and bring edge logic online without managing servers, regions, or infrastructure.
Run in an isolated sandbox
Keep edge applications isolated inside a WebAssembly sandbox designed for controlled request execution.
Scale with real traffic
Handle changing demand without pre-provisioning capacity or paying for idle infrastructure your application is not using.
Connect what logic needs
Use Secrets Manager for sensitive values and Edge Storage for fast reads from rules, flags, entitlements, or policy data.
Keep data where
decisions happen
Add Edge Storage when your edge logic
needs fast reads from rules, flags, entitlements, allowlists, blocklists, or policy data.
Keep the right data close to the request, and
send traffic back to origin only when needed.
Built for read-heavy edge data
Global write replication, typically within seconds
Good fit for flags, rules, entitlements, and allowlists
CDN delivers. FastEdge handles the logic.
Fast delivery is only the start. Access checks, routing, personalization, and response changes still go back to origin unless they run at the edge. FastEdge puts that logic closer to your users.
Change content, language, currency, experiments, or feature flags based on request context and nearby data.
Validate tokens, signed parameters, IPs, keys, and entitlement data before protected content is served.
Apply geo rules, release windows, failover logic, or smart-origin selection closer to the user.
Modify headers, rewrite URLs, transform content, or shape frontend responses before they reach the user.
Serve frontend responses, small APIs, generated files, or dynamic content directly from the edge.
Move repeat checks, lightweight API logic, and high-frequency policy reads to the edge so origin handles only what it needs to.
More of your edge stack. Less patchwork.
Bring delivery, compute, data, and security closer together on Gcore's edge platform.
Keep your request path growing without turning every new layer into another vendor project.
Edge Points of Presence
Delivering content closer to users around the world.
EDGE COMPUTE COLD START
Run WebAssembly logic at the edge without noticeable startup delay.
GLOBAL DATA REPLICATION
Distribute flags, rules, and entitlements across the edge.
UNIFIED SECURITY CONTEXT
Apply consistent security context to every platform request.
See the logic in action
Five FastEdge functions running on real Gcore edge servers. Pick a demo to see what it does and how it's written.
Rewrite HTML at the edge before it reaches the browser
Modify any HTML element — headings, links, attributes, or inner content — directly in the response stream, without touching your origin server.
use fastedge::{body::Body, http::{header, Error, Method, Request, Response, StatusCode}};
use regex::Regex;
#[fastedge::http]
fn main(req: Request<Body>) -> Result<Response<Body>, Error> {
// ... allow GET/HEAD, read ?addr= &from= &to=, parse the URL
let rsp = match request(&u) { /* ... */ };
let (parts, body) = rsp.into_parts();
let body = if let Some(mime) = parts.headers.get(header::CONTENT_TYPE) {
// ... check the type is text/html or text/plain
let org = String::from_utf8(body.to_vec()).unwrap();
let new_body = transform(org, from.to_string(), to.to_string(), /* ... */);
Body::from(new_body)
// ... other types pass through unchanged
};
// send response as is
Ok(Response::from_parts(parts, body))
}
fn transform(org: String, from: String, to: String, url: String, add_base: bool) -> String {
match Regex::new(from.as_str()) {
Err(e) => { /* ... */ }
Ok(re) => {
// ... add <base href> when ?base is set
re.replace_all(body.as_str(), to).to_string()
}
}
}Accept uploads at the edge and forward to object storage
Handle file uploads at the closest PoP and stream them to storage without sending the upload through your backend.
use std::time::Duration;
use fastedge::{body::Body, http::{header, Error, Method, Request, Response, StatusCode}};
use rusty_s3::{Bucket, Credentials, S3Action, UrlStyle};
use std::{collections::HashMap, env};
use url::Url;
#[fastedge::http]
fn main(req: Request<Body>) -> Result<Response<Body>, Error> {
// ... allow POST/PUT, read ?name= and Content-Type
let content = req.into_body();
// ... reject files over MAX_FILE_SIZE
let (signed_url, host) = match prepare_s3(fname) { /* ... */ };
// ... build a PUT request to the signed URL
let rsp = match fastedge::send_request(req) { /* ... */ };
// ... on 200, return the file URL instead of the S3 reply
Ok(Response::from_parts(parts, body))
}
fn prepare_s3(fname: &str) -> anyhow::Result<(Url, String)> {
/* read S3 access params from env */
let access_key = env::var("ACCESS_KEY")?;
let secret_key = env::var("SECRET_KEY")?;
// ... read REGION, BASE_HOSTNAME, BUCKET and build the bucket URL
let bucket = Bucket::new(parsed_url, UrlStyle::Path, bucket, region)?;
let creds = Credentials::new(access_key, secret_key);
let action = bucket.put_object(Some(&creds), fname);
let signed_url = action.sign(Duration::from_secs(60 * 60));
Ok((signed_url, host))
}Run an image model at the edge
Send an image and get back labels with confidence scores. The model is already loaded in the FastEdge runtime, and the app calls it by name.
use fastedge::wasi_nn::wasi::nn::{graph, tensor};
// ... other imports and ImageNet labels
#[fastedge::http]
fn main(req: Request<Body>) -> Result<Response<Body>, Error> {
// ... accept POST/PUT up to 2 MB, read ?model= (default mobilenet-v2)
let output = inference(&model_name, req.body())?;
// ... match scores to labels, keep those above 1%, return JSON
}
fn inference(model_name: &str, image: &[u8]) -> Result<TensorData> {
// the model is already loaded in the FastEdge runtime
let context = graph::load_by_name(model_name)?.init_execution_context()?;
// ... resize the image to 224×224 and turn it into a tensor
let output = context.compute(vec![("0".into(), tensor)])?;
Ok(output[0].1.data())
}Generate PDF documents on demand, without a server
Render PDFs from a template and request data directly at the edge. No backend, no lambda, no queue — just a function that returns a file.
import { jsPDF } from "jspdf";
import qs from "qs";
function createInvoice(company = "NA", customer = "NA", /* ... */) {
const doc = new jsPDF({
orientation: "p",
format: "a4",
});
// ... header, customer block, line items, total
return doc.output("arraybuffer");
}
async function eventHandler(event) {
const queryString = event.request.url.split("?")[1] ?? "";
const params = qs.parse(queryString);
const pdfDocument = createInvoice(
params.company,
params.customer,
// ... invoice-id, date, product fields
);
return new Response(pdfDocument, { status: 202 });
}
addEventListener("fetch", (event) => {
event.respondWith(eventHandler(event));
});Free to build. Usage-based to scale.
Start with a free edge app, then scale based on the compute and edge data your application actually uses.
FastEdge calls every month
100 ms runtime duration per call
50 MB memory per call
10M Edge Storage read requests
1M Edge Storage delete requests
720 MB·hours included storage
plus usage-based overages
3M FastEdge calls included
5s runtime duration per call
200 MB memory per call
10M Edge Storage read requests
10 MB included write size
Usage-based pricing beyond included limits
Need custom limits or migration support?
Plan high-volume workloads, custom usage, and advanced architecture needs.
Built for real traffic.
Ready for edge logic.
Because traffic still has to reach the right place even when demand spikes.
“TM’s key advantage lies in bringing content delivery, network infrastructure and edge capabilities together within one integrated ecosystem. This enables us to deliver highly customisable CDN solutions tailored to different content, audience and performance requirements.”
Start building where requests happen
Keep dynamic experiences fast, reduce backend pressure, and give every request a shorter path to the right response.
No credit card needed · Start in 2 minutes
What to know
before you build
Edge compute works best when every layer has a clear job.




