Program.pinokio.computer
pinokio official documentation
Install / Use
/learn @pinokiocomputer/Program.pinokio.computerREADME
Pinokio

Introduction

Pinokio is a browser that lets you locally install, run, and automate any AI on your computer. Everything you can run in your command line can be automated with Pinokio script, with a user-friendly UI.
You can use Pinokio to automate anything, including:
- Install AI apps and models
- Manage and Run AI apps
- Create workflows to orchestrate installed AI apps
- Run any command to automate things on your machine
- and more...
Features
Here's what makes Pinokio special:
- Local: Everything gets installed and runs locally. None of your data is stored on someone else's server.
- Free: Pinokio is an open source application that is 100% free to use with no restriction. There is no one to pay for API access, since everything runs on your local machine. Play with AI as much as you want, for free forever.
- Private: You don't need to worry about submitting private data just to run AI, everything runs 100% privately on your own machine.
- User-friendly Interface: Pinokio provides a user-friendly GUI for running and automating anything that you would normally need to use the terminal for.
- Batteries Included: Pinokio is a self-contained system. You do not need to install any other program. Pinokio can automate anything, including program/library installations. The only program you need is Pinokio.
- Cross Platform: Pinokio works on ALL operating systems (Windows, Mac, Linux).
- Save Storage and Resources: Pinokio has a lot of optimization features that will save you hundreds of gigabytes of disk space. Also, many other resource optimization features (such as memory) all possible with Pinokio.
- Expressive Scripting Language: Pinokio script is a powerful automation scripting language with features like memory, dynamic templating, and extensible low level APIs.
- Portable: Everything is stored under an isolated folder and everything exists as a file, which means you can easily back up everything or delete apps simply by deleting files.
Architecture
Pinokio takes inspiration from how traditional computers work.
Just like how a computer can do all kinds of things thanks to its comprehensive architecture, Pinokio as a virtual computer is a comprehensive platform for running and automating anything you can imagine with AI.
- File System: Where and how Pinokio stores files.
- Processor: How pinokio runs tasks.
- Memory: How pinokio implements a state machine using its built-in native memory.
- Script: The programming language that operates pinokio.
- UI: The UI (user interface) through which users access apps.
Install
Windows
Make sure to follow ALL steps below!
Step 1. Download
<a class='btn' href='https://github.com/pinokiocomputer/pinokio/releases/download/3.8.0/Pinokio-3.8.0-win32.zip'><i class="fa-brands fa-windows"></i> Download for Windows</a>
Step 2. Unzip
Unzip the downloaded file and you will see a .exe installer file.
Step 3. Install
Run the installer file and you will be presented with the following Windows warning:

This message shows up because the app was downloaded from the Web, and this is what Windows does for apps downloaded from the web.
To bypass this,
- Click "More Info"
- Then click "Run anyway"
Mac
Step 1. Download
<a class='btn' href='https://github.com/pinokiocomputer/pinokio/releases/download/3.8.0/Pinokio-3.8.0-darwin-arm64.zip'><i class="fa-brands fa-apple"></i> Download for Apple Silicon Mac (M1/M2/M3/M4)</a> <a class='btn' href='https://github.com/pinokiocomputer/pinokio/releases/download/3.8.0/Pinokio-3.8.0-darwin-intel.zip'><i class="fa-brands fa-apple"></i> Download for Intel Mac</a>
Step 2. Install (IMPORTANT!!)

The Pinokio Mac installer ships with Sentinel built in. Sentinel lets you run open source apps that are NOT on the Apple App store (which Pinokio is at the moment).
You just need to drag and drop the installed Pinokio.app onto Sentinel to "Remove app from Quarantine".
Linux
For linux, you can download and install directly from the latest release on Github (Scroll down to the bottom of the page for all the binaries):
<a class='btn' href='https://github.com/pinokiocomputer/pinokio/releases/tag/3.8.0'><i class="fa-brands fa-linux"></i> Go to the Releases Page</a>
Community Help
To stay on top of all the new APIs and app integrations,
X (Twitter)
Follow @cocktailpeanut on X to stay updated on all the new scripts being released and feature updates.
Discord
Join the Pinokio discord to ask questions and get help.
Quickstart
Pinokio File System
Pinokio is a self-contained platform that lets you install apps in an isolated manner.
- Isolated Environment: no need to worry about messing up your global system configurations and environments
- Batteries Included: no need to manually install required programs just to install something (such as ffpeg, node.js, visual studio, conda, python, pip, etc.). Pinokio takes care of it automatically.
To achieve this, Pinokio stores everything under a single isolated folder ("pinokio home"), so it never has to rely on your system-wide configs and programs but runs everything in a self-contained manner.
You can set the pinokio home folder when you first set up Pinokio, as well as later change it to a new location from the settings tab.

So where are the files stored? Click the "Files" button from the home page:

This will open Pinokio's home folder in your file explorer:

Let's quickly go through what each folder does:
api: stores all the downloaded apps (scripts).- The folders inside this folder are displayed on your Pinokio's home.
bin: stores globally installed modules shared by multiple apps so you don't need to install them redundantly.- For example,
ffmpeg,nodejs,python, etc.
- For example,
cache: stores all the files automatically cached by apps you run.- When something doesn't work, deleting this folder and starting fresh may fix it.
- It is OK to delete the
cachefolder as it will be re-populated by the apps you use as you start using apps.
drive: stores all the virtual drives created by the fs.link Pinokio APIlogs: stores all the log files for each app.
You can learn more about the file system here
Hello world
Let's write a script that clones a git repository.

- Create a folder named
helloworldunder the Pinokio api folder. - Create a file named
git.jsonunder the the Pinokioapi/helloworldfolder.
{
"run": [{
"method": "shell.run",
"params": {
"message": "git clone https://github.com/pinokiocomputer/test"
}
}]
}
Now when you go back to Pinokio, you will see your helloworld repository show up. Navigate into it and click the git.json tab to run it:

You will see that an api/helloworld/test folder has been cloned from the https://github.com/pinokiocomputer/test repository.
Templates
We can also dynamically change what commmands to run, and how to run them, using templates.
As an example, let's write a script that runs dir on windows, and ls on linux and mac.
In your api/helloworld folder, create a file named files.json:
{
"run": [{
"method": "shell.run",
"params": {
"message": "{{platform === 'win32' ? 'dir' : 'ls'}}"
}
}]
}
- The
{{ }}template expression contains a JavaScript expression - There are several variables available inside every template expression, and one of them is platform.
- The value of
platformis eitherdarwin(mac),win32(windows), orlinux(linux).
This means, on Windows, the above script is equivalent to:
{
"run": [{
"method": "shell.run",
"params": {
"message": "dir"
}
}]
}
Or if it's not windows (mac or linux), it's equivalent to:
{
"run": [{
"method": "shell.run",
"params": {
"message": "ls"
}
}]
}
You can learn more about templates here
Environment Variable Setup
Often, scripts may require certain environment variables to be set in order to run properly.
While the environment variables can be set inside the "Configure" tab, this is still tedious and most users won't know which environment variables need to be filled out.
To solve this problem, a script can EXPLICITLY require the environment variables required to run.
- If the environment variables are set, it will just use those variables to start automatically without pausing.
- If the environment variables are NOT yet set, it will NOT start the script, but display a form that needs to be filled out.
To achieve this, you can attach a pre array in a script.
{
"pre": [<requirement>, <requirement>, ...]
}
Where <requirement> is an object that describes the required environment variables:
<requirement> := {
env: <environment_variable_name>,
title: <title>,
description: <description>,
default: <default_value>
}
<environment_variable_name>: The name of the environment variable needed to start the script.<title>: (optional) A simple title for the field<description>: (optional) description for the field<default>: (optional) a default value that will be pre-filled when the
