← 목록
기타 2026-06-27 14KB 읽기 15분

cowork 3단계 런처 흐름 + 티어별 크라우니코드 기능·범위 정량분류

개요

cowork.crowny.org(:9720)에서 다른 컴퓨터(맥·윈도우)가 한 줄 명령으로 자기 환경에 맞는 크라우니코드 작업환경을 받아 협업하도록 만드는 설계 문서다. 두 가지를 다룬다.

  1. 3단계 런처 흐름 — ①받을 프로그램 확인+런처 받기 ②환경(OS/arch)에 맞는 패키지 받기 ③티어별 작업환경 세팅. 각 단계의 엔드포인트·산출물·검증을 맥(.sh)·윈도우(.ps1/.cmd) 양쪽으로.
  2. 티어별 정량분류 — 일반/티어1/2/3/4/슈퍼 6등급이 각각 무엇을 얼마나 받고·올리고·쓸 수 있는지 숫자 표로.
기존 /setup·/setup.ps1·/api/setting-bundle·/api/packages·/api/download·/cli을 최대한 재활용한다. 새로 추가하는 것은 런처 자체(얇은 부트스트랩)와 환경매칭 엔드포인트 2개뿐이다.

권한 방향 주의(헷갈리기 쉬움): 등급 N(1~4)은 티어번호 ≥ N 접근. 즉 티어1이 가장 많이(T1~T4) 접근하고 티어4가 가장 적게(T4만) 접근한다. 권한 오름차순: 일반(게스트) < 티어4 < 티어3 < 티어2 < 티어1 < 슈퍼. (auth-tier.js:134 canAccessTier 근거)

1부. 3단계 런처 흐름

큰 그림

[1단계] 디바이스가 "내가 받을 게 뭔지" 확인 → 작은 런처 받기
   윈도우PC ──GET /launcher.ps1 (또는 .cmd)──▶ cowork
   맥/리눅스 ─GET /launcher (sh)──────────────▶ cowork
        ▲ 받기 전, GET /api/launcher/manifest?os=&arch= 로
          "이 환경에서 받을 수 있는 프로그램 목록"을 먼저 보여줌(무인증, 안내용)

[2단계] 런처가 서버 접속 → 내 환경(OS/arch)에 맞는 패키지 받기
   런처가 uname -sm / $env:PROCESSOR_ARCHITECTURE 로 환경 감지
   → POST /api/login (id/비번 → 토큰)
   → GET /api/launcher/resolve?os=win&arch=x64  (서버가 딱 맞는 파일 1개 지목)
   → GET /api/download/<파일>?token=...          (인증 스트리밍)
   → 압축 풀기 + sha256 검증

[3단계] 실행하면 티어별 크라우니코드 작업환경 세팅
   → GET /api/me 로 내 등급 확인
   → GET /api/setting-bundle?tier=<허용티어> (등급게이팅 HOME상대 tar.gz)
   → $HOME 복원 + make 한선씨 빌드 + 슬래시스킬 활성
   → .crownycode/tier.json 생성(로컬 기능 게이트) → 끝. 'claude' 실행 가능

핵심 원칙: 런처는 작고(수 KB) 자기완결이어야 한다. 큰 컴파일러·stdlib·패턴DB는 2·3단계에서 인증 후 받는다. 외부에서 :9720 직접 접속은 방화벽에 막히므로 포트 없는 https://cowork.crowny.org 만 쓴다(아래 선결 버그 수정 필수).

1단계 — 받을 프로그램 확인 + 런처 받기

항목내용
엔드포인트(신규)GET /api/launcher/manifest?os=<win\|mac\|linux>&arch=<x64\|arm64> (무인증, 안내용)
엔드포인트(신규)GET /launcher(맥/리눅스 sh) · GET /launcher.ps1(윈도우 PS) · GET /launcher.cmd(윈도우 더블클릭)
산출물manifest JSON: {os, arch, available:[{kind,file,size,sha256,minTier}], launcherUrl}
산출물런처 스크립트 본문(자기완결, 의존성 0)
검증manifest의 available가 빈 배열이 아니면 OK / 런처 파일 크기 > 0 / 첫 줄 shebang(#!/bin/bash) 또는 function 확인
manifest는 "내 위치에서 무엇을 받을 수 있는가"를 로그인 전에 보여주는 카탈로그다. 등급별 실제 다운로드 가능 여부는 minTier로 표시만 하고(로그인 후 강제), 본문 차단은 2·3단계에서 한다.

윈도우 한 줄(권장 — 포트 없이 https):

powershellirm https://cowork.crowny.org/launcher.ps1 | iex ; cowork-launch
윈도우 더블클릭(.cmd, PS 정책 회피):
batcurl -L -o cowork-launch.cmd https://cowork.crowny.org/launcher.cmd && cowork-launch.cmd
맥/리눅스 한 줄:
bashcurl -fsSL https://cowork.crowny.org/launcher | bash

2단계 — 환경 매칭 패키지 다운로드

항목내용
엔드포인트(재활용)POST /api/login {id,password} → 세션토큰(12h)
엔드포인트(신규)GET /api/launcher/resolve?os=&arch=&tier= → 서버가 환경+등급에 맞는 단일 패키지 지목 {file,url,size,sha256}
엔드포인트(재활용)GET /api/packages(목록, 인증) · GET /api/download/<파일>?token=(스트리밍, 인증)
산출물환경별 패키지: 한선씨-win-v1.0.zip / 한선씨-mac-v1.0.tar.gz / 크라우니-올인원-v1.0.zip(55MB) 등 (server.js:1829 /api/packages 규칙)
검증다운로드 sha256 == resolve의 sha256 / 압축해제 후 bin/crownyc(.exe) 존재 / bin/crownyc --version 또는 han 예제.한선 1회 성공
런처가 하는 일(의사 흐름):
OS = uname -s (Darwin/Linux)  또는  $PSVersionTable + $env:PROCESSOR_ARCHITECTURE
ARCH = uname -m (arm64/x86_64) 또는 AMD64/ARM64
TOK = POST /api/login
PKG = GET /api/launcher/resolve?os=$OS&arch=$ARCH&tier=$TIER   # 서버가 딱 1개 지목
GET /api/download/$PKG.file?token=$TOK  →  파일 저장
sha256 검증  →  압축 풀기  →  bin 권한(chmod +x)
resolve가 없으면(폴백) 런처가 /api/packages를 받아 platform==os && (arch 매칭||무관)로 직접 고른다. 서버측 매칭(resolve)이 우선 — 클라이언트가 OS 판별 실수해도 서버가 교정.

3단계 — 티어별 크라우니코드 작업환경 세팅

항목내용
엔드포인트(재활용)GET /api/me{gradeLevel, accessibleTiers, secretsAllowed}
엔드포인트(재활용)GET /api/setting-bundle?tier=<csv> → 등급게이팅 HOME상대 tar.gz (server.js:1125)
엔드포인트(재활용)GET /setup·/setup.ps1 (로그인→번들pull→복원→make→스킬활성 — 3단계 본체를 이미 구현)
산출물$HOME 복원: .claude/{commands,skills,templates,scripts}, CrownyOS/crownyc(빌드가능), std, 헌법/CLAUDE.md
산출물(신규)~/.crownycode/tier.json — 로컬 기능 게이트({gradeLevel, builtinsMax, libsMax, skills:[], patternDB:"none|read|search|contribute|write", concurrency:N})
검증/api/me 등급 == 기대 / 번들 KB > 0 / make crownyc hanseonc_high 성공 / echo '출력값("ok")' \| hanseonc_high \| crownyc run == ok / 슬래시스킬 디렉토리 존재
3단계는 사실상 기존 /setup(맥)·/setup.ps1(윈도우)이 이미 수행한다. 런처는 2단계에서 패키지를 깐 뒤 이 setup 스크립트를 호출하면 된다. 단 한 가지 추가: 등급에 맞는 tier.json을 써서 로컬 크라우니코드 기능 범위를 고정(2부 표가 SSOT). 예: 일반=내장함수 50개만, 티어1=225개 전체.

TIER_LIST = GET /api/me .accessibleTiers   # 예: 티어1 → [4,3,2,1]
curl /api/setting-bundle?tier=$TIER_LIST → $HOME 복원
make -B crownyc hanseonc_high             # 한선씨 VM/컴파일러 빌드
write ~/.crownycode/tier.json             # 2부 표 기준 기능 게이트
echo "✓ 세팅 완료 — 이 폴더서 claude 실행 → /크라우니코드 /한선씨"

선결 과제 (런처 동작 전 반드시 수정 — 감사 결과)

런처 흐름이 윈도우에서 무한 대기·연결거부 없이 돌려면, UX 감사가 찾은 HTTP 하드코딩 3곳 + 포트 직접접속을 먼저 고쳐야 한다(이게 윈도우 무한제한의 근본원인).

  • public/portal.html:263-266http://${host}/setup 하드코딩 → 호스트에 : 없으면 https:// 로. (server.js:370 규칙과 동일하게)
  • server.js:692,702,714,759,770 — 배포되는 cowork-cli.sh의 http://$HOST:$PORT_NUM → 포트 없으면 https://$HOST(포트 제거).
  • public/index.html:199,202cowork.crowny.org:9720/clihttps://cowork.crowny.org/cli.
  • public/portal.html:370navigator.clipboard.writeText.catch(()=>document.execCommand('copy')) 폴백(HTTP/권한거부 silently 실패 방지).
런처 스크립트 생성 함수(generateLauncher/generatePs1/generateCmd)는 처음부터 if 호스트에 ':' 없으면 https 규칙을 내장한다(generateSetupPs1if ($H -match ":") 패턴 복제).

산출 파일(구현 시)

  • 신규 라우트: server.js/launcher·/launcher.ps1·/launcher.cmd·/api/launcher/manifest·/api/launcher/resolve 추가.
  • 동반 한선씨(헌법 70% 준수): 런처.한선(manifest/resolve 4상 결정 — 티=즉시매칭/옴=arch폴백탐색/타=미지원OS거부/음=등급부족 상급이관), 셀코어 룰로 OS·arch→패키지 매핑 규칙 누적.
  • tier.json 생성기 동반: 티어게이트.한선.

2부. 티어별 크라우니코드 기능·범위 정량분류

6등급 각각이 다운로드/업로드/한선씨 내장함수/라이브러리/슬래시스킬/패턴DB/컴파일·배포/동시작업에서 얼마를 갖는지 숫자로 고정한다. 이 표가 tier.json과 서버 게이팅의 단일 기준(SSOT) 이다.

내장함수 총 225개, stdlib 라이브러리 약 165개(pkg/libs), 패턴DB all_patterns.dat 약 39,574패턴 기준.

종합 표

항목일반(게스트, lvl9)티어4 (lvl4)티어3 (lvl3)티어2 (lvl2)티어1 (lvl1)슈퍼관리자 (lvl0)
접근 티어없음(카탈로그만)T4T3·T4T2~T4T1~T4(시크릿 제외)전체+시크릿 원본
다운로드 자원공유자원만(카탈로그·libs 소스 읽기)공유+T4 영역 패키지/번들+T3 영역+T2 영역+T1 영역(자기영역 자유)전체+시크릿 원본
업로드 권한불가(차단)T4 영역 업/커밋T3·T4T2~T4T1~T4 자유 업/다운전역(packages/ 배포)+계정관리
한선씨 내장함수50 (입력/출력/문자열/기초수학)90 (+배열/맵/파일)130 (+네트워크/소켓/버퍼)175 (+3진/셀/추적)225 (전체)225 (전체+시크릿/네이티브 트릿옵)
라이브러리 수~30 (읽기전용)60100140165 (전체)165 (전체+시크릿 설정)
슬래시스킬없음(문서 열람)한선씨한선씨+크라우니코드+KPS+분별 (4종 전체)전체+관리스킬(AYS집사 등)
패턴DB 접근없음없음(검색 API만)읽기(T3 번들에 agent+all_patterns.dat)읽기+검색읽기+검색+기여(학습추가)전체 읽기/쓰기/룰 진화
컴파일 권한불가(툴체인 미수령)로컬 컴파일로컬 컴파일로컬 컴파일로컬 컴파일로컬 컴파일
배포 권한없음T4 영역만T3·T4 영역T2~T4 영역T1~T4 영역전역 packages/ 배포
동시작업 한도1234612
세팅 번들불가(server.js:1128 게스트 403)받음(T4)받음(T3·T4)받음(T2~T4)받음(T1~T4)받음(전체+원본)
블록체인 커밋불가(server.js:1204)가능가능가능가능가능+승인권
싱크 모드완전싱크정기싱크선택싱크로컬보관(T1)+상위전체

내장함수 225개 배분(예시 — tier.json builtinsMax 근거)

등급누적 수추가되는 묶음
일반50출력값·입력·글자수·부분·포함·문자열변환·숫자변환·거듭제곱·루트·반올림 등 기초 I/O·문자열·수학
티어490+길이·추가·설정·정렬(배열), 맵생성·맵넣어·맵꺼내(맵), 읽기·쓰기·덧쓰기·파일존재(파일)
티어3130+TCP대기/수락/읽기/쓰기, 소켓생성/바인드/보내기/받기, 버퍼생성/쓰기/읽기/잘라(네트워크·버퍼)
티어2175+삼진인코딩/디코딩/덧셈, 셀생성/연결/읽기/설정, 추적시작/추적끝(3진·셀·디버그)
티어1225+나머지 전체(고급 수학·시스템·확장)
슈퍼225전체 + 시크릿 경로 함수 + 네이티브 트릿 연산(ISA729 489 opcode 직접)
게이팅 방식: 서버가 컴파일을 강제 제한하지는 않되(로컬 빌드는 자유), cowork 원격 컴파일/배포 API(/api/compile·upload dest:package)와 패턴 학습(/api/learn)에서 등급별로 builtinsMax 초과 함수·금지영역을 거부한다. 로컬 tier.json은 IDE/스킬이 자가 안내·경고에 사용.

등급 판정 코드 근거

  • 등급 모델: auth-tier.js:34 GRADES(0 슈퍼/1~4 티어/9 게스트), canAccessTier(N,t)= t>=N (:134), accessibleTiers (:140), canSecrets= N==0 (:143).
  • 게스트 차단 지점(전부 lvl9 또는 비슈퍼 검사): 세팅번들 server.js:1128, 커밋 :1204, 작업제출 :1358, 업로드 :1543, 태스크 :1428.
  • 슈퍼 전용(lvl0): 계정관리 :1087/1097/1105, 오너피드 :1272, 작업승인 :1404.

4상 결정으로 본 등급 처리(런처/게이트 공통 규칙)

요청이 들어오면 등급·자원으로 4상 판정한다(셀코어 룰로 누적):

  • 티(예스/즉시): 등급이 자원 티어 ≥ 요구, 내장함수 한도 내 → 바로 실행.
  • 옴(연구·검색 후 예스): arch 불일치 등 → 폴백 패키지 탐색 후 매칭되면 실행.
  • 타(노): 미지원 OS, 게스트 업로드 등 권한 밖 → 거부(401/403).
  • 음(상급 이관): 슈퍼 승인 필요 작업(전역 배포·계정생성) → 오너 피드로 이관.

잔여 이슈 / 다음 단계

  1. 선결 버그 4건 수정(portal.html·index.html http 하드코딩, cli.sh 포트, clipboard 폴백) — 런처 동작 전제. 수정 후 data/updates.json rev+1.
  2. 신규 라우트 5개 구현/launcher·/launcher.ps1·/launcher.cmd·/api/launcher/manifest·/api/launcher/resolve + 동반 런처.한선.
  3. tier.json 게이트 — 2부 표를 기계가 읽는 SSOT(예: data/tier-capability.psv)로 두고 서버 /api/compile·/api/learn·upload dest:package에서 강제. 동반 티어게이트.한선.
  4. 패키지 sha256 노출/api/packages·resolve 응답에 sha256 추가(현재 size·mtime만, server.js:1858).
  5. resolve용 arch 메타 — 패키지 파일명에 arch가 없으면(현재 mac/win만) arm64/x64 구분 추가 빌드 또는 universal 표기.
  6. 한선씨 비율: 신규 로직은 .한선 먼저(런처.한선/티어게이트.한선) — 현재 cowork 한선씨 비율 12.5%(헌법 70% 미달) 개선 겸.