프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Phosphor

제작자: Kirusshenkin버전 0.3.0i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.Kirusshenkin/phosphor

설치

개요

제작자가 쓴 설명(영어 원문)

Hosts, metrics, Docker and authorized_keys over a macOS terminal's live SSH connections

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 개발자 도구

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 레지스트리에 입력해야 할 키가 나와 있지 않아요.

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

제작자의 .mcpb 파일 다운로드

링크는 제작자의 파일로 바로 연결돼요. 우리가 보관하거나 다시 패키징하지 않아요. 파일을 열면 Claude Desktop이 설치해요.

터미널에서 이 명령어를 실행하세요

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 Kirusshenkin 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

개발자 도구 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 1396개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 1396개 중 63%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 1396개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Phosphor, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.3.0)은 30일 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 MCPB도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: GitHub, Desktop Commander, Cloudflare MCP

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

GitHub

제작자: github

Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

컴퓨터 또는 클라우드★ 34,245MIT4일 전 업데이트
설치

Desktop Commander

제작자: wonderwhy-er

MCP server for terminal commands, file operations, and process management

내 컴퓨터에서 실행★ 10,225MIT16일 전 업데이트
설치

Cloudflare MCP

제작자: cloudflare

Cloudflare MCP servers

클라우드에서 실행★ 4,446Apache-2.014개월 전 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

Phosphor

A macOS terminal that also runs your servers.

Shell, Docker, metrics, keys and files — over one SSH connection per host. Unlocked with your fingerprint. Green on black, because that is how it should look.

*SSH client · Docker manager · server monitor · SFTP · authorized_keys editor · MCP server for Claude Code and Claude Desktop · macOS 26 · Swift 6 · MIT*


The problem

You keep four windows open to do one job. A terminal for the shell. A second terminal for docker logs -f. A third for htop. A browser tab for whatever dashboard someone installed on the box. Each of them logs in separately, each one asks for the key passphrase again, and none of them knows what the others are looking at.

Phosphor opens one SSH connection per host and multiplexes everything through it — the interactive shell, container logs, docker commands, /proc snapshots, SFTP transfers, port forwards. One login. One tunnel through your proxy. One place where the state lives.

And because that state is already in the app, it also exposes an MCP server: Claude Code and Claude Desktop can use your servers through your connections, your keys and your access policy — with every call written to an audit log.


What it does

Docker, without leaving the terminal

The container list is a sidebar, not a separate app. Inspect, stats, mounts, environment and live logs with --tail and a filter, streamed over the SSH connection you already have. Environment values whose name looks like a secret (PASS, KEY, TOKEN, SECRET) are masked in the UI and never copied into the audit log.

No Docker Engine API to expose, no socket to tunnel: it shells out to docker with JSON output, which works on every box where Docker already runs.

Metrics that cost one channel

Per-core load, memory with the cache broken out, disks, network, and per container CPU and memory — from /proc snapshots taken over a single long-lived channel. No agent to install on the server, no swarm of exec channels. Polling stops when the window is hidden, and every buffer has a ceiling.

Hosts, groups and tags

One group per host, as many tags as you like. The group carries the settings — how to reach it, which key, which theme, what MCP is allowed to do — and tags are just for finding things. Import ~/.ssh/config and keep going.

Unlock with a fingerprint

Phosphor has no account and no password of its own. There is a profile on this Mac, and your fingerprint opens it. Passwords, passphrases and TOTP seeds live in the Keychain behind biometrics; keys can live in the Secure Enclave, where they cannot be copied off the machine at all. Risky actions ask again.

A new server, set up by a recipe

Connect to a fresh box and Phosphor probes it: what is installed, what is listening, whether anyone has been here before. If it is empty, it offers a recipe — packages and unattended upgrades, Docker with log size caps, nginx, certbot, a firewall that only opens 22/80/443, and finally disabling password login. Every step is idempotent, every step shows the exact commands, and the lockout guard means password login is closed only after a second key-based connection has proved it works.

Keys you can actually see

authorized_keys as a table instead of a text file: fingerprints computed locally, weak RSA flagged, options shown, disabled entries kept as comments. The key you are currently connected with cannot be removed without an explicit confirmation, writes are atomic, and a backup stays on the server.

Files on both sides

Two panes, drag between them or in from Finder. Same SSH connection, same proxy. A dropped transfer resumes where it stopped.

Make it yours

Themes are plain JSON in themes/ — keep them in git, trade them with people, import .itermcolors, alacritty and base16. Palette, font, ligatures, line height, background image, scanlines, glow, vignette, window opacity. Bind a theme to a group so production is unmistakably red.

And there is a cat in the corner. Or a sugar glider. It sleeps while the app is locked, it never covers your output, and one switch turns it off forever.


Give an agent your servers without giving it your keys

Phosphor is also a Model Context Protocol server. Register one command and Claude Code, Claude Desktop, Cursor or any other MCP client can list your hosts, read metrics, inspect containers, follow logs and — when you allow it — run commands, restart containers, manage authorized_keys, and add, change or remove hosts in your own list. Anything that edits the list asks you first, in every mode.

The difference from handing a model a shell: the app holds the connection, the agent holds nothing.

Shell tool with raw sshCredentials in an MCP configPhosphor
Where the key liveson disk, agent-readableon disk, agent-readableKeychain / Secure Enclave, behind Touch ID
What is reachableeverythingeverythingonly hosts you enabled, in the mode you set
rm -rf /runsrunsrefused by a deny-list that overrides every mode
Human in the loopnonenoneper-write confirmation, grants expire in 15 min
Trail afterwardsshell history, maybenonean audit log with no writing tool
Secrets in outputwhatever is on screenwhatever is on screenmasked before the model sees them
Runaway loopunboundedunboundedrate-limited writes
claude mcp add phosphor /Applications/Phosphor.app/Contents/MacOS/phosphor-mcp

In the MCP registry it is io.github.Kirusshenkin/phosphor; every release also ships a .mcpb bundle with a published SHA-256 for clients that install that way.

Thirteen tools, seven of them read-only. Every host starts disabled — nothing is reachable until you choose read-only, confirm or full for it, and production servers are meant to stay read-only. A compromised server can put anything it likes into a log line the model reads; it still cannot grant itself a mode, get past the deny-list, or erase the record of trying.

Full details: [`docs/MCP.md`](docs/MCP.md) — tool catalogue, policy, audit, and the exact error the agent gets when the app is closed, locked or refusing.

Principles

No integrations. The only network traffic the app makes is SSH to your own servers and the update feed. No telemetry, no accounts, no third-party services, nothing phoning home.

Secrets stay secret. Never in a log line, a crash report, an MCP audit entry or an error message. Terminal scrollback is not written to disk by default.

Errors tell you what to do. "Could not connect" is a bug. "The proxy at 127.0.0.1:10808 is not answering — is V2Box running?" is an error message. The app distinguishes a dead proxy from an unreachable server from a refused credential, because otherwise diagnosis is guesswork.

It stays fast because it is open all day. Bytes from the network are batched into ~16 ms windows before they reach the emulator, the draw path allocates nothing, every buffer is bounded, polling stops when the window is not visible, and animations only ever touch transform and opacity.

Strict Swift 6 concurrency, in every target, with no escape hatches. Network, parsing and disk work live in actors; only view models are on the main actor.

Two languages. English and Russian, both through a String Catalog. Not one hardcoded interface string — a linter checks.


Status

Builds, runs, 179 tests green. Eleven screens: lock, hosts, terminal with persistent sessions, files, Docker, monitor, keys, provisioning, AI activity and settings. Interface in Russian and English.

What works against a real server: SSH over one multiplexed connection per host, container listing with actions and streaming logs, /proc metrics, reading and editing authorized_keys, provisioning recipes, both file panes, and an interactive shell that rides the same socket.

MCP works end to end: an phosphor-mcp shim ships inside the bundle, speaks JSON-RPC over stdio and proxies to a local socket the app owns. Every host starts disabled, writes need a decision from a person, a deny-list overrides every mode, and the audit log has no writing tool — the model can act but cannot erase its trail.

Hosts import from ~/.ssh/config, from known_hosts and from a Termius vault, whose plaintext dump is deleted once the hosts are inside the encrypted profile.

What is not built yet: the native Citadel transport (the process-based one is tested and works), the pet in the corner, and in-app updates through Sparkle.

Idle CPU is zero — no timers, polling pauses when the window is in the background.

Install

curl -fsSL https://github.com/Kirusshenkin/terminalOs/releases/latest/download/Phosphor.zip -o Phosphor.zip

unzip -q Phosphor.zip -d /Applications xattr -dr com.apple.quarantine /Applications/Phosphor.app

Or download Phosphor.zip from the release page and drag the app into Applications.

macOS will warn you the first time. The app is ad-hoc signed — there is no Apple Developer certificate behind it — so everything downloaded from the internet lands in quarantine. This is not damage:

  1. Double-click the app, dismiss the warning.
  2. System Settings → Privacy & Security → scroll down → Open Anyway.
  3. Confirm. It never asks again.

The xattr command above does the same thing in one step.

Every release ships SHA256SUMS.txt; verify with shasum -a 256 -c SHA256SUMS.txt.

There is no in-app updater yet — check the releases page. The version you are running is in the About panel.

Getting started

A guided walkthrough of the first run: docs/GUIDE.ru.md (Russian), docs/GUIDE.en.md (English).

For AI agents

Each release carries latest.json, so nothing has to be scraped:

curl -fsSL https://github.com/Kirusshenkin/terminalOs/releases/latest/download/latest.json
{

"version": "0.1.0", "url": "https://github.com/.../Phosphor-0.1.0.zip", "sha256": "…", "mcp": { "command": "/Applications/Phosphor.app/Contents/MacOS/phosphor-mcp", "transport": "stdio" } }

The bundle contains an MCP stdio shim. Register it and Phosphor exposes its tools:

{

"mcpServers": { "phosphor": { "command": "/Applications/Phosphor.app/Contents/MacOS/phosphor-mcp" } } }

The shim talks to the running app over a Unix socket in the user's home directory; it carries no credentials of its own. If the app is closed or locked it says so and every tool call fails closed — MCP access is off by default and has to be granted in the app, per session, with a fingerprint.

Releasing

Tag and push:

git tag v0.1.0 && git push origin v0.1.0

.github/workflows/release.yml runs the tests, then .github/scripts/package.sh — which is the same script used locally, so a release can always be reproduced on your own machine:

MARKETING_VERSION=0.1.0 BUILD_NUMBER=1 ./.github/scripts/package.sh

It produces dist/Phosphor- .zip, a copy named Phosphor.zip (only an exact filename works behind /releases/latest/download/), SHA256SUMS.txt and latest.json. The workflow unzips the archive again and runs codesign --verify on it before publishing: a bundle whose signature does not survive the round trip will not open on anyone's machine.

Build

Requires macOS 26+ and a Swift 6.3 toolchain.

git clone https://github.com/Kirusshenkin/terminalOs.git

cd terminalOs swift build swift test ./.github/scripts/check

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기