No description
  • Rust 99%
  • Shell 0.6%
  • Makefile 0.1%
  • HCL 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
itowlson b870e46ec6
Merge pull request #3712 from alexcrichton/update-wasm-tools-deps
Update wasm-tools/wit-bindgen dependencies
2026-09-10 08:17:07 +12:00
.cargo Statically link runtime into Windows binary 2024-12-16 14:09:09 +13:00
.devcontainer Fix test failure 2025-09-18 11:49:38 +02:00
.github Fix GitHub release creation failing when auto-generated notes exceed 125k chars (#3690) 2026-08-26 10:36:59 -06:00
.vscode Update recommended extensions to point at the replacement for crates -- dependi 2024-08-26 09:09:02 -06:00
crates Update wasm-tools/wit-bindgen dependencies 2026-09-09 07:21:45 -07:00
cross chore(*): more spinframework org/url updates 2025-04-01 13:29:29 -07:00
deploy chore(*): more spinframework org/url updates 2025-04-01 13:29:29 -07:00
docs Add a link from old docs' README to the new docs repo 2026-08-18 02:49:35 -04:00
examples Update wasm-tools/wit-bindgen dependencies 2026-09-09 07:21:45 -07:00
hack/o11y-stack Only set span as errored in variables when it might not be bad user input 2025-06-26 13:33:25 +02:00
scripts Workflow to finalize Wasmtime upgrade (#3627) 2026-07-22 22:59:46 +00:00
src doc and tests for false value of compose in push command 2026-08-20 21:27:52 -04:00
supply-chain Remove is-terminal 2025-04-22 12:21:29 +02:00
templates chore(rust-sdk-release): bump Spin Rust SDK to v7.0.0 (#3689) 2026-08-26 11:48:18 -06:00
tests Update wasm-tools/wit-bindgen dependencies 2026-09-09 07:21:45 -07:00
wit Merge pull request #3603 from itowlson/middleware-use-p3-final 2026-07-17 10:13:47 +12:00
.dockerignore Delete e2e testing crate now that it is unused 2024-01-12 15:44:43 +01:00
.envrc Patched build.rs to run on systems without rustup. Added flake for nix devshell 2023-12-21 11:23:10 -08:00
.gitignore Delete e2e testing crate now that it is unused 2024-01-12 15:44:43 +01:00
AGENTS.md Add AGENTS.md, repository guidelines for contribution (#3569) 2026-06-16 12:53:53 -06:00
build.rs Update to Rust 2024 2026-04-23 09:03:25 +12:00
Cargo.lock Update wasm-tools/wit-bindgen dependencies 2026-09-09 07:21:45 -07:00
Cargo.toml Update wasm-tools/wit-bindgen dependencies 2026-09-09 07:21:45 -07:00
CODE_OF_CONDUCT.md Update CoC (#3675) 2026-08-20 11:15:36 -06:00
CONTRIBUTING.md Update contributing link to point to spinframework.dev 2025-04-01 11:07:05 -07:00
Cross.toml Add taplo.toml and format tomls 2024-08-28 09:48:56 -04:00
flake.lock flake: update for newer rust 2025-02-19 14:25:16 +01:00
flake.nix ref(*): replace wasm32-wasi with wasm32-wasip1 2024-12-05 14:33:31 -07:00
GOVERNANCE.md update project roles in project Governance 2026-08-11 09:34:08 -04:00
LICENSE update Copyright to The Spin Framework Contributors 2025-03-10 15:22:24 -04:00
MAINTAINERS.md add Zhiwei as maintainer 2026-08-31 13:56:08 -04:00
Makefile fix: enable compiling when unsafe-aot-compilation feat enabled 2025-06-17 08:59:51 -07:00
README.md Revise Spin Project Meeting details in README 2026-08-17 12:24:13 -04:00
ROADMAP.md chore(*): more spinframework org/url updates 2025-04-01 13:29:29 -07:00
SECURITY.md chore: update SECURITY.md with supported versions section 2025-04-02 14:16:07 -07:00
taplo.toml Add taplo.toml and format tomls 2024-08-28 09:48:56 -04:00

spin logo

Spin is a framework for building, deploying, and running fast, secure, and composable cloud microservices with WebAssembly.

build status Slack

What is Spin?

Spin is an open source framework for building and running fast, secure, and composable cloud microservices with WebAssembly. It aims to be the easiest way to get started with WebAssembly microservices, and takes advantage of the latest developments in the WebAssembly component model and Wasmtime runtime.

Spin offers a simple CLI that helps you create, distribute, and execute applications, and in the next sections we will learn more about Spin applications and how to get started.

Getting started

See the Install Spin page of the Spin documentation for a detailed guide on installing and configuring Spin, but in short run the following commands:

curl -fsSL https://spinframework.dev/downloads/install.sh | bash
sudo mv ./spin /usr/local/bin/spin

Alternatively, you could build Spin from source.

To get started writing apps, follow the quickstart guide, and then follow the Rust, JavaScript, Python, or Go language guides, and the guide on writing Spin applications.

Language support

WebAssembly is a language-agnostic runtime: you can build WebAssembly components from a variety of source languages. Spin SDKs are available for several languages, including:

The Spin framework team supports the JavaScript, Rust, Go, and Python SDKs. Other language integrations are supported by their authors, and we're grateful to them for their work!

Usage

Below is an example of using the spin CLI to create a new Spin application. To run the example you will need to install the wasm32-wasip2 target for Rust.

$ rustup target add wasm32-wasip2

First, run the spin new command to create a Spin application from a template.

# Create a new Spin application named 'hello-rust' based on the Rust http template, accepting all defaults
$ spin new --accept-defaults -t http-rust hello-rust

Running the spin new command created a hello-rust directory with all the necessary files for your application. Change to the hello-rust directory and build the application with spin build, then run it locally with spin up:

# Compile to Wasm by executing the `build` command.
$ spin build
Executing the build command for component hello-rust: cargo build --target wasm32-wasip2 --release
    Finished release [optimized] target(s) in 0.03s
Successfully ran the build command for the Spin components.

# Run the application locally.
$ spin up
Logging component stdio to ".spin/logs/"

Serving http://127.0.0.1:3000
Available Routes:
  hello-rust: http://127.0.0.1:3000 (wildcard)

That's it! Now that the application is running, use your browser or cURL in another shell to try it out:

# Send a request to the application.
$ curl -i 127.0.0.1:3000
HTTP/1.1 200 OK
content-type: text/plain
transfer-encoding: chunked
date: Sun, 02 Mar 2025 20:09:11 GMT

Hello World!

You can make the app do more by editting the src/lib.rs file in the hello-rust directory using your favorite editor or IDE. To learn more about writing Spin applications see Writing Applications in the Spin documentation. To learn how to publish and distribute your application see the Publishing and Distribution guide in the Spin documentation.

Language Support for Spin Features

The table below summarizes the feature support in each of the language SDKs.

Feature Rust SDK Supported? TypeScript SDK Supported? Python SDK Supported? Tiny Go SDK Supported? C# SDK Supported?
Triggers
HTTP Supported Supported Supported Supported Supported
Redis Supported Supported Supported Supported Not Supported
APIs
Outbound HTTP Supported Supported Supported Supported Supported
Configuration Variables Supported Supported Supported Supported Supported
Key Value Storage Supported Supported Supported Supported Not Supported
SQLite Storage Supported Supported Supported Supported Not Supported
MySQL Supported Supported Not Supported Supported Not Supported
PostgreSQL Supported Supported Not Supported Supported Supported
Outbound Redis Supported Supported Supported Supported Supported
Serverless AI Supported Supported Supported Supported Not Supported
Extensibility
Authoring Custom Triggers Supported Not Supported Not Supported Not Supported Not Supported

Getting Involved and Contributing

We are delighted that you are interested in making Spin better! Thank you!

Each Monday at 9:00pm UTC, we meet to discuss Spin issues, roadmap, and ideas in our Spin Project Meetings. Demos are welcome. Link to the meeting can be found in the Spin Project Meeting agenda below. If this meeting time does not work for you, please propose a one-off meeting at a different time or a new recurring time in the Spin Slack Channel or in the issue queue. We will do our best to accommodate.

The Spin Project Meeting agenda is a public document. The document contains a rolling agenda with the date and time of each meeting, the Zoom link, and topics of discussion for the day. You will also find the meeting minutes for each meeting and the link to the recording. If you have something you would like to demo or discuss at the project meeting, we encourage you to add it to the agenda.

You can find the contributing guide here.

Stay in Touch

Follow us on Twitter: @spinframework

You can join the Spin community in the Spin CNCF Slack channel where you can ask questions, get help, and show off the cool things you are doing with Spin!