In a Terminal
Use Technique as a tool to run through a procedure ... in your terminal
Running interactively
The technique binary can be used to run through a Technique procedure interactively in your terminal:
$ technique run PanGalactic.tq
This initiates an ordered evaluation of the tree represented by the input document.
$ technique run PanGalactic.tq
⇒ / PanGalactic,1 #000191
↘ mix_gargle_blaster:
mix_gargle_blaster :
↘ I
I. Mix Drink
↘ I/recipe:
recipe :
→ I/recipe:/1
1. Take the juice from one bottle of Ol' Janx Spirit.
→ I/recipe:/1 ✓
→ I/recipe:/2
2. Pour in one measure of water from the seas of Santraginus V.
→ I/recipe:/2 ✓
→ I/recipe:/3
3. Allow three cubes of Arcturan Mega-gin to
melt into it <prepare_mega_gin>.
↘ I/prepare_mega_gin:
prepare_mega_gin :
It is very important to prepare the Mega-gin properly.
→ I/prepare_mega_gin:/1
1. Remove cubes from tray. They must still be frozen — if they
thaw first the benzine is lost.
→ I/prepare_mega_gin:/1 ▶ █
Recording results
Each step, substep, sub-substep, scope, and enclosing procedure, section, and
the document as a whole has a result, which is one of Done, Skip, or
Fail and a value, often unit () (known as "Unitus" in the Technique
language) or a string literal "Late, as in The Late Arthur Dent" (the
"Literali" value type). Other more complex types can also be returned.
As the document is evaluated the current scope is printed and then you are prompted for a result. Most of the time you just want to do the default action, which is to declare that the step you're on is done. You do this by pressing <Enter>.
On the other hand, sometimes you need to do something other than record a successful result. Instead of the default action you can press <Esc> which shows a menu of alternatives. You will have the choice to skip the step <S>, mark the step as failed (optionally giving a reason) <F>, or to quit the run <Q>, possibly to resume later.
Resuming an interrupted run
An previous run that was paused or interrupted can be continued:
$ technique resume 42
Running automatically as a script
A document can instead be run automatically:
$ technique run --mode=automatic PanGalactic.tq
⇒ / PanGalactic,1 #000193
↘ mix_gargle_blaster:
mix_gargle_blaster :
↘ I
I. Mix Drink
↘ I/recipe:
recipe :
→ I/recipe:/1
1. Take the juice from one bottle of Ol' Janx Spirit.
→ I/recipe:/1 ⊘
→ I/recipe:/2
2. Pour in one measure of water from the seas of Santraginus V.
→ I/recipe:/2 ⊘
→ I/recipe:/3
3. Allow three cubes of Arcturan Mega-gin
to melt into it. <prepare_mega_gin>
↘ I/prepare_mega_gin:
prepare_mega_gin :
It is very important to prepare the Mega-gin properly.
→ I/prepare_mega_gin:/1
1. Remove cubes from tray. They must still be frozen — if they
thaw first the benzine is lost.
→ I/prepare_mega_gin:/1 ⊘
→ I/prepare_mega_gin:/2
2. Drop them into the mixture.
→ I/prepare_mega_gin:/2 ⊘
→ I/prepare_mega_gin:/3
3. Wait until they have fully melted.
→ I/prepare_mega_gin:/3 ⊘
↙ I/prepare_mega_gin: ⊘
→ I/recipe:/3 ⊘
→ I/recipe:/4
4. Bubble four litres of Fallian marsh gas through the mixture.
→ I/recipe:/4 ⊘
→ I/recipe:/5
5. Over the back of a silver spoon, float a measure of Qualactin
Hypermint extract.
→ I/recipe:/5 ⊘
→ I/recipe:/6
6. Drop in the tooth of an Algolian Suntiger.
→ I/recipe:/6 ⊘
→ I/recipe:/7
7. Add an olive.
→ I/recipe:/7 ⊘
↙ I/recipe: ⊘
↙ I ⊘
↘ II
II. Enjoy Responsibly
→ II/1
1. Drink. But very carefully. { exec("drink") }
→ II/1 $ drink
→ II/1 ✓
↙ II ✓
↘ III
III. Rehabilitation Afterwards
→ III/1
1. Seek out a voluntary organization capable of helping. Or mixing
you another one.
→ III/1 ⊘
↙ III ⊘
↙ mix_gargle_blaster: ✓
⇐ / PanGalactic,1 #000193 ✓
$
This will proceed to call any functions that create effects, placing their
output in the Done result, and otherwise will Skip any prose-only steps
that an automated program cannot act on.
External processes that do not return with an exit code of 0 will result in
Fail.
Result store
Results are written to .store/ keyed by the "run id" identifying the
instantiation, 42 in this example (the identifier is printed by the runner at
the start of the procedure and again when it finishes).
The result of each step is recorded in the Procedure interchange Format For Transferring Techniques (PFFTT), file extension .pfftt.
This is a line-oriented file format where each line is of the form
2026-06-29T13:19:26.189Z 000042 /mix_gargle_blaster:/I/4 Done ()
which gives a durable record of the outcome of each step.