Your project, one click away.

Turm reads the project in your folder and puts its commands on a bar under the shell. Pick an Xcode scheme, run it on a device, or add your own actions in a Turm.json.

Build, run and test in one click.

Turm reads the project in your current folder and puts its build, run, test and clean commands on a bar under the shell.

The bar only appears when it finds a project or a Turm.json.

Turmgit:(main)39 • +1056 -220(0.01s)
git branch --show-current
main
Turmgit:(main)39 • +1056 -220(0.01s)
cat Turm.json | head -4
{ "actions": [ { "id": "run",
Turmmain39•+1056-220
TurmDebug

25 kinds of project, found on their own.

Turm looks at the files in your folder, from Cargo, SwiftPM and Xcode to Node, Python, Go and PlatformIO. A folder with both a Cargo.toml and a package.json gets a group for each.

Languages and package managers
  • CargoCargo.toml
  • SwiftPMPackage.swift
  • Nodepackage.json
  • Denodeno.json
  • Pythonpyproject.toml
  • Gogo.mod
  • Zigbuild.zig
  • Mixmix.exs
  • Dartpubspec.yaml
  • RubyGemfile
  • PHPcomposer.json
  • .NET.csproj
Build systems
  • CMakeCMakeLists.txt
  • Mesonmeson.build
  • MakeMakefile
  • Gradlebuild.gradle
  • Mavenpom.xml
Apps and devices
  • Xcode.xcodeproj
  • Taurisrc-tauri/
  • PlatformIOplatformio.ini
Task runners
  • Justjustfile
  • TaskTaskfile.yml
Environments and infrastructure
  • Nixflake.nix
  • DockerDockerfile
  • Terraform*.tf

Your own actions, in one small file.

Add actions, hide the ones you do not need, define your own option toggles and pin what goes on the bar.

Turm looks for Turm.json in the shell's folder and then its parents, uses the first one it finds, and runs its actions from the folder that holds it.

{
"hide": ["cargo.doc", "cargo.tree", "node.outdated"],
"variants": [
{ "id": "region", "options": ["eu", "us"] }
],
"actions": [
{
"id": "deploy",
"title": "Deploy",
"command": "./scripts/deploy.sh --region {region}",
"icon": "paperplane"
}
],
"bar": {
"pinned": ["cargo.build", "cargo.test", "deploy"]
}
}
hide: leave detected actions out
eu

Pick the scheme, then where it runs.

Turm reads every scheme of your workspace or project straight from disk, and lists your Mac, simulators and connected devices as destinations, narrowed to the platforms the scheme builds for.

Run builds the scheme, then opens the app on your Mac or installs and launches it on a simulator or device.

Turm
TurmiOS
TurmCore
TurmTests
TurmMy Mac
A scheme's icon follows what it builds
  • App
  • Extension
  • Framework
  • Test bundle
  • Static library
  • Command line tool

The rest of the bar.

Found from anywhere inside the project.

Turm checks the shell's folder, then its parents, and stops at the first one it recognises. It looks at most 10 folders up and never reaches your home folder or /.

srcwhere the shell is
/never reached
~never reached
code
app
srcchecking
At most 10 folders, the nearest match wins.

Debug or Release, one click.

Commands with a switch get an option toggle on the bar: Debug or Release, a CMake configuration, a PlatformIO environment, Race on or off. The option you pick is filled into the command and remembered for each project folder.

cargo run {cargo-profile}
cargo run
Debug
Release--release
Debug

Runs in a sub-shell you can watch.

Each action runs in a hidden shell, so your own stays free. Watch opens its output over the pane, where you can stop it or pop it out into a shell of its own. The bar fills when the program reports progress, washes green on success and pulses red on failure.

pnpm build
Creating an optimized production build Compiled successfully

One Turm.json for the whole repository.

Put it at the repository root. A shell in any package below finds it by walking up, while detection still runs against the package. Its actions run from the root, and detected ones run from the package.

repo
Turm.json
services
apiCargo.toml
webpackage.jsonshell is here

Pin what you use. The rest is one menu away.

The bar shows each tool's featured actions and option toggles. Rearrange them in Settings, or pin an exact list in Turm.json. What does not fit collapses into the ... menu, which lists everything the project offers by category. With more than one tool detected, a selector at the left switches between them.

ProfileDebug
Run
Build
Test
Check
Clippy
Clean
Update dependencies
Create Turm.json
Cargo

Keep exploring.