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.

© 2004-2026 Athae Eredh Siniath, and Others. Technique is open source and MIT licensed.