Skip to content

D00mch/Manipula

Repository files navigation

Manipula

Manipula is a Clojure/CLJS automation workbench for scripted UI flows. It combines:

  • a Kit + Integrant backend
  • a Reagent + Shadow CLJS frontend
  • a WebSocket-driven scenario runner
  • robot and Playwright helpers for browser and desktop automation
  • a small scenario DSL authored as SCI-evaluated Clojure/EDN

The scenarios bundled in this repo are focused on wallet and dApp automation flows such as MetaMask, Stargate, WooFi, Bungee, Layer3, Matcha, and OmniBTC.

What Is In The App

  • Main tab: load a scenario from resources/public/automation, edit it, run it, and resume from a specific step.
  • Dev tab: test snippets, stream mouse/color info, and generate screen patterns for checks.
  • Docs tab: in-app reference for the scenario language.
  • Diff tab: compare text inside the frontend.

Project Docs

Run Locally

Prerequisites:

  • JDK 17+
  • Clojure CLI
  • Node.js / npm

Start a dev REPL:

clj -M:dev

Then start or reload the system from the user namespace:

(go)
(reset)

The app serves HTTP on http://localhost:3000 by default.

For frontend assets, run Shadow CLJS in a separate shell:

npx shadow-cljs watch app

or:

make shadow

The page expects /js/app.js from the Shadow build. If the CLJS bundle is missing, start the watcher or build the frontend first.

Scenario Authoring

Scenarios are compiled in two steps:

  1. SCI evaluates the source as Clojure data/code.
  2. clojure.spec validates the resulting action tree.

Supported action types include:

  • :group
  • :open
  • :keyboard
  • :click
  • :mouse-move
  • :mouse-rifle
  • :scroll
  • :to-clipboard

Supported checks include:

  • :pattern
  • :!pattern
  • :opened!
  • :focused
  • :lang-eng
  • :screen-size

Scenarios can also:

  • reuse actions by :name
  • skip failures with :safe
  • repeat groups with :repeat-unless
  • repeat from inside a group with :regroup

Shared helpers live in resources/public/automation/common/stdlib.edn.

Test And Build

Run tests:

clj -M:test

Build the uberjar:

clj -T:build all

Build the container image:

docker build -t manipula .

Notes

  • Only one scenario can run at a time.
  • There are a few stale build/key-management hooks in the repo; see INFO.md before changing build or secret-handling code.

About

The project to manipulate desktop

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages