AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻译准备中
97% of AWS capabilities, 3% complexity
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Stacktape - PaaS 2.0 that deploys to your own AWS account
🎉 Now Open Source!
Stacktape is now open source after being a closed-source product for several years. We're excited to share our
DevOps-free cloud development framework with the community!
From scratch to production-grade AWS infra in a day. No DevOps knowledge required查看完整 README ↗Website • Documentation • Discord • Examples
Stacktape is now open source after being a closed-source product for several years. We're excited to share our DevOps-free cloud development framework with the community!
Install Stacktape globally via npm:
npm install -g stacktape
Or use it directly with npx:
npx stacktape --version
stacktape init
import {
defineConfig,
DynamoDbTable,
HttpApiGateway,
HttpApiIntegration,
LambdaFunction,
JsBundleLambdaPackaging
} from 'stacktape';
export default defineConfig(({ stage }) => {
const database = new DynamoDbTable({
primaryKey: {
partitionKey: { name: 'id', type: 'string' }
}
});
const api = new HttpApiGateway({
cors: { enabled: true },
customDomains: [{ domainName: stage === 'production' ? 'acme.com' : `${stage}-acme.com` }]
});
const myFunction = new LambdaFunction({
packaging: new JsBundleLambdaPackaging({
entryfilePath: './src/index.ts'
}),
events: [
new HttpApiIntegration({
httpApiGatewayName: api,
method: 'GET',
path: '/'
})
],
connectTo: [database],
environment: {
TABLE_NAME: database.name
}
});
return {
resources: { api, myFunction, database }
};
});
stacktape deploy --stage dev --region us-east-1
That's it! Your app is now running on AWS. 🎉
Stacktape supports three configuration formats:
// stacktape.ts
import { defineConfig } from 'stacktape';
export default defineConfig(({ stage }) => ({
resources: {
// Your resources here
}
}));
# stacktape.yml
resources:
myFunction:
type: function
properties:
packaging:
type: js-bundle
properties:
entryfilePath: ./src/index.ts
{
"resources": {
"myFunction": {
"type": "function",
"properties": {
"packaging": {
"type": "js-bundle",
"properties": {
"entryfilePath": "./src/index.ts"
}
}
}
}
}
}
Stacktape supports 30+ AWS resource types out of the box:
Compute:
Databases:
Networking:
Storage & CDN:
Other:
Run your services in development mode to iterate faster:
stacktape dev
This allows you to test changes without redeploying every time.
Logs and metrics are available in stacktape console
stacktape logs:tail --resource myFunction
Define reusable scripts in your config:
import { defineConfig, LocalScript } from 'stacktape';
export default defineConfig(() => ({
scripts: {
migrate: new LocalScript({
executeCommand: 'npm run migrate',
connectTo: [database],
environment: { DATABASE_URL: database.connectionString }
})
}
}));
Run them with:
stacktape script:run --scriptName migrate
Stacktape offers a console that allows you to deploy and manage your stacks.
https://www.stacktape.com/videos/2-manage.mp4
Increase security by keeping your database private (VPC-only):
const mainDatabase = new RelationalDatabase({
engine: new RdsEnginePostgres({
primaryInstance: {
instanceSize: stage === 'production' ? 'db.t4g.medium' : 'db.t4g.micro',
multiAz: stage === 'production'
},
version: '18.1'
}),
credentials: {
masterUserName: 'master-user',
masterUserPassword: $Secret('my-secret-password')
},
accessibility: {
accessibilityMode: 'vpc',
forceDisablePublicIp: true
}
});
Then, add a bastion resource, so you can perform management tasks.
const bastion = new Bastion({});
const migrationScript = new LocalScriptWithBastionTunneling({
executeCommand: 'prisma migrate',
connectTo: [mainDatabase]
});
Need more control? Override any AWS resource:
const myFunction = new LambdaFunction({
// ... standard config
overrides: {
lambda: {
description: 'Overridden description'
}
},
transforms: {
lambda: (props) => {
return {
...props,
MemorySize: (props.MemorySize ?? 128) * 2
};
}
}
});
Or extend with raw CloudFormation or AWS CDK constructs.
export default defineConfig(() => {
const myFunction = new LambdaFunction({
// lambda config
});
return {
resources: { myFunction },
cloudformationResources: {
mySnsTopic: {
Type: 'AWS::SNS::Topic',
Properties: {
TopicName: 'my-test-topic',
DisplayName: 'My Test Topic'
}
}
}
};
});
The Console manages connected AWS accounts, projects, deployments, logs, costs and CI/CD integrations. See the available plans.
Local package, synth and validate commands use the standard AWS credential chain and do not require a Console
login. Deployment and other control-plane workflows authenticate through Stacktape.
If you want to use YAML-based configuration, we recommend installing Stacktape editor extension:
We welcome contributions!
The public repository contains the CLI, documentation, init wizard, website, VS Code extension and reusable packages.
apps/console is an optional private Git submodule. Public contributions can install, test, build and produce release
artifacts without it.
Use Node 24.15 or newer within the Node 24 release line, pnpm 11.17.0 and Bun 1.4.1:
pnpm install --frozen-lockfile
pnpm check:public
Public CI runs the public gate. Contributors with private Console access also run
pnpm check:integrated. Use the maintainer documentation for architecture, development, testing,
generated-file ownership and releases.
Stacktape is released under the MIT License.
"Stacktape (the product) and Stacktape (the team) have helped us move extremely fast. They abstract away so much of the complexity of AWS, and let us focus on our application logic, instead of infrastructure configuration."
— Henry Garrett, Founding Engineer, Recipts.xyz
"Stacktape has been a game-changer for Lastmyle, providing a secure and intuitive way to manage our AWS deployments. It's allowed our small team to efficiently handle environments using GitOps, all while keeping a tight rein on costs.."
— Rhys Williams, CTO & Frounder, Lastmyle
Ready to simplify your AWS deployments?
Get Started • Join Slack • Examples
Made with ❤️ by the Stacktape team in EU