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!
- Containers & Serverless: Deploy both containers and Lambda functions
- 30+ AWS Resources: SQL/NoSQL databases, load balancers, API gateways, Redis, MongoDB Atlas, and more
- Risk-free: extend, override or eject anytime
- Infrastructure as Code: TypeScript, YAML, or JSON. 97% shorter than writing it yourself.
- Built-in CI/CD: Supports both Push-to-deploy and Preview deploymnets.
- Development Mode: Run services locally while connected to cloud resources
- Smart Builds: Zero-config, optimized parallel builds with advanced caching
- Security Built-in: Secret management, least privilege permissions, private networking
- Cost Optimization: Detailed cost breakdown across all stacks and accounts
- Easy Debugging: Connect to running containers, access logs and metrics instantly
- Production-grade: Configured according to all of the AWS well-architected best practices
Install Stacktape globally via npm:
npm install -g stacktapeOr use it directly with npx:
npx stacktape --version- Initialize a new project:
stacktape init- Configure your infrastructure using TypeScript:
import {
defineConfig,
LambdaFunction,
HttpApiGateway,
HttpApiIntegration,
DynamoDbTable,
StacktapeLambdaBuildpackPackaging
} from 'stacktape';
export default defineConfig(({ stage }) => {
const database = new DynamoDbTable('myDatabase', {
primaryKey: {
partitionKey: { name: 'id', type: 'string' }
}
});
const api = new HttpApiGateway('api', {
cors: { enabled: true }
});
const myFunction = new LambdaFunction('myFunction', {
packaging: new StacktapeLambdaBuildpackPackaging({
entryfilePath: './src/index.ts'
}),
events: [
new HttpApiIntegration({
httpApiGatewayName: api.resourceName,
method: 'GET',
path: '/'
})
],
connectTo: [database],
environment: {
TABLE_NAME: database.name
}
});
return {
resources: { api, myFunction, database }
};
});- Deploy to AWS:
stacktape deploy --stage dev --region us-east-1That's it! Your app is now running on AWS. π
Stacktape supports three configuration formats:
// stacktape.ts
import { defineConfig, LambdaFunction } from 'stacktape';
export default defineConfig(({ stage }) => ({
resources: {
// Your resources here
}
}));# stacktape.yml
resources:
myFunction:
type: function
properties:
packaging:
type: stacktape-lambda-buildpack
properties:
entryfilePath: ./src/index.ts{
"resources": {
"myFunction": {
"type": "function",
"properties": {}
}
}
}Stacktape supports 30+ AWS resource types out of the box:
Compute:
- Lambda Functions
- Web Services (ECS Fargate)
- Multi-Container Workloads
- Batch Jobs
- Worker Services
- Edge Lambda Functions
Databases:
- PostgreSQL, MySQL (RDS)
- DynamoDB Tables
- MongoDB Atlas Clusters
- Redis Clusters (ElastiCache & Upstash)
Networking:
- HTTP API Gateway
- REST API Gateway
- Load Balancers
- Network Load Balancers
Storage & CDN:
- S3 Buckets
- Hosting Buckets (with CloudFront)
Other:
- User Auth Pools (Cognito)
- Event Bus (EventBridge)
- SQS Queues
- SNS Topics
- State Machines (Step Functions)
- Bastion Hosts (Jump Hosts)
- Web Application Firewall
- And more...
Run your services in development mode to iterate faster:
stacktape devThis allows you to test changes without redeploying every time.
Logs and metrics are available in stacktape console
stacktape logs:tail --resource myFunctionDefine reusable scripts in your config:
import { LocalScriptWithCommand } from 'stacktape';
export default defineConfig(() => ({
scripts: {
migrate: new LocalScriptWithCommand({
executeCommand: 'npm run migrate',
connectTo: [database],
environment: { DATABASE_URL: database.connectionString }
})
}
}));Run them with:
stacktape script:run --scriptName migrateStacktape offers a console that allows you to deploy and manage your stacks.
https://www.stacktape.com/videos/2-manage.mp4
Increase security by keeping services private:
const privateService = new PrivateService('privateService', {
// Configuration
});
const bastion = new Bastion('bastion', {
// Use bastion to access private resources
});Need more control? Override any AWS resource:
const myFunction = new LambdaFunction('myFunction', {
// ... standard config
overrides: {
lambda: {
MemorySize: 4096,
Timeout: 900
},
lambdaLogGroup: {
RetentionInDays: 7
}
}
});Or extend with raw CloudFormation or AWS CDK constructs.
If you don't want to use Stacktape console, you can use Stacktape core completely free. We're currently working on a build that doesn't require you to be logged in to Stacktape.
Paid versions of Stacktape include:
- CI/CD pipeline (Github, Gitlab, Bitbucket)
- Web-based console for managing your stack
- Browse logs, metrics, costs and more
- Remote session to deployed containers
- Secrets management
- Guardrails and alarms
- Notifications
- Premium support with 8 minutes average response time
If you want to use YAML-based configuration, we recommend installing Stacktape editor extension:
- β Validation and error checking
- π‘ Intelligent autocompletion
- π Inline documentation
We welcome contributions!
For QA, we use our own CI/CD pipeline which is not yet a part of this repository. For the time being, feel free to submit a PR, and we'll run it through our pipeline.
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 β’ Starter Projects
Made with β€οΈ by the Stacktape team in EU