Simploy is a super simple CI/CD deployment tool for personal and small team use. It lets you deploy your project to remote servers via SSH with minimal configuration, supporting environment separation and secret management.
- Easy setup: Just edit a config file and deploy
- Environment/server support: Deploy to multiple environments and servers
- Secret management: Keep sensitive values out of your repo
- pnpm & npx ready: Fast install, instant usage
pnpm add -g simploy
# or
npm install -g simploy
npx simploy init
npx simploy deploy --env dev
simploy init
This creates two files:
simploy.json
(main config)simploy.private.json
(secrets, auto-added to .gitignore)
{
"environments": {
"dev": {
"servers": [
{
"name": "web",
"ssh": {
"host": "${DEV_WEB_HOST}",
"port": 22,
"user": "${DEV_WEB_USER}",
"password": "${DEV_WEB_PASSWORD}"
},
"localPath": ".",
"remotePath": "/home/ubuntu/app",
"transferIgnores": ["node_modules", ".git", ".env"],
"remoteIgnoresWhenClean": [".env"],
"cleanShell": [
"screen -S app -X quit"
],
"shell": [
"cd /home/ubuntu/app",
"screen -dmS app",
"screen -S app -X stuff \"npm ci; npm start\n\""
]
}
],
"variables": {
"APP_NAME": "myapp"
}
}
}
}
{
"DEV_WEB_HOST": "your.server.com",
"DEV_WEB_USER": "ubuntu",
"DEV_WEB_PASSWORD": "yourpassword"
}
simploy deploy --env dev
# or
npx simploy deploy --env dev
- Use
--env
to select environment (default: dev) - All servers in the environment will be deployed sequentially
simploy init
: Create config filessimploy deploy --env <env>
: Deploy to the specified environment
- Use
${VAR_NAME}
in any config or shell command - Values are replaced from both
variables
in simploy.json and all keys in simploy.private.json
simploy.private.json
is automatically added to.gitignore
and should never be committed- Store all secrets (passwords, tokens, etc) in
simploy.private.json
Pull requests and issues are welcome!
ISC