ADD MY PHAST
Connect the management MCP in ChatGPT, Claude, Codex, or another MCP client. Authenticate once with Teahub.
diff --git a/AGENTS.md b/AGENTS.md index 43ef2c8..976a37f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,7 +2,7 @@ ## Scope -Build and maintain Phast as a deliberately small Python + Prefab + MCP application platform. +Build and maintain Phast app as a deliberately small Python + Prefab + MCP application platform. ## Product model diff --git a/README.md b/README.md index 8540fbd..80229af 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# phast +# Phast app -Canonical source of truth for Phast. +Canonical source of truth for Phast app. > **Connect your tools once. Bring your tool belt anywhere.** -Phast gives a person one portable MCP plus a programmable Prefab home. Connect `my.phast.app/mcp` to an agent to create and manage Phasts. A created Phast has two matching surfaces: +Phast app gives a person one portable MCP plus a programmable Prefab home. Connect `my.phast.app/mcp` to an agent to create and manage Phast apps. A created Phast app has two matching surfaces: - `user.phast.app` — human / Prefab home - `user.phast.app/mcp` — the user's portable MCP tool belt @@ -29,10 +29,33 @@ Connect once to `my.phast.app/mcp` → create/manage `user.phast.app` → search ## Boundaries -- **Phast composes.** It owns the portable MCP/tool belt and Prefab composition. -- **Oracle discovers.** Provider/MCP/OAuth discovery comes from the capability graph, not a hard-coded Phast directory. -- **Persimmons holds secrets.** Phast stores connection/authority references, not secret values. +- **Phast app composes.** It owns the portable MCP/tool belt and Prefab composition. +- **Oracle discovers.** Provider/MCP/OAuth discovery comes from the capability graph, not a hard-coded Phast app directory. +- **Persimmons holds secrets.** Phast app stores connection/authority references, not secret values. - **Factory builds/operates.** Provisioning uses bounded deterministic infrastructure routes. -- **Clients are replaceable.** ChatGPT, Claude, Codex, or another MCP client should be able to use the same Phast without recollecting the user's tools. +- **Clients are replaceable.** ChatGPT, Claude, Codex, or another MCP client should be able to use the same Phast app without recollecting the user's tools. V0 is intentionally not arbitrary app generation. Prove the portable-tool-belt + editable-home loop first. + +## Naming and copy + +Use **Phast app** when naming the product or one of its instances; use +**Phast apps** for the plural. Write “your Phast app,” “create a Phast app,” +and “My Phast app” for the management connector. Existing all-caps display +styles may use “PHAST APP.” Apply this to page titles, metadata, navigation, +buttons, examples, generated homes, MCP display text, and documentation. + +Keep deliberate substitutions for “fast”: “make something phast,” +“built phast,” and “make MCP apps phast.” Do not rename literal domains, +URLs, `phast.json`, environment variables, CSS classes, tool names, or +schema keys/values as part of a copy edit. Preserve user-chosen app names. + +The public copy lives in `index.html` (phast.app), `my/index.html` +(my.phast.app), and `server.py` (generated personal homes and MCP display +text). `phast.json` supplies the management display name. Review these +surfaces together when changing product naming. + +Chair review: the standalone “PHAST.” wordmark and the “My Phast” connector +label could be separate brand treatments. This change proposes “PHAST APP.” +and “My Phast app” consistently; the chair should confirm those treatments. +The phrase “your Phast” names an app instance, so it becomes “your Phast app.” diff --git a/__init__.py b/__init__.py index ef13255..67015ff 100644 --- a/__init__.py +++ b/__init__.py @@ -1 +1 @@ -"""Phast application runtime.""" +"""Phast app runtime.""" diff --git a/index.html b/index.html index eca8d60..6c29397 100644 --- a/index.html +++ b/index.html @@ -4,8 +4,8 @@ - -
Connect your tools once.
Bring your tool belt anywhere. ChatGPT, Claude, Codex — same Phast, same tools, same home.
Connect your tools once.
Bring your tool belt anywhere. ChatGPT, Claude, Codex — same Phast app, same tools, same home.
START HERE // ONE CONNECTION
Add My Phast to your agent once. Then create personal MCPs, add tools, stream Prefab, and keep what works.
Add My Phast app to your agent once. Then create personal MCPs, add tools, stream Prefab, and keep what works.
Connect the management MCP in ChatGPT, Claude, Codex, or another MCP client. Authenticate once with Teahub.
No project wizard. Name it in chat. Wildcard DNS, TLS, home, and MCP are already waiting.
Add providers, tools, and Prefab widgets. Your agent and your web home edit the same Phast.
Connect the management MCP in ChatGPT, Claude, Codex, or another MCP client. Authenticate once with Teahub.
No project wizard. Name it in chat. Wildcard DNS, TLS, home, and MCP are already waiting.
Add providers, tools, and Prefab widgets. Your agent and your web home edit the same Phast app.
"
+ + "Phast app."
+ data["host"]
+ "/mcp "
+ data["name"]
@@ -198,9 +198,9 @@ def human(data: dict[str, Any]) -> str:
m = FastMCP(
- "My Phast",
+ "My Phast app",
version="0.2.0",
- instructions="Create and manage portable Phast MCP tool belts and Prefab homes.",
+ instructions="Create and manage portable Phast app MCP tool belts and Prefab homes.",
auth=auth("https://my.phast.app"),
mask_error_details=True,
)
@@ -317,7 +317,7 @@ def inst(value: str):
personal = FastMCP(
data["name"],
version="0.2.0",
- instructions="Portable personal Phast MCP.",
+ instructions="Portable personal Phast app MCP.",
auth=auth("https://my.phast.app", "https://" + data["host"]),
mask_error_details=True,
)
@@ -385,7 +385,7 @@ class Router:
try:
data = read(value)
except Exception:
- await JSONResponse({"error": "unknown Phast"}, status_code=404)(scope, receive, send)
+ await JSONResponse({"error": "unknown Phast app"}, status_code=404)(scope, receive, send)
return
if request_path == "/" and method in {"GET", "HEAD"}: