evoke

Questions about evoke, answered.

evoke gives you natural-language commands for small programs you install. Here are the questions to ask before you install it, each with a short answer and a link to the page that holds the long one.

What evoke is

01

You type what you want. A program you installed does it.

What is evoke?

evoke is a free, open-source tool for natural-language commands. A reflex is a small program you install and ask for in your words. You type what you want, and evoke runs the reflex your sentence asks for. It asks you first when it is unsure, and always before anything that cannot be undone. It does three jobs: a CLI for your terminal, a package manager that installs reflexes from git, and a TypeScript SDK for your own app.

How a typed sentence becomes a program call →

Does evoke turn my words into a shell command?

No. evoke runs only the reflexes you installed, and fills in the inputs each one declares. Each value is one the reflex allows: an option it lists, a word from your own list of names, or a yes or no. It can also be a piece of what you typed, such as a number or an email address. evoke checks that piece against what the reflex accepts. A reflex that names a command and its arguments in its manifest runs that program directly, never through a shell. There, evoke refuses a value that starts with a dash, so no value can act as one of the command's flags. When no reflex fits what you typed, nothing runs.

How your sentence picks a reflex and fills its inputs →

Can one sentence run several reflexes, and pass a result between them?

Yes. One sentence can ask for several reflexes you installed, and evoke shows the plan before any step runs. A result can pass to a later step when the first reflex declares what its result holds, such as an email address. It passes only if the next one takes that kind of value, and your words point back to it, with a word like «them». None of the ready-made reflexes that evoke publishes declares its result yet, so passing a value today needs a reflex you write. The contact example shows the pattern with two stand-in reflexes written for evoke's tests.

How a result passes to the next step →

AI and your data

02

A classifier reads your sentence. Nothing goes to evoke.build.

Is evoke an AI tool?

Yes, for one job. A classifier reads your sentence, and that classifier is Jev, TypeSafe AI's model. Jev answers closed questions about the reflexes you installed: which one you asked for, or none, and which value fills each input. It gives each answer a probability. evoke's own code then checks every value, and decides from those numbers whether to run, ask or stop. evoke is an open-source project of its own, not affiliated with TypeSafe AI.

The three steps from sentence to run →

Does my text leave my machine?

Yes. Your sentence goes to the classifier, at TypeSafe AI, and nothing goes to evoke.build. Each request carries your key, your sentence, and questions built from the reflexes you installed. Those questions include your own words: your names for rooms, services or people, what each one means, and any wording you added. A name can stand for something on your machine, such as a folder's path, and that value never travels. Neither do a reflex's settings, its secrets, or any file. A reflex is a program, so it may also contact a service of its own.

Everything that leaves your machine, in the privacy policy →

Does evoke work offline, or without an API key?

Only in part. Reading a new sentence needs the classifier, over the network, with your key. Without the key, evoke stops at the first sentence and prints the name of the key it needs. evoke run runs a reflex you name, with values you write, and needs no classifier and no key. For tests, a file of answers you write can stand in for the classifier.

Run a reflex by name, without a key →

What you need

03

One small binary, a key, and reflexes from git.

Does evoke run on Linux or Windows?

evoke runs on macOS and Linux, on ARM and x86-64 processors, and has no Windows build yet. Installing reflexes needs git, and a reflex that runs a JavaScript file needs Node 24 or newer. The fifteen ready-made reflexes evoke publishes are for macOS. On Linux, you start with reflexes of your own. Wrapping a command you already run takes one short file, with no code and no Node.

Install evoke on macOS or Linux →

Can my Node app use the same reflexes?

Yes. The TypeScript SDK loads the same reflexes, and turns each sentence into a typed decision, which your code checks before anything runs. Install it with npm install @evoke-build/evoke, for Node 24.5 or newer.

Decisions inside your app →

What does evoke cost, and where do I get an API key?

evoke is free and open source, under Apache-2.0, and needs no account of its own. The classifier that reads your sentences needs an API key from TypeSafe AI, at typesafe.ai. TypeSafe AI bills each request to that key, under its own terms. A sentence is one request, unless it has a word like «and» or «then». Then evoke makes one request to find its steps, and at least one more for each step. evoke add and evoke test also send requests, to check examples. At the terminal, a sentence you repeat is answered from a local cache and costs nothing.

Get your key and set it →

Can I try evoke without installing it?

You can watch evoke at work, not type into it. The walkthrough on the home page and every example page show sessions evoke printed, so nothing runs and no key is needed. Typing a sentence of your own needs the binary, an API key and reflexes installed.

Get started →

What you install

04

A program, and the words to ask for it.

What am I installing when I add a reflex?

A reflex is a directory: a manifest named reflex.toml, and the program it names. The manifest says in plain words what the program does, what it is not for, and which inputs it takes. The classifier reads those words, so installing a reflex also gives you a way to ask for it. evoke add owner/repo fetches reflexes from git at a version tag, and runs no code while it installs. It records a hash of each one, and runs it only while its content is unchanged.

Installing reflexes →

Can evoke run software I already have?

Yes, through a reflex you write around it. The program it runs can be a JavaScript function, a script, a command with its arguments, or a call to an API you use. An application does not answer to sentences on its own. Someone has to wrap one of its operations in a reflex, and describe it in plain words. evoke new writes a working reflex to start from.

Turn your code into natural-language commands →

Can evoke understand my own names and phrasing?

Yes. Your names go in a vocabulary, one word per room, service or person. Each word has a meaning the classifier reads, and can carry a value the program receives instead. Your own phrasings go in an overlay, a file of your wording for one reflex. evoke teach adds a line to it for you. Both are files you own, and evoke update never rewrites them. The classifier's provider says it is most accurate in English.

Teach evoke your own words →

What can go wrong

05

A wrong reading is possible. A made-up value is not.

Can evoke pick the wrong reflex?

Yes. The classifier that reads your sentence can misread it and pick the wrong reflex or option. evoke guarantees that every value is one the reflex allows, but it cannot guarantee that it read you right. So a bar, set by what the program changes, decides what runs without a question. A reflex that only reads needs every answer at a probability of 0.8 or more, and one that writes needs 0.9. Under its bar, evoke asks you first or runs nothing, and a reflex that cannot be undone always asks. You can raise these bars in a file you own.

How evoke decides what runs →

What happens when one step of a sentence fails?

evoke shows the plan before anything runs, and a part that matches no reflex refuses the whole sentence. Once steps run, a step that fails, that you decline, or that evoke refuses stops the steps after it. Each of those is skipped, and says so. Steps that already ran are not undone, and evoke's exit code reports the worst step, for scripts.

When a step stops →

Does evoke sandbox the reflexes it runs?

Yes, as far as the machine can hold it. A manifest declares what its program touches: the paths it reads and writes, whether it reaches the network, the programs it runs. The kernel holds the reflex there, through Landlock on Linux and Seatbelt on macOS, and a reflex that reaches past its declaration is stopped, with the path named. A machine that holds only part of a declaration says so on every run. Inside that, it runs with your permissions and only five variables of your environment, such as PATH and HOME. It gets its settings, and any secret, only from evoke, for one run. A reflex your app hands the SDK as code runs inside your app, with all of its environment. Installing a reflex is still a trust decision. Read what you install, and its declaration with it.

What evoke guarantees, and what it does not →

Compared with what you use

06

How evoke relates to scripts, workflow tools and tool calling.

How is a reflex different from an alias or a script?

A reflex can wrap a script or command you already have, so the program you trust stays the same. You type what you want in your words, instead of remembering its name and flags. When a value it needs is missing, evoke asks for it. The reflex also says what the program changes, so evoke asks before anything that cannot be undone. A command you already run needs only a manifest, a short file that describes it, with no code.

A command as a reflex, with no code →

Is evoke a workflow tool?

No. A workflow tool runs a flow you build ahead of time, often on a trigger or a schedule. evoke runs what one typed sentence asks for, now, from the reflexes you installed. It has no triggers, no schedules and no hosted runs. One sentence can still ask for several steps, and evoke shows the plan before any of them runs.

How one sentence runs several steps →

How does evoke relate to LLM tool calling?

LLM tool calling, also called function calling, turns what a person asks for into a call of your code. evoke does that same step, and packages what sits around it. Every value is one the reflex allows, and each answer carries a probability. A bar set by what the program changes decides what runs, and your code can check each decision before it runs. Use a model instead when a value has to be composed, for a conversation, or for an open-ended task.

evoke beside LLM tool calling →

Something else?

Open an issue on GitHub. Report a vulnerability through the private form, never in a public issue.