CI/CD, logs and errors
on your own server.
argon is one CLI tool that lives on your server. It deploys from workflows in your repo, collects your logs, tracks errors and watches the machine, all from the terminal. Connect it to IWS Console when you want a web UI.
curl -fsSL https://console-server.iwsconsole.com/argon/install.sh | sudo bash Linux · amd64 and arm64 · systemd
Everything a server needs after the code lands
Workflows in your repo
Write .argon/workflow/*.yml in GitHub Actions syntax. argon reads the workflow from the commit it ships, so the pipeline is versioned with the code.
CI/CD without a webhook
argon checks your Git remote itself, every 5 minutes or as often as you set: pushes, tags, pull requests and schedules start runs. A webhook, served by argon itself, makes it check at once.
Never runs your code as root
Steps run as the project folder's owner in a clean environment. Restarts are limited to the services root allows. No port is opened unless root asks.
Logs found for you
Add a project and argon finds its logs: pm2, systemd, Docker Compose and the usual log files. Query, filter and follow them from the terminal.
Error tracking, Sentry compatible
Point any Sentry SDK at argon. Errors are grouped into issues, linked to the deploy that shipped them, with the log lines that came before.
A live view in the terminal
Type argon. Like top, it shows CPU, memory and disks, your projects, the deploy queue and live logs, refreshed every two seconds.
From install to first deploy in three steps
Install
One line on the server. argon checks the download's SHA-256, installs the argon CLI tool and starts its systemd service.
Add a project
Run sudo argon add project in the repo root. Logs start flowing at once; a workflow, if there is one, makes it deployable.
Deploy
Push to your branch, or run sudo argon deploy and pick the project and workflow. Follow the run live.
The syntax you already know
A subset of GitHub Actions: jobs, needs, steps, if, env, inputs, schedules and secrets. Each
run: goes through bash as the project's owner. argon adds three steps of its own:
restart a pm2 process or systemd unit, check a health URL, write a note to the run's log.
- One run at a time per server; the rest queue, first come first served
- Approval for production, from the CLI or a connected app
- Fast-forward only: work on the server is never thrown away
- Secrets stay on the server and are hidden in logs
name: Production
on:
workflow_dispatch:
push: {branches: [main]}
environment: production
jobs:
build:
steps:
- run: pnpm install --frozen-lockfile
- run: pnpm build
release:
needs: build
steps:
- run: pnpm migrate
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
- argon/restart: pm2:my-app
- argon/health: https://my-app.example.com/health Everything works from the CLI
argon has no web UI of its own and needs none. Every action is a command, and plain
argon opens a live view of the server. Apps such as IWS Console connect to argon
over a signed protocol and become its UI, with the scopes root grants them.
Put argon on your server
One line to install, one command to add a project. The guide covers the rest.