A personal automation layer designed to reduce cognitive load and execution friction for daily workflows.
- Interface: iPhone Shortcuts (trigger + UI)
- Transport: SSH
- Execution: macOS + shell scripts
- Targets: external APIs (ClickUp, Git, Discord, etc.)
iPhone (Shortcuts)
↓
SSH (secure trigger)
↓
Mac (execution unit)
↓
Shell scripts
↓
External APIs (ClickUp, Git, etc.)
The goal is simple:
Reduce effort and cognitive load for repetitive workflows by turning them into one-tap actions.
Instead of:
- opening tools
- navigating UIs
- repeating manual steps
I trigger workflows directly from my iPhone.
I initially thought about building a Stream Deck setup.
Instead, I realized:
- iOS Shortcuts already provide a distributed control surface
- iCloud sync makes shortcuts available across devices
- SSH enables full remote execution on a central machine
So I combined:
- Shortcuts = UI layer
- Mac = orchestration layer
- Shell scripts = logic layer
- iPhone Shortcuts + SSH to the Mac execution unit
- Host secrets for tokens/keys (see Configuration)
- Non-secret app config in
config/app.sh
The shared CLI expects the existing Homebrew installations of Bash 5 and
argc to be available on PATH. Verify the runtime with:
bash --version
argc --argc-versionThe CLI uses #!/usr/bin/env bash, so non-interactive SSH must put Homebrew
before the system Bash 3.2. Use the existing login-shell convention with an
explicit executable search path:
zsh -lc './bin/shortcuts --help'Install whisper.cpp CLI on the Mac:
brew install whisper-cppDownload IA model locally
curl -L "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large-v3.bin?download=true" -o ~/Workspace/shortcuts/vars/runtime/ggml-large-v3.binRequired for the summary step when a meeting was started with record.
Install the Cursor CLI on the Mac:
brew install jq- Node.js LTS on the Mac (currently v24.x Active LTS)
Install or upgrade with Homebrew:
Install once after cloning or pulling dependency changes:
cd ~/Workspace/shortcuts
npm install- Enable iCloud sync for Shortcuts (iPhone settings).
- On Mac, enable
System Settings -> General -> Sharing -> Remote Sessions.
Entry points source config/app.sh.
Host secrets (required in the environment — see dotfiles):
API_CLICKUP_TOKENBOT_DISCORD_TOKENAPI_CURSOR_TOKEN
Constants (set in config/app.sh):
API_CLICKUP_BASE_URLCLICKUP_BASE_URLCLICKUP_INBOX_IDCLICKUP_INBOX_PATHBOT_DISCORD_GUILD_IDBOT_DISCORD_VOICE_CHANNEL_ID
Non-interactive SSH: zsh -lc '…' or launchctl setenv so secrets are inherited.
- Enable Developer Mode in Discord (
User Settings -> Advanced). - In Discord Developer Portal, create an application and a bot.
- Copy bot token into host secrets as
BOT_DISCORD_TOKEN. - Invite the bot with scope
botand permissionsView Channels,Connect(optionalSpeak). - Set server and voice channel IDs in
config/app.sh:BOT_DISCORD_GUILD_IDBOT_DISCORD_VOICE_CHANNEL_ID
- Minimal cognitive friction
- One SSH trigger = one intent
- No UI navigation required for frequent tasks
- iPhone is trigger + UI only; Mac executes
- Secrets stay on the Mac (host env), never in Shortcuts / iCloud
- No secrets on the iPhone or in the repo
- Execution on a trusted local Mac
- SSH as the secure transport layer
Prioritized by ROI: frequency, time saved, implementation effort, and risk.
- Create a quick ClickUp inbox task
- Record a Discord meeting (join + record as sole entry)
- Stop a Discord meeting session
- Transcribe a recorded meeting
- Summarize a meeting transcript
- Notify teammates on Rocket.Chat when meeting starts
- Prepare a meeting workspace (Discord, ClickUp, browser, window layout)
- Convert Os ticket task into clickup task
- Create multiple inbox tasks from a multi-line list
- Schedule a Discord meeting
- Send a reusable Rocket.Chat notification
- Add generic macOS workspace actions (split windows, fullscreen, open context)
This is a personal control layer for my digital workflows.
Not a product.
Not a framework.
Just a system to execute daily work faster, with less friction.