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
01You 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
02A 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.
What you need
03One 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.
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.
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
04A 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.
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.
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.
What can go wrong
05A 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.
Compared with what you use
06How 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.