Learn how to connect Bolt.new AI with Wasabi in 2025 using this simple, clear step-by-step integration guide for faster workflows.

Book a call with an Expert
Starting a new venture? Need to upgrade your web app? RapidDev builds application with your growth in mind.
To integrate Bolt.new with Wasabi, you don’t “connect Bolt directly to Wasabi.” Instead, you write normal backend code inside Bolt.new’s server environment and use the Wasabi S3‑compatible API (which is the same API surface as AWS S3). That means you can use any standard AWS S3 SDK, point it at Wasabi’s endpoint, load your Wasabi keys through environment variables, and perform uploads/downloads exactly like you would with S3. Bolt.new just executes your code; the integration happens through HTTP calls to Wasabi’s REST API.
You wire a backend module inside Bolt.new that talks to Wasabi’s S3‑compatible REST endpoints using your Wasabi access key + secret key. You store those keys in Bolt.new environment variables, not in your code. Then you use an AWS S3 SDK (JavaScript, Python, Go—whatever backend runtime you’re using inside Bolt.new) and override the endpoint so that the SDK sends all S3 API calls to Wasabi instead of AWS.
In Bolt.new, create a backend file (like server.js or an API route). Install AWS SDK v3:
npm install @aws-sdk/client-s3
Then configure the client to use Wasabi’s endpoint:
// server/wasabiClient.js
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
const wasabi = new S3Client({
region: "us-east-1", // use your chosen region
endpoint: "https://s3.us-east-1.wasabisys.com", // Wasabi S3 endpoint
credentials: {
accessKeyId: process.env.WASABI_ACCESS_KEY, // set these in Bolt.new env panel
secretAccessKey: process.env.WASABI_SECRET_KEY
},
forcePathStyle: true // Wasabi recommends enabling this for best compatibility
});
export async function uploadToWasabi(bucket, key, data) {
// data can be Buffer, string, or stream
const command = new PutObjectCommand({
Bucket: bucket,
Key: key,
Body: data
});
return await wasabi.send(command);
}
Now you can call this from any API route:
// server/routes/upload.js
import { uploadToWasabi } from "../wasabiClient.js";
export default async function handler(req, res) {
try {
const fileContent = "Hello Wasabi!"; // in reality, take from req.files or req.body
await uploadToWasabi("my-bucket", "test.txt", fileContent);
res.json({ ok: true });
} catch (err) {
res.status(500).json({ error: err.message });
}
}
In the Bolt.new UI, open the Environment panel and create:
Never hard‑code keys in your JS files.
// server/routes/signedUrl.js
import { S3Client, PutObjectCommand, getSignedUrl } from "@aws-sdk/s3-request-presigner";
const client = new S3Client({
region: "us-east-1",
endpoint: "https://s3.us-east-1.wasabisys.com",
credentials: {
accessKeyId: process.env.WASABI_ACCESS_KEY,
secretAccessKey: process.env.WASABI_SECRET_KEY
},
forcePathStyle: true
});
export default async function handler(req, res) {
const command = new PutObjectCommand({
Bucket: "my-bucket",
Key: "upload-target.txt"
});
const url = await getSignedUrl(client, command, { expiresIn: 300 }); // 5 minutes
res.json({ url });
}
This lets your frontend POST the file directly to Wasabi, reducing load on your Bolt backend.
Integrating Bolt.new with Wasabi means using normal backend code plus S3 API calls. Use the AWS SDK, point the endpoint to Wasabi, store keys in environment variables, and call Wasabi through HTTPS. That’s it—no special Bolt integration layer, just clean standard API wiring.
When it comes to serving you, we sweat the little things. That’s why our work makes a big impact.