---
title: Community-supported SDKs on the Compute platform
summary: null
url: https://www.fastly.com/documentation/guides/compute/developer-guides/custom
---

Because the Compute platform is powered by the [WebAssembly System Interface (WASI)](https://github.com/WebAssembly/WASI), you can write Compute programs in any WASI-supporting language. Though Fastly provides and recommends our official language SDKs, we welcome customers who want to bring their own build process.

> **WARNING:** Fastly makes no warranty on third-party software. We assume no responsibility for errors or omissions in the third-party software or documentation available. Using such software is done entirely at your own discretion and risk.

## Using a community-supported SDK

When using a third-party SDK, you should follow the documentation provided by the maintainers. Here are some of the community-maintained SDKs that we know about:

| Language  | Repository                                                                                      | Author                                                |
| --------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| **Zig**   | [jedisct1/zigly](https://github.com/jedisct1/zigly)                                             | [Frank Denis](https://twitter.com/jedisct1)           |
| **Swift** | [AndrewBarba/swift-compute-runtime](https://github.com/AndrewBarba/swift-compute-runtime)       | [Andrew Barba](https://twitter.com/andrew_barba)      |
| **Ruby**  | [kateinoigakukun/ruby-compute-runtime](https://github.com/kateinoigakukun/ruby-compute-runtime) | [Yuta Saito](https://twitter.com/kateinoigakukun)     |
| **.NET**  | [harmony7/dotnet-compute](https://github.com/harmony7/dotnet-compute)                           | [Katsuyuki Omuro](https://twitter.com/katsuyukiomuro) |

Additionally, the following SDKs have been published by Fastly in the past but are no longer supported:

| Language           | SDK module                                                                    | More info                                                                                                       |
| ------------------ | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| **AssemblyScript** | [@fastly/as-compute](https://www.npmjs.com/package/@fastly/as-compute) on npm | See [Using AssemblyScript](https://www.fastly.com/documentation/guides/compute/developer-guides/assemblyscript) |

## Building your own SDK

To execute your Wasm applications on the Compute platform (and the local testing server), you need to use our Compute hostcalls, which are defined at <https://github.com/fastly/Viceroy/tree/main/wasm_abi/compute-at-edge-abi>. These `.witx` files define the functionality of the platform. Use them with your chosen language's WASI tooling to generate stubs or interfaces for your custom SDK to implement.

Once you have created interfaces for the WASI modules required for basic functionality (`fastly_http_req`, `fastly_http_body`) you should be able to create a Compute program that will respond to incoming requests.

When using one of our official SDKs, a program can be compiled with <kbd>fastly compute build</kbd>. This will use the appropriate toolchain of your chosen language to produce a Wasm binary. Pack your builds with Fastly metadata into a package that can be uploaded to the Compute platform. When using your own build process, configure your compiler to produce a Wasm binary and then <kbd>fastly compute pack</kbd>:

```term
$ fastly compute pack --wasm-binary bin/main.wasm
✓ Initializing...
✓ Copying wasm binary...
✓ Copying manifest...
✓ Creating .tar.gz file...
```

The program can now be deployed using the standard <kbd>fastly compute deploy</kbd> command or can be tested locally using <kbd>fastly compute serve</kbd>.

## Publishing your SDK

Assuming your dependencies' licenses allow for it, you are welcome to share your custom Compute SDK publicly. Ensure that you communicate with your users that your SDK is not supported by Fastly. It's up to you to maintain the security and compatibility of your builds. You also need resolve any issues that your users may have.
