Automation Desk

ActionForge

Many watch-a-folder rules in one rules file, each failing on its own.

Free right now. No account, no card

Get ActionForge free → Windows & Mac · one file, nothing to install

Preview

1 interface design, then a screenshot of it running. Drag, scroll or use the arrows.

Interface design ActionForge, 1 of 1
Screenshot ActionForge running on Windows today

Free while we’re in preview

Get ActionForge

Many watch-a-folder rules in one rules file, each failing on its own.

The Mac button is for Apple Silicon. On an older Intel Mac, get this one instead.

One file, both ways. Double-click it for the window. Run the same file from a command prompt with arguments and it behaves as the command-line tool, because the engine is inside it. Nothing else to download and nothing to keep beside it.

Early preview. The window has been built and run, but not yet on a real Windows PC or Mac, so expect rough edges. The engine underneath it is fully tested.

  • One file, no installer
  • Runs on your machine, offline
  • Source code published below

Free while in preview. It isn’t signed yet, so Windows or macOS will ask you to confirm the first time you open it. here is exactly what to click. At launch, ActionForge is included in every plan along with the rest of the range.

The config file is the whole idea

MacroDeck watches one folder with one command typed on the command line. ActionForge reads a JSON file instead, and every rule in it gets its own directory, its own extension filter, its own command, and its own memory of which files it has seen.

That last part matters more than the flag count. If one rule’s watch directory doesn’t exist yet, that rule prints an error and retries on the next poll. The other rules never notice. When the directory finally appears, it takes a fresh baseline and carries on without a restart.

{file} in a rule’s command becomes the triggering file’s absolute path, and the command goes through /bin/sh -c or cmd /C. Default poll is every 2 seconds. --once does a single pass over everything and exits, which is what you want from cron. --log writes one JSON object per trigger.

Run actionforge validate --config rules.json before you trust a file. It catches duplicate rule names and empty fields without watching anything.

Not in this build

No text expansion, no clipboard variables, no keyboard or mouse macros. Those need OS-level input hooks. This is file watching.

Questions about ActionForge

What does ActionForge do?

ActionForge is for the jobs that are yours alone: convert the drawing somebody dropped in the shared folder, add the new invoice to the spreadsheet, publish the report. You write down the folder to keep an eye on, the sort of file to react to, and the command to run on it — and ActionForge runs it for you. Because those commands are your own, ActionForge cannot promise what they will do; it can only promise to show you the list before it runs any of them.

Will ActionForge delete my files?

ActionForge does not change your files itself. It runs the command you gave it when a rule matches, so what happens to a file is whatever that command does. Try a new rule against a copy first.

Does ActionForge send anything over the internet?

No. There is no network code compiled into ActionForge at all, nothing in the binary can open a socket. 88 of the 100 programs here are like that.

Does ActionForge run on a Mac?

Yes. There are builds for Apple Silicon and for Intel Macs, as well as for Windows and Linux, one file each, with no installer and nothing to uninstall.

Is ActionForge free?

Yes, while Techlosoft is in preview: no account, no card, and nothing switched off. Later it is part of a plan covering all 100 programs rather than sold on its own, and anything you download now carries on working.

Reading on the job itself

Advanced & technical details Command-line builds, source code, checksums and a recorded session, for developers and IT teams

A working CLI prototype of the multi-rule automation engine: many independent named folder-watch rules defined in one config file, running as a single daemon with per-rule fault isolation — a rule whose folder doesn't exist yet keeps retrying without taking down the others. Text expansion and global keyboard/mouse macros need OS UI-automation APIs and are on the roadmap.

Naming status

Working name only — brand verdict **AVOID** (Very High). Collision: ActionForge. Rename completely.

What it draws on

Existing paid software whose best ideas shaped this program: PhraseExpress, Macro Express Pro, Jitbit Macro Recorder, ClipboardFusion Pro.

Command line

There is nothing extra to install. The program you download is the command-line tool as well: give it arguments instead of double-clicking it and it runs as one, with its output on your terminal. The standalone builds below are the same engine on its own, for machines where you would rather not ship a window at all.

ActionForge - multi-rule, config-file-driven automation daemon

Usage:
  actionforge run --config <rules.json> [--interval 2s] [--once] [--run-existing] [--log events.log]
  actionforge validate --config <rules.json>
  actionforge -h | --help

Commands:
  run        Watch every rule in the config file concurrently and run each
             rule's command when matching files appear or change.
  validate   Parse and sanity-check a config file without watching anything.

Flags for 'run':
  --config <path>     Path to the JSON rules file (required)
  --interval <dur>    Poll interval, e.g. 500ms, 2s, 1m (default 2s)
  --once              Do a single pass over all rules' directories and exit
  --run-existing       Treat files already present at startup as triggers
  --log <path>        Append a JSON-lines event record per trigger

Flags for 'validate':
  --config <path>     Path to the JSON rules file (required)

Config file format:
  {
    "rules": [
      {
        "name": "screenshots-to-archive",
        "watch_dir": "/tmp/incoming",
        "extensions": [".png", ".jpg"],
        "run": "cp {file} /tmp/archive/"
      }
    ]
  }

  "extensions" is optional; omit or leave empty to match every file in
  that rule's watch_dir. "{file}" in "run" is replaced with the absolute
  path of the triggering file.

Recorded from the shipped binary, not written by hand.

Source

Every file the program is built from:

console.go · console_test.go · guided.go · main.go

SHA-256 checksums · build instructions & scope notes · full build plan