Skip to content

vamoose

Quickstart

Zero to your first approved time-off hold in a few minutes.

1. Install

macOS and Linux:

brew install dcadolph/tap/vamoose

Windows:

scoop bucket add vamoose https://github.com/dcadolph/scoop-vamoose
scoop install vamoose

Or build from source with Go 1.26 or newer:

go install github.com/dcadolph/vamoose@latest

Prebuilt zips and tarballs for every platform are on the releases page.

2. Sign in

vamoose works with Microsoft Graph (Outlook, Microsoft 365, Teams), Google Calendar, Apple iCloud, and any standard CalDAV host. They run the same commands, so pick on setup cost:

Backend What it costs you up front  
Apple iCloud An app-specific password. Fastest start, but iCloud does not report the approver's accept over CalDAV, so approval needs the macOS helper or Slack.
Google Ten minutes creating your own OAuth client in the Google Cloud console. Approval works.
CalDAV Your server URL and account password. Approval works.
Microsoft Graph An Entra app registration, which usually means an admin. Approval works, and it is the only backend with a directory, so it resolves your manager and team for you.

Google is shown here, since it is the common case where you can finish alone and still see the whole approval flow. Create an OAuth client of type desktop app in the Google Cloud console once, enable the Google Calendar API, then sign in:

export VAMOOSE_PROVIDER=google
export VAMOOSE_TIMEZONE=America/Chicago
export VAMOOSE_GOOGLE_CLIENT_ID=<oauth-desktop-client-id>
export VAMOOSE_GOOGLE_CLIENT_SECRET=<oauth-desktop-client-secret>
vamoose login

Your browser opens once to grant access, and the token is cached for later commands. The consent screen warns that the app is unverified, which is expected for a client you created yourself: choose Advanced and continue. If consent is denied outright, add your own address under Google Auth Platform, Audience, Test users.

Full setup for every backend, including a Google troubleshooting table, is in providers.

3. Check your setup

vamoose doctor

It reports what is configured and what is missing, so setup is a checklist, not a guess. Then confirm access:

vamoose whoami

This prints the signed-in user and, where the backend has a directory, your manager and team. Google, iCloud, and CalDAV have no directory, so pass your approver with --manager and set your team with vamoose team set.

4. Request time off

Create a hold shown free, so it blocks nobody, and invite your manager to approve it:

vamoose off next week --subject "Out: beach week" --manager boss@work.com

See whether they have accepted:

vamoose check

Once approved, fan out to the team as optional attendees, so everyone sees you are out without their calendars getting blocked:

vamoose promote

That is the built-in pto workflow: hold, approve, notify.

5. Let it advance on its own

Add --watch and run the daemon in the background. It promotes the team the moment your manager approves:

vamoose off next week --subject "Out: beach week" --manager boss@work.com --watch
vamoose daemon

vamoose service prints a launchd or systemd manifest to run the daemon unattended.

6. Prefer clicking?

vamoose app opens a local dashboard: run workflows, design them on a node canvas with drag-to-wire branches, act on watched holds, manage schedules, and read the run history. On Windows and Linux, vamoose tray puts the moose in the system tray to act on holds from a dropdown and keep the daemon running for you. On macOS, make tray builds the native menu bar version.

Where next

Guide What's in it  
Concepts How holds, approval, and workflows fit together.
Workflows Design your own, with branching, delays, guards, and approvers.
Commands Every command, flag, and environment variable.
Slack Run vamoose from slash commands, with approval buttons.
Claude Drive and author workflows from Claude over MCP.