TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
에이전트를 연락처로, 방을 그룹채팅으로. Bloks는 로컬 우선 개인 AI 에이전트 작업공간으로, 무료이며 기존 AI와 함께 사용
Agents as contacts, rooms as group chats. Bloks is a local-first workspace for personal AI agents. Free, on your machine, with the AI you already have.
생산성TypeScript · JavaScriptGitHub @hamedgitty온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
A local-first desktop app for running a team of AI agents on Claude Code, Codex, Cursor, Cline and more, on your own computer.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Bloks is a desktop app for personal AI agents. It looks like a messaging app: each agent is a contact you talk to, each room is a group chat, and all of it runs on your own computer. The agents work next to your files, on engines and keys you already have, and stop to ask before doing anything that needs your say-so. No account to make, and no server of ours holding your data.
Underneath, every agent is a real engine session: Claude Code, Codex, Gemini CLI and the others that run tools, or any API you hold a key for. Agents stream their replies, show you what they are running, and keep what they learn in plain files you can read and edit.
The iPhone app pairs with the desktop app. Nothing runs on the phone: it is a window onto the agents on your computer, with approvals you answer from the Lock Screen or your wrist.
Bloks 3 is out for Mac, Windows and Linux, and on the App Store for iPhone and Apple Watch. An Android app is coming soon.
Thank you to everyone who reported a bug, tested a build or sent code for this release. A lot of what is in it started as one of your issues, and it is a better app for every one of them.
Workspaces. Personal, Business, or one with a name of its own, each a whole Bloks with its own agents, memory, keys and rooms, a mark you choose, and a switcher at the top of the window to move between them. One plan and one Bloks key cover them all.
People. On Bloks Team, invite someone into a workspace with a code, a QR or a link, read the same four words, and they talk to your agents beside you, with the access and the spending limits you choose.
Usage. See what every agent spent, by agent and by engine, and put a monthly limit on any engine that runs on your own API key.
Your phone. Pairing starts when you ask for a code, and with the iPhone and Apple Watch update the phone finds your Mac again when its address or port changes, adds your other workspaces in a tap, draws answers natively, and shows an agent's browser or cloud computer live, for you to watch or take over.
Plus answers drawn as cards, tables and charts, a terminal that goes anywhere in the window, side lists that resize and fold, a window that comes back on its own if it fails, a Plan page, Settings rebuilt around one search, and a new shape for the whole app. Everything is in the 3.0 release notes.
A workspace is a whole Bloks of its own: its own agents, memory, keys, rooms, routines and settings, in its own folder. Nothing moves between them, so the agents that run your company never read your family's notes. Personal is the Bloks you already had. Add a Business workspace, or one with a name of its own, and it opens on a short welcome shaped by what you picked. Each wears a mark that nobody else on your computer wears: choose a colour and a pattern for any of yours, from the computer or the phone, or upload your logo. On a workspace you joined, the mark you pick is yours alone.
The switcher at the top of the window lists them in the order you drag them into, with a dot where something is waiting; Cmd+1 to Cmd+9 jump straight to one. Every workspace keeps running while you look at another, so routines and watchers carry on, and an approval in the background still reaches you. Each can be muted for a while, and each says how much it may interrupt you: everything, only what needs you, or nothing.
With Bloks Cloud, each workspace can also be reachable online on its own switch, for your phone and the people you invite.
Invite a partner, a colleague or a client into a workspace. An invite is
a QR code, an 8 character code you can read out (K7QF-M2XR) and a link
that shows as an invite card in Messages, Slack or WhatsApp. It is for
one person, works once and lasts a day. They join from the iPhone app or
the desktop app, and before they are in, you both read the same four
words, so somebody who intercepted the link is stopped at the door. A
join password, checked only on your computer, can sit behind it too.
What they get is decided by you:
Every agent they talk to runs on your computer, with your keys, and they never reach your settings, your keys or your own conversations. Conversations with more than two people are drawn as bubbles, with faces under the latest message showing who has read how far. Members in a workspace come with Bloks Team; a single room can also be shared on its own, with guests who see that room and nothing else.
Usage, on the main rail, shows what your agents used over 7, 30 or 90 days or this month: cost, tokens or turns, for every agent and engine or one of each, by day, with a breakdown you can click to narrow. A cost is only ever an engine's own price, or, for an engine that reports tokens and no price, an estimate from a public list of model prices, written as one ("~$4.20"). A model nobody has a price for is never guessed at.
Put a monthly spending limit on any engine that runs on a key of yours. At the line, new turns on it pause, or go to the agent's backup engine, until you raise it or the month turns. Before then, the message box says when a limit, a Claude or ChatGPT plan window, or Bloks AI is getting close, and on what day it resets.
An agent can answer with cards, tables, charts, metrics, steps, tabs, forms and buttons instead of paragraphs, drawn as the reply streams. A click can answer the agent, open a page or change the answer itself. A comparison, prices or options to choose between come back this way, in the chat, rather than as a file. What a model writes is parsed against a closed set of shapes before it reaches a screen, and nothing in an answer fetches anything. With its update, the iPhone draws the same answers natively. docs/GENERATIVE_UI.md is the contract.
Put several agents in a room and they take turns rather than talking over each other. The lead, whoever you crowned or else the most senior, speaks last, reviews what came back and makes the call. An agent's memory follows it between rooms and one to ones, so you can ask your Chief of Staff privately what it thought of the group's plan.
A room decides who answers a message that names nobody: everyone, only the lead, or Auto, where a small fast model picks the member whose role fits ("Scout picked: pricing question", above the reply, opens to why) and the lead answers whenever it is slow, unsure or unreachable. Naming someone with @ always wins, and the same choice is said in a room carried into Slack, Discord or WhatsApp. It uses an engine your agents already run on unless you pick one in Settings, Behaviour.
A lead that needs more people can propose a team: who it wants, what each owns, which skills to give them. You approve or you don't. Agents can message each other, hire, open rooms, start a new conversation for a teammate, and stop one they outrank, with a credential that ends with the turn. A built-in skill tells them which command fits what you asked, and which things only you can do. Another explains how each part of Bloks works, so an agent can answer "where do I turn that off" from the app's own settings index and leave a button in the chat that takes you there, or propose changing an everyday setting on a card where nothing changes until you tap Change. When something fails for good, an incident desk hands it to the lead to retry once, pass on, or bring to you, instead of letting it fail quietly or in a storm.
The desktop app has a browser of its own, docked beside the chat, with
tabs, an address bar and a downloads shelf. Agents drive it with
bloks browser (and other AI apps through the MCP server): open a page,
read it, list what is on it, click, type, choose, scroll, wait and take a
picture. You watch it happen, each tab showing which agent drives it,
and Take over whenever you like; the agent's next step waits until
you Give back. Each workspace browses in a session of its own, so
its sign-ins stay its own and never the app's.
It is careful in the same way the rest of Bloks is. In Ask first, a site not on your list asks on a card the first time an agent goes there; blocked sites are never opened; a password, a card number or a file to upload always asks you, whatever the mode. What a page says reaches an agent framed as untrusted data, never as instructions. On your phone the conversation says the agent is browsing on the Mac, with a small live picture of the page.
The Catalogue, in Customize, holds teams (a launch crew, a research
desk, a support desk, personal admin and more) and the skills they use,
kept in this repository's catalog/ folder. Before
anything installs, a review says exactly what it creates: the agents,
their room, each skill to read first, and the routines, which start
paused. New agents start with connected apps, the browser and tool
servers off. A newer version comes back as an update that shows what
changed and keeps what you changed. Install from a raw GitHub link, a
file or a bloks://install?url= link through the same review, and use
Share as file on a room or a skill to send one back by pull request.
rm -rf." Rules decide before an agent acts, and a deny always beats an
allow. When you keep approving the same narrow thing, Bloks offers it as
a rule, but never anything that deletes, moves money or touches a
credential.What each agent remembers is plain Markdown in its own folder. Memory, on the main rail, shows every agent's files for editing, a shared memory every agent reads, About you (notes your agents suggest and you keep), and a journal of every change with its diff and an undo. Once a night each agent's memory is tidied, and a whole night undoes in one press. Before your turn, an agent brings up what is relevant from its other conversations, and says exactly what it was given.
Skills are instructions your agents pick up, from the catalogue or
written by you. Turn on suggestions and, after a turn that worked
something out (many steps, a failure it got past, or you putting it
right), Bloks offers it as a new skill; after a skill was used and you
corrected it, it offers a change to that skill, shown as a diff with
the reason. Nothing changes until you keep it, and every version stays:
who changed it and why, any two compared, any one restored, with how
often each was used and then corrected. Agents can ask for a change too
(bloks skill revise), against the version they read.
/goal, say what done looks like, and an agent keeps
going until it is done, stuck or out of turns.bloks-server runs a workspace on a machine that stays
on, and the desktop app, the phone and the browser reach it the same
way. Or let Bloks run one for you: managed hosting is a private machine
of your own that stays on, and moves your agents over when you sign up
at bloks.dev/pricing.bloks-server run Ada "Review the open pull requests" hands an agent a job, waits until it and every teammate
it handed work to are done, and prints the answer, or one JSON document
with , with exit codes a script can branch on. keeps a room and its agents in line with a team
file, changing only what differs. is a chat in
the terminal, approvals included. See
, with a GitHub Actions example.Bring your subagents, instructions, skills, commands, tool servers, rules
and chat bots over from Claude Code, Codex, Cursor, OpenClaw or Hermes,
reviewing each item first, grouped by what it becomes here. A name that
is taken is yours to settle, a key comes only when you tick it, and the
whole import can be undone. bloks-server import --dry-run shows what
would come over from a terminal. Bring your past Claude Code and Codex
sessions over as conversations and carry one on. Your workspace is
backed up every day, and a whole workspace can be written out to one
file and taken into an empty one elsewhere. Keys never travel in either.
Settings, Data, Export for training writes your agents' runs to a JSONL
file on your computer, to fine-tune a model on: OpenAI's chat format with
tools and tool calls, ShareGPT, or Bloks's own trajectory with every step
timed. Pick the agents, conversations, dates and engines; keep only turns
that finished well, that you did not correct, or that you gave a thumbs
up. Keys, tokens and passwords are always taken out, and by default so
are email addresses, phone numbers, your home folder and people's names.
Other people's words (members, guests, people on Telegram and Signal,
email and chat apps) stay out unless you ask for them. You preview the
counts and the first record before anything is written, and nothing is
sent anywhere. bloks-server export-runs does the same from a terminal.
Bloks speaks English, Español, Français, Deutsch, Português (Brasil),
日本語 and 简体中文. It follows your system's language, or the one you
pick in Settings, General, Language, and so does the menu bar. Agents
answer in whatever language you write to them. A few things the server
writes, such as notices, errors and the morning brief, are still in
English. Each language is one file in src/locales, and
src/locales/README.md says how to improve one.
Download it from bloks.dev or the Releases page. The macOS build is universal (Apple silicon and Intel), signed and notarized, so it opens without a Gatekeeper warning. Windows and Linux builds are unsigned, which on Windows means SmartScreen warns on first run. The iPhone app is on the App Store. A packaged build updates itself.
Or build it from source:
git clone https://github.com/hamedgitty/bloks.git
cd bloks
pnpm install
pnpm dev:server # the harness, on 127.0.0.1:8799
pnpm dev # the app, on 127.0.0.1:5199
Open http://127.0.0.1:5199. For the desktop shell, run pnpm dev:desktop in a third terminal; it shows the dev server's one
workspace. To try workspaces from a checkout, run pnpm build and then
BLOKS_DEV_WORKSPACES=1 pnpm dev:desktop, which starts a server for each
workspace itself, as the installed app does (Personal is your real
~/.bloks). pnpm package makes an unsigned build of your own.
Requirements: Node 22+, pnpm, and at least one engine. macOS for computer use, meeting notes and the Mac's own voices; the rest runs anywhere Node does.
Ports: Personal listens on 8799 on this machine. If something else
has it, the desktop app moves to 18799, 28799 or any free port, and
remembers the one that worked so a paired phone keeps finding it. Every
other workspace runs its own server on a port of its own. To choose
Personal's yourself, add "port": 9123 to ~/.bloks/config.json, or set
BLOKS_PORT=9123 when starting bloks-server or the app from a
terminal. When no port works, the app says which ports it tried and what
is holding each.
An agent needs an engine to reply. Any of these works, and each agent picks its own.
The first-run check, and Settings, Engines and keys, install Claude Code,
Codex, Gemini CLI, Pi, Antigravity, the Grok CLI, Cursor and Cline with
one button. They go into your own ~/.local, so no admin password and no
npm permission errors, and an engine that is installed but not signed in
says so, with a button that opens Terminal at its sign-in. An engine
installed somewhere else, or a build of your own, can be pointed at with
Use a different copy under its row. To do it by hand:
| Engine | How you connect | Works in your folders |
|---|---|---|
| Claude Code | curl -fsSL https://claude.ai/install.sh | bash, then claude | yes |
| Codex | npm i -g --prefix ~/.local @openai/codex, then codex login | yes |
| Gemini CLI | npm i -g --prefix ~/.local @google/gemini-cli, then a Google sign-in or a Gemini key | yes |
| Pi | npm i -g --prefix ~/.local --ignore-scripts @earendil-works/pi-coding-agent pi-acp, then pi | yes |
| OpenCode | npm i -g --prefix ~/.local opencode-ai, then opencode auth login | yes |
| Grok CLI | curl -fsSL https://x.ai/cli/install.sh | bash, then grok login | yes |
| Cursor | curl https://cursor.com/install -fsS | bash, then cursor-agent login (the Cursor CLI, not the editor) | yes |
| Cline | npm i -g --prefix ~/.local cline (3.0.68 or newer), then cline auth | yes |
| Antigravity | curl -fsSL https://antigravity.google/cli/install.sh | bash, then agy | yes |
| OpenRouter | Sign in from Settings, in your browser | no |
| Gemini, Grok, Kimi, Llama, DeepSeek, Mistral, Groq | Paste a key in Settings | no |
| Custom (OpenAI-compatible) | Paste a base URL and one or more keys | no |
| Ollama | Run it; Bloks finds it on this machine, or where OLLAMA_HOST points | no |
| Bloks AI | Part of a Bloks plan: no key, no sign-in | no |
The engines that work in your folders run commands and read and edit files on your computer. The others get a smaller set of tools from Bloks itself: asking you a question, their own memory, app connections, and commands in a sandbox or a cloud computer when the agent has one. Bloks badges the difference everywhere it shows an engine. Bloks AI runs on Bloks's own engine; Claude Code always uses your own Claude plan or key. A custom endpoint is chat only until you turn on This model can use tools for it in Settings. Turn it on only when the model behind it supports tool calls; if the host refuses them, the turn stops and says so.
Give an agent a backup engine and a turn that hits a usage limit, a rate limit or an outage is picked up by the backup, with the conversation so far. Engine scout learns from what you undo, rewind and discard which engine does your work well, and says when a lighter model has been doing as well. Engines and keys belong to a workspace, so each workspace can run on different ones.
The iPhone app is a window onto Bloks on your computer: the same agents, their chats, and approval cards you answer with a tap. Nothing runs on the phone, so it is paired with each workspace you want on it. Pairing takes about a minute, with both on the same wifi, and works the same from a Mac, a Windows PC or Linux; the app calls it "your Mac" either way.
On your computer, in the workspace you want on the phone, open Settings, Phone and devices. Until a phone is paired, it walks you through the first one:
On your iPhone, point the Camera at the QR code and tap the Bloks banner; Bloks asks before it pairs. With the iPhone and Apple Watch update, a phone that has never been paired opens on the same three steps, and Scan the code there reads it from inside the app. To pair by hand, enter the six digit code and the address your computer shows under Mac connection in the app's Settings.
That is it: your agents are on the phone, and the computer lists it under Phone and devices, where it can be removed at any time. With Bloks Cloud the phone reaches your computer from anywhere, not only at home. With the iPhone and Apple Watch update, a phone paired with one workspace lists your others on that computer and adds one in a tap, where phone access is on there, and the computer tells you each time.
If it does not connect:
Everything is on your computer, in plain files. Personal is
~/.bloks, the folder Bloks has always used. Every other workspace has a
folder of its own in the app's folder (on a Mac,
~/Library/Application Support/Bloks/workspaces/), beside
workspaces.json, the list of them. BLOKS_DATA_DIR moves a data folder
for bloks-server and the command line tools.
Inside each workspace's folder:
| Path | Contents |
|---|---|
bots.json | Agents, their roles, models and resume cursors |
bloks.json | Rooms and their members |
messages-<id>.json | One transcript per agent or room |
config.json | Connected engines and keys, spending limits, 0600 in a 0700 folder |
people.json, joining.json | The people in the workspace, and its invites |
usage.json | What each agent and engine used, by day |
reads.json | How far each person has read each conversation |
skills/ | Installed skills, one markdown file each |
skill-history/ | Every version of each of your skills, with who changed it and why |
catalog/, catalog-installs.json | The Catalogue's index and items as last fetched, checked by sha256, and the teams installed from it |
workspaces/ | Each agent's own home folder, with its MEMORY.md and topic files |
checkpoints/ | Each turn's before and after, kept once per file version, for undo |
memory-journal/ | Every change to an agent's memory, with the text before and after |
rehearsals/ | The copies agents rehearse in, cleared when applied, discarded, or a week old |
events/, native/ | The canonical event stream, and raw provider traffic |
Backups go beside the folder, never in it: ~/.bloks-backups for Personal.
Exports for training go beside it too: ~/.bloks-exports.
Bloks has no backend that holds your data. Your conversations, memory and files stay on your computer. On the wire you will find the engines and connectors you set up, talking to their own services, and a few small requests Bloks makes on its own behalf, none of which carries your conversations:
If the app crashes, its report stays on your computer; Bloks sends it nowhere.
Bloks Cloud, when you turn it on, carries traffic between your devices and your computer sealed end to end: the relay in the middle cannot read it. Two things pass through readable because they arrive that way: email to your agents, and WhatsApp messages from Meta. Nothing is kept on the way.
src/ React app: chat, rooms, pages, the pixel avatar system
server/ Harness: HTTP API, one SSE stream, provider registry, persistence
electron/ Desktop shell: the window, one server per workspace, speech and computer bridges
bin/ bloks-server, the agents' command line, and the MCP server
One rule holds the shape together: the client holds no transports. The React app never talks to a provider. It sends typed commands over HTTP and folds a single server-sent event stream. Every provider process lives in the harness, and each workspace is one harness on its own folder.
That is why adding an engine is usually data rather than code. An
OpenAI-compatible API is a spec in server/providers.ts. An agent CLI
that speaks the Agent Client
Protocol is a spec in
server/drivers/acp.ts.
See docs/ARCHITECTURE.md for the longer version.
Agents can read your files, use your logged-in accounts, and drive a computer, and in 3.0 other people can talk to them. SECURITY.md states the trust model plainly, including the parts that are not solved yet. The short version:
Origin and Host, because
loopback alone is not a boundary in a browser.0600 file, not the Keychain. That is the top open item.The app is free, with your own engines and keys, and it never stops working without a plan. Bloks Cloud, Bloks Team and Bloks AI add reach from anywhere, people in your workspaces, and agents with no keys at all. One plan covers every workspace on your computer. They are described at bloks.dev, and Settings, Plan shows what yours includes.
Bloks is free to use, and its source is public under FSL-1.1-MIT, the Functional Source License with an MIT future licence. You may use, copy, modify and redistribute it for any purpose except a Competing Use: making it available to others in a commercial product or service that substitutes for it, or for another product or service the licensor offers with it, or that offers the same or substantially similar functionality. In short, you may not sell Bloks, or something substantially like it, to other people. Internal use at work is explicitly fine, at any company size, with no fee, and so are non-commercial education and research and paid work you do for somebody who uses Bloks under the same licence.
Every release converts to plain MIT two years after it ships, and that conversion cannot be withdrawn. LICENSING.md explains it in plain English; where the two differ, LICENSE is what counts.
Read CONTRIBUTING.md. Short form: one thing per pull
request, tell us what you verified rather than what you changed, and run
pnpm typecheck && pnpm test && pnpm build before you push.
Bloks is maintained by one person alongside other work. Issues and pull requests are read, and answered when there is time. Small and focused gets merged quickly; a branch that renames files, fixes a bug and adds a feature may sit for a while.
pnpm test
Node's built-in runner, no framework to install. Some four thousand tests covering the origin check, input limits, model-output parsing, room addressing, who may see what in a workspace with people in it, invites, spending limits, the policy engine, the client reducer, the colour palette's own contrast, and the real server over HTTP. It takes a few minutes and needs no credentials. See test/README.md.
--jsonbloks-server team apply team.mdbloks-server chat Ada