Choose your model.
Anthropic, OpenAI Codex, OpenRouter, or local models with Ollama. Resume a session with a different provider.
6.4 MB portable binary. Written in ANSI C and Lua. Runs on Linux, macOS, Windows, Haiku, and more. Auditable, MIT.
HaikuExplore the demo
From the terminal, for the terminal
Small tasks. A running agent.
Find a bug, fix the function, and run it to verify the result.
Change the running agent’s theme with a Lua extension.
Write a Lua extension, reload it, and use the new command.
Follow a slash command through psi’s own source code.
A coding agent should be a tool you can understand, carry with you, and change. psi starts with a small C core and puts the high-level behavior in Lua.
The agent loop, terminal interface, tools, and providers are all open to inspection. Keep the parts you need. Build the parts you’re missing.
Explore the architectureAnthropic, OpenAI Codex, OpenRouter, or local models with Ollama. Resume a session with a different provider.
Branch a conversation, explore another approach, and return. Sessions are append-only JSONL with a full tree.
An interactive TUI, a simple REPL, one-shot prompts, and Lua evaluation. At your keyboard or in your scripts.
Open to inspection
What stays with psi, and what builds it.
Connections come from its software bills of materials.
Select a package to follow its connections.Expand a package for its license and dependencies.
Package license metadata: BSD-3-Clause
1 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: MIT
1 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: curl
3 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: Apache-2.0, GPL-2.0-or-later
1 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: MPL-2.0
Package license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: BSD-3-Clause
2 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: MIT
1 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: MIT
2 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: MIT
1 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: MPL-2.0
Package license metadata: GPL-3.0-or-later
Package license metadata: MIT
Package license metadata: GPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: BSD-3-Clause
Package license metadata: MPL-2.0
Package license metadata: GPL-2.0-or-later
Package license metadata: MIT
Package license metadata: Zlib
Package license metadata: BSD-3-Clause
1 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: MIT
1 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: curl
3 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: Apache-2.0, GPL-2.0-or-later
1 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: MPL-2.0
Package license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: BSD-3-Clause
2 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: MIT
1 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: MIT
2 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: MIT
1 dependenciesPackage license metadata: LGPL-2.0-or-later
2 dependenciesPackage license metadata: GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later
1 dependenciesPackage license metadata: LGPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: MPL-2.0
Package license metadata: GPL-3.0-or-later
Package license metadata: MIT
Package license metadata: GPL-3.0-or-later
Package license metadata: GPL-3.0-or-later
Package license metadata: BSD-3-Clause
Package license metadata: MPL-2.0
Package license metadata: GPL-2.0-or-later
Package license metadata: MIT
Package license metadata: Zlib
Retained at runtimeBuild-time onlyA → B: A depends on B
Nix runtime closure + direct build inputs for .#default at 646098f. Other platforms and static builds differ. The full build closure contains 918 packages; the diagram shows runtime relationships and direct build-input relationships.
| Package | Version | Shown dependencies | License |
|---|---|---|---|
| psi | 0.2.0 | argtable, bash, cjson, cjson, curl, gcc-wrapper, glibc, gnumake, libedit, libedit, lua, nss-cacert, nss-cacert, pkg-config-wrapper, stdenv-linux, zlib | MIT |
| argtable | 3.3.1 | glibc | BSD-3-Clause |
| cjson | 1.7.19 | glibc | MIT |
| curl | 8.22.0 | glibc, mbedtls, nss-cacert | curl |
| glibc | 2.42-84 | libidn2, xgcc | LGPL-2.0-or-later |
| libedit | 20260508-3.1 | glibc, ncurses | BSD-3-Clause |
| libidn2 | 2.3.8 | libunistring | GPL-2.0-or-later, GPL-3.0-or-later, LGPL-3.0-or-later |
| libunistring | 1.4.2 | None recorded | LGPL-3.0-or-later |
| lua | 5.5.0 | glibc, ncurses | MIT |
| mbedtls | 3.6.7 | glibc | Apache-2.0, GPL-2.0-or-later |
| ncurses | 6.6 | glibc | MIT |
| nss-cacert | 3.126 | None recorded | MPL-2.0 |
| xgcc | 15.3.0 | None recorded | GPL-3.0-or-later |
| bash | 5.3p15 | None recorded | GPL-3.0-or-later |
| cjson | 1.7.19 | None recorded | MIT |
| gcc-wrapper | 15.3.0 | None recorded | GPL-3.0-or-later |
| gnumake | 4.4.1 | None recorded | GPL-3.0-or-later |
| libedit | 20260508-3.1 | None recorded | BSD-3-Clause |
| nss-cacert | 3.126 | None recorded | MPL-2.0 |
| pkg-config-wrapper | 0.29.2 | None recorded | GPL-2.0-or-later |
| stdenv-linux | 26.05pre-git | None recorded | MIT |
| zlib | 1.3.2 | None recorded | Zlib |
C89 and Lua are a deliberate choice. psi runs on familiar desktops and less-traveled systems, with a Cosmopolitan build that runs on Linux, macOS, and Windows.
Read the portability notesAcross i686, x86_64, aarch64, and riscv64 where available. See the porting notes for build details.
Compatibility

A sakura tree and red vertical Japanese lettering in a native window.

Tiny Core Linux 16.2, running the native static musl build.

Inspecting disks and explaining their layout directly from a Linux VM’s TTY.

The portable build running on Windows.
Add a slash command. Register a tool. Subscribe to the agent lifecycle. Your extensions are ordinary Lua files, loaded straight from disk.
Even the agent loop and terminal rendering live in Lua. Customization goes all the way down.
Explore the extension API-- A command, in a few lines.
return function(psi)
psi.commands.register("greet", function(rest)
return psi.records.new_command_action(
"print", "hi, " .. (rest ~= "" and rest or "friend")
)
end)
endBring a model provider and a project.
psi brings the rest.
nix run github:siraben/psiRequires Nix with flakes enabled.
git clone https://github.com/siraben/psi.git
cd psi
nix develop
make
./build/psiNix supplies the build dependencies. See the README for details.