Products  /  Case Study

Product Development — Case Study / Experience Translation

Noa
Drive your Mac from an iPhone.

Web Terminal — Kinoshita Studio / Takahiro Kinoshita (Shiga · Lake Biwa, Japan)

— TYPE

Web Terminal · OSS

— PLATFORM

Node.js / Express / WebSocket

— STATUS

Live — 2026–

N O A session 1 + A ▲ TERM BMBoard ▶ KODOCO kinoshitatakahiro@MacBook-Air ~/BMBoard % claude ╭─────────────────────────────────╮ Claude Code v1.x.x ╰─────────────────────────────────╯ ? What would you like to do? ◀ EDITOR /mac同期/04_Logs/Claude_Code_Log/… 1 # 2026-06-14 2 3 ## 作業ログ 4 5 case-noa.html 作成 6 README 外部参照を削除 7 ▲ FILES ▶ Desktop ▶ Documents ▶ kinoshitastudio.com ▼ mac同期 ▶ 01_Input ▼ 04_Logs ▼ Claude_Code_Log 2026-06-14.md ● connected 41×21

01 — Problem Discovery

“I want to run my Mac while I’m out”——
no one had solved that gap.

Out with only an iPhone. Claude is running on the Mac, but I can’t check task progress. I want to type one more command into the terminal, but all I have is the iPhone — this kept happening.

Solutions exist — SSH client apps, VNC, TeamViewer. But every one has a “setup wall.” Generating keys, managing known_hosts, firewall settings. Tens of minutes of prep for a single terminal action.

The gap was, at its core, “the cost of friction.” The cost of reaching the tool exceeded the tool’s value.

— Pain 01

SSH setup is too complex. Key generation, transfer, permissions, opening ports — set it up once, and every change of environment means doing it again.

— Pain 02

Terminal and editor are split apart. On mobile there’s no way to work the terminal while reading code — the cognitive cost of switching screens is high.

— Pain 03

Switching projects erases context. Running several projects at once, every terminal-session switch breaks the flow of the conversation.

— Pain 04

You can’t see the task list. There’s no way from mobile to see what the AI is doing or how far it’s gotten — only the choice of leaving it or interrupting.

02 — Persona

I myself was
the first user.

Noa is a product I “built for myself.” The persona wasn’t a hypothesis — it was defined directly from lived experience. A real need to keep Claude running on my iPhone while out, and the design began to solve it.

"Making a tool is the most honest form of externalizing thought."

That a developer, designer and studio owner can keep working even while out. That the physical distance between Mac and iPhone is erased in software. That was Noa’s design proposition.

CUSTOMER JOURNEY MAP — Noa STEP 外出する 作業を続けたい ブラウザで開く ターミナル操作 タスク確認・完了 ACTION iPhoneだけ持つ URLとトークンを入力 即ターミナル表示 コマンドを打つ ⬡パネルで進捗確認 EMOTION Macに触れない焦り SSHより簡単? つながった 普通に動く これで十分だ * 木下スタジオ / Kinoshita Studio — Customer Journey (Noa)

Out → connect → operate → done — at every step, removing friction is the heart of the design.

03 — Experience Strategy

“Zero connection friction”——
a URL and a token, that’s all.

Noa’s experience strategy was designed on four axes — Immediacy, Visibility, Isolation, Extensibility. This is the language for designing not a “terminal” but “a place on the extension of thought.”

— 01

now

IMMEDIACY

Connect with just a URL and a token. No key setup, no app to install. Type it in the browser’s address bar and the Mac terminal appears in front of you.

— 02

see

VISIBILITY

A three-column layout fits terminal, editor and file tree on one screen. Minimizing eye movement, lowering the cost of context switching.

— 03

apart

ISOLATION

Each project has its own terminal session. Just switch tabs to return to that project’s context. The flow of the conversation never breaks.

— 04

grow

EXTENSIBILITY

A PostToolUse hook syncs the AI task list in real time. On mobile, a D-pad appears. Features extend in “invisible” ways.

— Experience Translation Map

EXPERIENCE TRANSLATION MAP — Noa AS-IS / 既存体験 SSH設定の複雑さ ターミナルのみ・エディタ別 プロジェクト切替で文脈消滅 AIタスクが見えない モバイルキーボードが不便 翻訳 TO-BE / Noa体験 URL+トークンで即接続 3カラムで全部見える プロジェクト別セッション保持 ⬡パネルでタスクをリアルタイム確認 D-padで快適モバイル入力 DESIGN DECISIONS → token-only認証(鍵不要) → xterm.js + Monaco 3カラム → node-pty でPTY分離管理 → WebSocket リアルタイム同期 → Cloudflare Tunnel 自動起動 → PostToolUse hook 連携 * 木下スタジオ / Kinoshita Studio — Experience Translation Map (Noa)

The “SSH setup wall” translated into “connect with a single URL.” Removing friction is the very heart of experience design.

04 — Solution Design

node-pty and WebSocket,
with experience laid on top.

Noa’s stack is simple — Node.js + Express + WebSocket + node-pty. The server spawns a PTY and connects it over WebSocket to xterm.js in the browser. But the experience-design decisions mattered more than the technical implementation.

— Token Auth

No keys, no app, one URL

Auth is a single token. Include it in the URL parameter and you log in automatically. Bookmark it in Safari on the iPhone, and one tap opens the Mac terminal. With friction zeroed out, the act of connecting disappeared from awareness.

— 3-Column Layout

TERM · EDITOR · FILES on one screen

Terminal, Monaco editor and file tree, side by side. Write code while watching the terminal, pick a file and open it in the editor — this flow completes with no screen transitions. A design that lowers cognitive cost.

— Project Sessions

Project tabs hold the context

Each project has its own PTY session. Switch tabs and the whole terminal swaps out, with the previous conversation kept intact. Return to the BMBoard session and it picks up right where it left off.

— ⬡ Task Panel

See the AI’s tasks in real time

A PostToolUse hook instantly reflects the task list Claude Code updates into Noa’s ⬡ panel. Even away from the Mac, you can see what the AI is doing. The “leave it or interrupt” problem while out is gone.

05 — Results

The distance between Mac and iPhone
disappeared.

Since I started using Noa, the quality of working while out changed. Sitting in front of the Mac is no longer required, and I can keep working without breaking the flow of thought. Only by using it did I realize how much “the cost of reaching the tool” had been breaking the experience.

3— COLUMNS

Terminal, editor and file tree on one screen. Eye movement is minimized and the flow of thought is preserved.

0— SSH SETUP

No key generation, no port setup. Connect with just a URL and a token. Friction, zeroed out.

OSS— RELEASE

Released as open source so developers with the same problem can start right away. Launches with a single npx command.

"A command typed on an iPhone runs in the Mac terminal — that one thing erased the boundary of where work happens."

— Studio Note

Noa is a product Kinoshita Studio built from its own problem. The starting point was a real need: “I want to keep Claude running while I’m out.”

Simpler than SSH, yet able to do the same thing — that translation of experience is Noa. By releasing it as open source, I hope it reaches developers with the same problem.

View Noa on GitHub →

— Next Case Study

BMBoard — why no place for thought existed. →
— Other Cases
Kinoshita Studio case: KODOCO
KODOCO
Case Study →
Kinoshita Studio case: Ateli.er
Ateli.er
Case Study →
Kinoshita Studio case: Black Mirror Board
Black Mirror Board
Case Study →
See all cases →