ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

No Crd

โดย nogoo9รุ่น 0.18.0i★ –iรันบนเครื่อง
ชื่อใน registryio.github.nogoo9/no-crd

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

Dynamic pod spawner & proxy for ephemeral AI agent workspaces on Kubernetes without CRDs

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: เครื่องมือนักพัฒนา
  • ต้องใส่ค่าเหล่านี้: TLS_KEY, JWT_SECRET, JWT_PUBLIC_KEY, OAUTH_CLIENT_SECRET, PROXY_SESSION_SECRET

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

  • ผลตรวจเบื้องต้น: ผ่าน 1 จาก 1 ข้อ
  • รันในเครื่องคุณด้วยสิทธิ์ของผู้ใช้คุณ (ไฟล์ อินเทอร์เน็ต แอปต่าง ๆ)
  • ค่าที่คุณต้องใส่เอง: KUBECONFIG, BASE_URL, STATELESS, TLS_CERT, TLS_KEY, TLS_CA, NODE_TLS_REJECT_UNAUTHORIZED, REGISTRY_URL, TEMPLATES_DIR, BUILTIN_TEMPLATES, AUTH_ENABLED, JWT_VERIFICATION_REQUIRED, JWT_SECRET, JWT_PUBLIC_KEY, JWKS_URI, INTROSPECTION_ENDPOINT, OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET, JWT_AUDIENCE, AUTH_ISSUER, AUTH_SUB_JSONPATH, AUTH_ADMIN_ROLE, AUTH_ADMIN_USERS, PROXY_SESSION_TTL, PROXY_SESSION_SECRET, UI_ENABLED, THEMES_DIR, THEMES_CONFIGMAP, DOCS_DIR, OAUTH_DISCOVERY_URL, OAUTH_LOGIN_METHOD, UI_TITLE, UI_SUBTITLE

ค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต

ต้องเตรียมก่อน

  • npmติดตั้ง Node.js (มีคำสั่ง npx) ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "no-crd": {
      "command": "npx",
      "args": [
        "-y",
        "@nogoo9/no-crd"
      ],
      "env": {
        "KUBECONFIG": "ใส่ค่าของคุณ",
        "BASE_URL": "ใส่ค่าของคุณ",
        "STATELESS": "ใส่ค่าของคุณ",
        "TLS_CERT": "ใส่ค่าของคุณ",
        "TLS_KEY": "ใส่ค่าของคุณ",
        "TLS_CA": "ใส่ค่าของคุณ",
        "NODE_TLS_REJECT_UNAUTHORIZED": "ใส่ค่าของคุณ",
        "REGISTRY_URL": "ใส่ค่าของคุณ",
        "TEMPLATES_DIR": "ใส่ค่าของคุณ",
        "BUILTIN_TEMPLATES": "ใส่ค่าของคุณ",
        "AUTH_ENABLED": "ใส่ค่าของคุณ",
        "JWT_VERIFICATION_REQUIRED": "ใส่ค่าของคุณ",
        "JWT_SECRET": "ใส่ค่าของคุณ",
        "JWT_PUBLIC_KEY": "ใส่ค่าของคุณ",
        "JWKS_URI": "ใส่ค่าของคุณ",
        "INTROSPECTION_ENDPOINT": "ใส่ค่าของคุณ",
        "OAUTH_CLIENT_ID": "ใส่ค่าของคุณ",
        "OAUTH_CLIENT_SECRET": "ใส่ค่าของคุณ",
        "JWT_AUDIENCE": "ใส่ค่าของคุณ",
        "AUTH_ISSUER": "ใส่ค่าของคุณ",
        "AUTH_SUB_JSONPATH": "ใส่ค่าของคุณ",
        "AUTH_ADMIN_ROLE": "ใส่ค่าของคุณ",
        "AUTH_ADMIN_USERS": "ใส่ค่าของคุณ",
        "PROXY_SESSION_TTL": "ใส่ค่าของคุณ",
        "PROXY_SESSION_SECRET": "ใส่ค่าของคุณ",
        "UI_ENABLED": "ใส่ค่าของคุณ",
        "THEMES_DIR": "ใส่ค่าของคุณ",
        "THEMES_CONFIGMAP": "ใส่ค่าของคุณ",
        "DOCS_DIR": "ใส่ค่าของคุณ",
        "OAUTH_DISCOVERY_URL": "ใส่ค่าของคุณ",
        "OAUTH_LOGIN_METHOD": "ใส่ค่าของคุณ",
        "UI_TITLE": "ใส่ค่าของคุณ",
        "UI_SUBTITLE": "ใส่ค่าของคุณ"
      }
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add no-crd --env KUBECONFIG='ใส่ค่าของคุณ' --env BASE_URL='ใส่ค่าของคุณ' --env STATELESS='ใส่ค่าของคุณ' --env TLS_CERT='ใส่ค่าของคุณ' --env TLS_KEY='ใส่ค่าของคุณ' --env TLS_CA='ใส่ค่าของคุณ' --env NODE_TLS_REJECT_UNAUTHORIZED='ใส่ค่าของคุณ' --env REGISTRY_URL='ใส่ค่าของคุณ' --env TEMPLATES_DIR='ใส่ค่าของคุณ' --env BUILTIN_TEMPLATES='ใส่ค่าของคุณ' --env AUTH_ENABLED='ใส่ค่าของคุณ' --env JWT_VERIFICATION_REQUIRED='ใส่ค่าของคุณ' --env JWT_SECRET='ใส่ค่าของคุณ' --env JWT_PUBLIC_KEY='ใส่ค่าของคุณ' --env JWKS_URI='ใส่ค่าของคุณ' --env INTROSPECTION_ENDPOINT='ใส่ค่าของคุณ' --env OAUTH_CLIENT_ID='ใส่ค่าของคุณ' --env OAUTH_CLIENT_SECRET='ใส่ค่าของคุณ' --env JWT_AUDIENCE='ใส่ค่าของคุณ' --env AUTH_ISSUER='ใส่ค่าของคุณ' --env AUTH_SUB_JSONPATH='ใส่ค่าของคุณ' --env AUTH_ADMIN_ROLE='ใส่ค่าของคุณ' --env AUTH_ADMIN_USERS='ใส่ค่าของคุณ' --env PROXY_SESSION_TTL='ใส่ค่าของคุณ' --env PROXY_SESSION_SECRET='ใส่ค่าของคุณ' --env UI_ENABLED='ใส่ค่าของคุณ' --env THEMES_DIR='ใส่ค่าของคุณ' --env THEMES_CONFIGMAP='ใส่ค่าของคุณ' --env DOCS_DIR='ใส่ค่าของคุณ' --env OAUTH_DISCOVERY_URL='ใส่ค่าของคุณ' --env OAUTH_LOGIN_METHOD='ใส่ค่าของคุณ' --env UI_TITLE='ใส่ค่าของคุณ' --env UI_SUBTITLE='ใส่ค่าของคุณ' -- npx -y @nogoo9/no-crd

เติมค่าที่เว้นว่างไว้ก่อนรัน

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "no-crd": {
      "command": "npx",
      "args": [
        "-y",
        "@nogoo9/no-crd"
      ],
      "env": {
        "KUBECONFIG": "ใส่ค่าของคุณ",
        "BASE_URL": "ใส่ค่าของคุณ",
        "STATELESS": "ใส่ค่าของคุณ",
        "TLS_CERT": "ใส่ค่าของคุณ",
        "TLS_KEY": "ใส่ค่าของคุณ",
        "TLS_CA": "ใส่ค่าของคุณ",
        "NODE_TLS_REJECT_UNAUTHORIZED": "ใส่ค่าของคุณ",
        "REGISTRY_URL": "ใส่ค่าของคุณ",
        "TEMPLATES_DIR": "ใส่ค่าของคุณ",
        "BUILTIN_TEMPLATES": "ใส่ค่าของคุณ",
        "AUTH_ENABLED": "ใส่ค่าของคุณ",
        "JWT_VERIFICATION_REQUIRED": "ใส่ค่าของคุณ",
        "JWT_SECRET": "ใส่ค่าของคุณ",
        "JWT_PUBLIC_KEY": "ใส่ค่าของคุณ",
        "JWKS_URI": "ใส่ค่าของคุณ",
        "INTROSPECTION_ENDPOINT": "ใส่ค่าของคุณ",
        "OAUTH_CLIENT_ID": "ใส่ค่าของคุณ",
        "OAUTH_CLIENT_SECRET": "ใส่ค่าของคุณ",
        "JWT_AUDIENCE": "ใส่ค่าของคุณ",
        "AUTH_ISSUER": "ใส่ค่าของคุณ",
        "AUTH_SUB_JSONPATH": "ใส่ค่าของคุณ",
        "AUTH_ADMIN_ROLE": "ใส่ค่าของคุณ",
        "AUTH_ADMIN_USERS": "ใส่ค่าของคุณ",
        "PROXY_SESSION_TTL": "ใส่ค่าของคุณ",
        "PROXY_SESSION_SECRET": "ใส่ค่าของคุณ",
        "UI_ENABLED": "ใส่ค่าของคุณ",
        "THEMES_DIR": "ใส่ค่าของคุณ",
        "THEMES_CONFIGMAP": "ใส่ค่าของคุณ",
        "DOCS_DIR": "ใส่ค่าของคุณ",
        "OAUTH_DISCOVERY_URL": "ใส่ค่าของคุณ",
        "OAUTH_LOGIN_METHOD": "ใส่ค่าของคุณ",
        "UI_TITLE": "ใส่ค่าของคุณ",
        "UI_SUBTITLE": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "no-crd": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@nogoo9/no-crd"
      ],
      "env": {
        "KUBECONFIG": "ใส่ค่าของคุณ",
        "BASE_URL": "ใส่ค่าของคุณ",
        "STATELESS": "ใส่ค่าของคุณ",
        "TLS_CERT": "ใส่ค่าของคุณ",
        "TLS_KEY": "ใส่ค่าของคุณ",
        "TLS_CA": "ใส่ค่าของคุณ",
        "NODE_TLS_REJECT_UNAUTHORIZED": "ใส่ค่าของคุณ",
        "REGISTRY_URL": "ใส่ค่าของคุณ",
        "TEMPLATES_DIR": "ใส่ค่าของคุณ",
        "BUILTIN_TEMPLATES": "ใส่ค่าของคุณ",
        "AUTH_ENABLED": "ใส่ค่าของคุณ",
        "JWT_VERIFICATION_REQUIRED": "ใส่ค่าของคุณ",
        "JWT_SECRET": "ใส่ค่าของคุณ",
        "JWT_PUBLIC_KEY": "ใส่ค่าของคุณ",
        "JWKS_URI": "ใส่ค่าของคุณ",
        "INTROSPECTION_ENDPOINT": "ใส่ค่าของคุณ",
        "OAUTH_CLIENT_ID": "ใส่ค่าของคุณ",
        "OAUTH_CLIENT_SECRET": "ใส่ค่าของคุณ",
        "JWT_AUDIENCE": "ใส่ค่าของคุณ",
        "AUTH_ISSUER": "ใส่ค่าของคุณ",
        "AUTH_SUB_JSONPATH": "ใส่ค่าของคุณ",
        "AUTH_ADMIN_ROLE": "ใส่ค่าของคุณ",
        "AUTH_ADMIN_USERS": "ใส่ค่าของคุณ",
        "PROXY_SESSION_TTL": "ใส่ค่าของคุณ",
        "PROXY_SESSION_SECRET": "ใส่ค่าของคุณ",
        "UI_ENABLED": "ใส่ค่าของคุณ",
        "THEMES_DIR": "ใส่ค่าของคุณ",
        "THEMES_CONFIGMAP": "ใส่ค่าของคุณ",
        "DOCS_DIR": "ใส่ค่าของคุณ",
        "OAUTH_DISCOVERY_URL": "ใส่ค่าของคุณ",
        "OAUTH_LOGIN_METHOD": "ใส่ค่าของคุณ",
        "UI_TITLE": "ใส่ค่าของคุณ",
        "UI_SUBTITLE": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าที่ต้องใส่เอง

  • KUBECONFIG env
    Path to the Kubernetes API credentials configuration file
  • BASE_URL env
    Hosting URL subpath prefix for gateways and reverse proxies
  • STATELESS env
    Disable in-memory session tracking for stateless execution
  • TLS_CERT env
    Local file path containing TLS public certificate (HTTPS)
  • TLS_KEY ความลับ env
    Local file path containing TLS private key (HTTPS)
  • TLS_CA env
    Local file path containing trusted client Certificate Authority
  • NODE_TLS_REJECT_UNAUTHORIZED env
    Set to '0' to allow connection to unverified TLS endpoints
  • REGISTRY_URL env
    Default container registry for workspace image resolution
  • TEMPLATES_DIR env
    Local filesystem directory containing custom YAML/JSON templates
  • BUILTIN_TEMPLATES env
    Enable loading of standard pre-configured templates (default: true)
  • AUTH_ENABLED env
    Enforce JWT verification and user tenant isolation (default: false)
  • JWT_VERIFICATION_REQUIRED env
    Set to 'false' to skip OIDC cryptographic signature checks
  • JWT_SECRET ความลับ env
    HMAC-SHA symmetric secret key to sign/verify JWT tokens
  • JWT_PUBLIC_KEY ความลับ env
    PEM public key to verify asymmetric OIDC signatures
  • JWKS_URI env
    Discovery URI to fetch keys from OIDC provider dynamically
  • INTROSPECTION_ENDPOINT env
    RFC 7662 compliant token introspection validation endpoint
  • OAUTH_CLIENT_ID env
    Client identifier for OAuth2 authentication flows
  • OAUTH_CLIENT_SECRET ความลับ env
    Client secret credentials used for token introspection
  • JWT_AUDIENCE env
    Target audience check value for incoming OIDC tokens
  • AUTH_ISSUER env
    Expected token issuer authority check value (e.g. Keycloak)
  • AUTH_SUB_JSONPATH env
    JSONPath pattern to extract user identity subject from token
  • AUTH_ADMIN_ROLE env
    Bypass role name that grants admin access (default: nogoo9-admin)
  • AUTH_ADMIN_USERS env
    Comma-separated list of user subject IDs (sub) granted admin privileges without OIDC scope/role claims
  • PROXY_SESSION_TTL env
    Active lifetime in seconds for signed proxy session cookies
  • PROXY_SESSION_SECRET ความลับ env
    Secret key for session cookie signing
  • UI_ENABLED env
    Serve the built-in HTML dashboard (default: true)
  • THEMES_DIR env
    Filesystem directory to scan for custom CSS themes
  • THEMES_CONFIGMAP env
    ConfigMap name storing dynamic CSS theme overrides
  • DOCS_DIR env
    Directory containing static documentation web files to serve
  • OAUTH_DISCOVERY_URL env
    Standard OIDC .well-known configuration discovery endpoint
  • OAUTH_LOGIN_METHOD env
    UI SSO flow login method: 'redirect' or silent 'iframe'
  • UI_TITLE env
    Custom dashboard header title for white-label branding
  • UI_SUBTITLE env
    Custom dashboard subtitle text below the header title

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub nogoo9 ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด เครื่องมือนักพัฒนาi

  • ดาวมากกว่า 0% ของอีก 1393 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 41% ของอีก 1393 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 1393 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

No Crd ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

ต้องใส่ค่าเหล่านี้: TLS_KEY, JWT_SECRET, JWT_PUBLIC_KEY, OAUTH_CLIENT_SECRET, PROXY_SESSION_SECRET

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.18.0) เข้า registry 3 เดือนที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี GitHub, Desktop Commander, Cloudflare MCP

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

GitHub

โดย github

server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้

บนเครื่องหรือคลาวด์★ 34,245MITอัปเดต 3 วันที่ผ่านมา
ติดตั้ง

Desktop Commander

โดย wonderwhy-er

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

รันบนเครื่อง★ 10,225MITอัปเดต 15 วันที่ผ่านมา
ติดตั้ง

Cloudflare MCP

โดย cloudflare

Cloudflare MCP servers

รันบนคลาวด์★ 4,446Apache-2.0อัปเดต 14 เดือนที่ผ่านมา
ติดตั้ง

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

@nogoo9/no-crd

Agent-Driven, On-Demand Pod Orchestration in Kubernetes — Without Custom Resource Definitions.

@nogoo9/no-crd is a lightweight, cross-runtime Model Context Protocol (MCP) server that empowers AI agents and APIs to dynamically spawn, route to, and manage ephemeral containerized sandboxes on standard Kubernetes (k8s/k3s) clusters — without requiring Custom Resource Definitions (CRDs), cluster-level operators, or elevated RBAC permissions.

It provides JupyterHub-like dynamic pod lifecycle management but is completely agnostic to actual workloads and supports multi-runtime execution under Bun, Deno, and Node.js.

📚 For detailed guides, API reference, and configuration options, visit the public [Documentation Website](https://nogoo9.github.io/no-crd/) or access the built-in documentation served directly at `/docs/` (e.g. `http://localhost:3000/docs/`) when running the server.


🗺️ Choose Your Path

To get started with @nogoo9/no-crd, select the track that matches your goals:

  • Track A: AI Agent & MCP Users $\rightarrow$ MCP Client Setup Guide
  • *Best for:* Connecting no-crd to Cursor, Claude Desktop, Cline, or Roo Code to let your agent manage pods.
  • Track B: Platform & Service Deployers $\rightarrow$ SSO & Routing Deployment Guide
  • *Best for:* Deploying a multi-tenant sandbox service in your Kubernetes cluster with Keycloak OIDC, stateless cookies, and reverse proxy routing.
  • Track C: SDK & Code Contributors $\rightarrow$ SDK & Contributor Guide
  • *Best for:* Programmatically controlling pods via the TypeScript SDK or contributing to the core runtime codebase.

🚀 Key Features

  • No CRDs Required: Runs directly against core Kubernetes resources (Pods, ConfigMaps, ServiceAccounts). Highly portable, secure, and compatible with restricted/managed environments (EKS, GKE, K3s).
  • Agent Sandbox Spawner: Specialized spawner tools that automate workspace provisioning with context validation, init containers, IAM roles, pre-stop hooks, and lifecycle sync.
  • ConfigMap-Based Templates: Store, version, and load reusable pod templates stored as standard Kubernetes ConfigMaps.
  • Local Filesystem Templates: Bake YAML/JSON pod templates into Docker images or mount them from host paths — with built-in defaults shipped in the package.
  • Isomorphic Multi-Runtime SDK: Imports seamlessly as a composable programmatic SDK or MCP server running under Node.js, Bun, or Deno.
  • Workspace Routing Proxy (Experimental): Built-in reverse proxy routing that dynamically pipes traffic to running container IPs with secure user token ownership verification, path-scoped session cookies (nocr_token and nocr_sess), and automatic HMAC-signed session management for short-lived token resilience.
  • Experimental JWT Authentication: Built-in OAuth token validation engine supporting HS256, RS256, ES256, JWKS endpoints, and OAuth 2.0 Token Introspection (RFC 7662).
  • Embedded Web UI App: Exposes an interactive web-based Pod Manager interface featuring a light/dark theme toggle, client-side PKCE OIDC login with proactive silent token refresh, and workspace file preview rendering (supporting HTML sandboxed iframes and custom Markdown rendering).

⚡ Quick Start

Run Standalone via NPX (No Installation)
# Option 1: Start HTTP/SSE server on port 3000

npx @nogoo9/no-crd --transport http --port 3000

Option 2: Run over standard input/output (stdio) for local IDE agents

npx @nogoo9/no-crd --transport stdio --mode cluster

Install Globally
npm install -g @nogoo9/no-crd

nocrd9 --transport stdio --mode cluster

Run via Docker
docker run -d -p 3000:3000 \

-v "$HOME/.kube/config:/app/.kube/config:ro" \ -e KUBECONFIG=/app/.kube/config \ ghcr.io/nogoo9/no-crd:latest


⚙️ Configuration & Environment Variables

The server and command-line utility are configurable using CLI options or environment variables. Below is the quick reference table of all settings:

🔌 Server Configuration
CLI OptionEnvironment VariableDefaultAllowed ValuesDescription
-t, --transportTRANSPORThttphttp, stdio, bothServer transport mode. both fires up both transports simultaneously.
-p, --portPORT3000NumberHTTP server port for SSE transport.
-H, --hostHOST0.0.0.0StringHost interface to bind the HTTP/SSE server to.
--base-urlBASE_URL""Path stringBase URL path prefix for hosting behind a reverse proxy (e.g. /gateway/no-crd).
-STATELESSfalsetrue, falseEnable stateless request handling (no session affinity).
-l, --log-levelLOG_LEVELinfodebug, info, warning, error, fatalLogging verbosity filter.
-LOG_FILEnogoo9-mcp.logStringOutput file path for file logging.
-RATE_LIMIT_MAX100NumberMaximum requests allowed per window for rate limited routes.
-RATE_LIMIT_WINDOW60000NumberTime window in milliseconds for rate limited routes.
--proxy-timeoutPROXY_TIMEOUT120000NumberTimeout in milliseconds for the routing proxy upstream requests.
--proxy-keep-alivePROXY_KEEP_ALIVEtruetrue, falseEnable TCP keep-alive for the routing proxy upstream requests.
🔒 TLS Configuration
CLI OptionEnvironment VariableDefaultAllowed ValuesDescription
--tls-certTLS_CERT-Path stringPath to TLS certificate file to enable HTTPS.
--tls-keyTLS_KEY-Path stringPath to TLS private key file to enable HTTPS.
--tls-caTLS_CA-Path stringPath to TLS CA certificate file for HTTPS client/verification.
-NODE_TLS_REJECT_UNAUTHORIZEDtrue0 (false), 1 (true)Set to 0 to bypass TLS verification (for development/testing only).
🌐 CORS Configuration
CLI OptionEnvironment VariableDefaultAllowed ValuesDescription
--cors-originCORS_ALLOWED_ORIGIN, CORS_ORIGIN*StringCORS Allowed Origin header.
--cors-methodsCORS_ALLOWED_METHODS, CORS_METHODSGET, POST, OPTIONSStringCORS Allowed Methods header.
--cors-headersCORS_ALLOWED_HEADERS, CORS_HEADERSContent-Type, Authorization, mcp-protocol-version, mcp-session-idStringCORS Allowed Headers header.
--cors-allow-credentialsCORS_ALLOW_CREDENTIALS, CORS_CREDENTIALSfalsetrue, falseEnable CORS Access-Control-Allow-Credentials header.
--cors-expose-headersCORS_EXPOSED_HEADERS, CORS_EXPOSEDmcp-session-id, x-refreshed-tokenStringCustom CORS Access-Control-Expose-Headers header.
--cors-max-ageCORS_MAX_AGE-NumberCustom CORS Access-Control-Max-Age header in seconds.
☸️ Kubernetes Configuration
CLI OptionEnvironment VariableDefaultAllowed ValuesDescription
-m, --modeMODEclustercluster, namespacedKubernetes access scope. namespaced locks operations to a single namespace.
-n, --namespaceNAMESPACE, DEFAULT_NAMESPACEnogoo9StringDefault Kubernetes namespace for operations.
--disable-permission-checksDISABLE_PERMISSION_CHECKSfalsetrue, falseDisable Kubernetes RBAC permission checks and assume all tools are enabled.
--managed-onlyMANAGED_ONLYtruetrue, falseWhen true, pod tools only operate on pods managed by this server (nogoo9/managed-by label). No one bypasses this, not even admins. See ADR-008.
--default-workspace-portDEFAULT_WORKSPACE_PORT-NumberDefault target port inside the workspace pods to proxy traffic to.
-REGISTRY_URL-URL stringTarget container registry URL to query for images (e.g. http://localhost:5001).
-TEMPLATES_DIR-Path stringPath to local directory containing pod template files (YAML/JSON). See ADR-001.
-BUILTIN_TEMPLATEStruetrue, falseSet to false to disable built-in templates shipped with the package.
🔑 Authentication Configuration
CLI OptionEnvironment VariableDefaultAllowed ValuesDescription
--auth-enabledAUTH_ENABLEDfalsetrue, falseEnables JWT token authentication on MCP tools and route proxy.
-JWT_VERIFICATION_REQUIREDtruetrue, falseEnable/disable JWT signature verification (signature checks).
-JWT_SECRET-StringSymmetric HMAC-SHA256 secret for token verification.
-JWT_PUBLIC_KEY-StringPEM encoded RSA/ECDSA public key for asymmetric token verification.
-JWKS_URI-URL stringRemote JWKS endpoint URL to dynamically retrieve verification keys.
-INTROSPECTION_ENDPOINT, JWT_INTROSPECTION_ENDPOINT-URL stringEndpoint for token introspection/validation.
-OAUTH_CLIENT_ID-StringOAuth client ID for auth configuration.
-OAUTH_CLIENT_SECRET-StringOAuth client secret for auth configuration.
-JWT_AUDIENCE-StringExpected token audience. Falls back to OAUTH_CLIENT_ID if set.

| - | AUTH_ISSUER, JWT_ISSUER | "" | URL string | Identifier URL

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx