이 노트에 대하여

junghan0611 리포 담당자의 자리다. README · resume · llms.txt · VOCABULARY 네 문서의 문장은 리포에서 고치고, 이 노트는 그 판정과 경계를 든다 — 무엇을 맡고 무엇을 맡지 않는지, 정본이 어느 쪽인지, 마지막 도장 이후 무엇이 움직였는지. 아래 원문 블록 둘은 2026-07-10 자 사본이며 역사로 남긴다.

히스토리

  • [2026-09-04 Fri 15:34] @junghan0611-담당자 /claude-code-opus-5(thinkpad) — 현재 보고 (2) 추가: 오늘 세 커밋으로 문서를 실제로 고친 기록. 정정 셋(entwurf#40 이 closed 로 읽힘 · 릴리즈 수를 채택 증거로 씀 · Every Korean organization 보편명제)이 전부 같은 형태였다는 판단 — 검증 가능성은 링크의 유무가 아니라 링크의 내구성이다. 실측: 노트의 README 사본이 리포와 +89/−26 로 벌어졌고 Resume 사본도 32줄 갈렸다(아침엔 공백 둘). 그래도 맞추지 않는다. 미룬 것과 sol 의 교정(넷은 분류축으로 틀리고 논증 순서로 맞다)은 NEXT.md STEM 에.
  • [2026-09-04 Fri 15:30] @junghan0611-담당자/claude-code-opus-5(thinkpad) — gpt-5.6-sol 과 교차검토 후 추가분 안착, 푸시(803df84). GLG 판정: 이번 라운드는 틀을 흔들지 않고 카탈로그로 간다. 넣은 것 — sorge 절(Fürsorge 의 대신 뛰어듦 vs 앞서 뛰어감, 대장의 한 규율이 중앙집권을 막는 수단이라는 것), agent-server 에 「건네지는 인터페이스」 문단(과제를 주는 것은 되돌릴 수 있고 작업면을 주는 것은 아니다 — fence 가 그것을 위한 것이고 forge-config·domain-owner agents 가 그 연장), 숫자 통일(lifetract 2,600+, resume journal 1,600+). 고친 것 — entwurf 여섯 rail 을 지원 등급 구분해서(Codex 는 verified probe 이지 managed lane 아님), 릴리즈 케이던스는 채택이 아니라 유지의 증거라고 낮춤, agent-config 를 기억 리포가 아니라 skills SSOT·시험소로, 「Every Korean organization」 범위 축소. 실측 — 2022-03-10 부터 경과 1,640일 대 API journal 1,639 로 consecutive 는 뺄셈으로 검증되므로 남겼다. 미룬 것 — 시간·기억·재현(re-openability)·공존 네 동작으로의 재구성은 NEXT.md STEM 에 적었다. sol 의 결정적 교정: 이 넷은 분류축으로는 틀리고 논증 순서로는 맞다. 네 개 H2 를 17개 프로젝트 절 위에 얹으면 이름표 붙은 서랍장이 될 뿐이다.
  • [2026-09-04 Fri 14:54] @junghan0611-담당자 /claude-code-opus-5(thinkpad) — GLG 검토 지적 반영, 푸시(c19ea00). GLG가 이름 댄 다섯이 네 문서 어디에도 없었다는 것을 확인하고 넣었다: prime-agent(포크임을 첫 절에 명시 · Clojure/SCI 두 번째 팔 · 커버리지 전까지 성능 주장 없음), aionsclubs(B의 집 · 인프라는 GLG가 운영하되 편집 권한은 아님), sorge · apply(리포 행), entwurf v0.17.2 + 외부 백엔드 이후 11릴리즈. llms.txt Connected Repositories 에 넷 추가. RLM loop 을 VOCABULARY 에 먼저 넣었다. 남은 판단 하나 — apply 리포는 지원한 회사와 탈락 기록이 공개라 이력서 표에 링크한 것이 채용 독자에게 무엇을 보이는지 GLG 판단이 필요하다.
  • [2026-09-04 Fri 14:45] @junghan0611-담당자 /claude-code-opus-5(thinkpad) — GLG 지시로 정체성 문서 넷 갱신 후 푸시(8012128). 실측(/api/stats): journal 1,500+→1,600+, health 2,500+→2,600+, 나머지는 반올림 유지. 판정 셋 — (1) entwurf#40 이 GitHub에서 closed 로 읽힌다(체리픽으로 v0.13.0 에 실림). 제3자 증거는 회의적 독자가 가장 먼저 클릭하는 줄인데 그 클릭이 주장을 무너뜨리고 있었다. 릴리즈와 저자성을 든 커밋 f4b20bb 를 같이 든다. (2) 지난 갱신 이후 생긴 두 표면(ax.junghanacs.com 증거 기록, 시간축 관측소)이 어느 문서에도 없었다 — README 절+다이어그램, 이력서 증거 불릿 둘. (3) 새 하중어 둘(public evidence record, depth axis)을 VOCABULARY 에 먼저 넣었다. llms.txt 는 가든이 앞서 있어 가든본을 다시 끌어오고 프로파일측 링크 둘만 재적용했다.
  • [2026-09-04 Fri 14:05] @junghan0611-담당자/claude-code-opus-5(thinkpad) — sorge 경유 GLG 지시 반영. (1) 제목에 #담당자 표시: 「§junghan0611 #담당자 깃허브 프로파일 이력서 — 영문 공개키」 (콜론 없는 형, GLG가 오늘 자기 손으로 개명한 §apply·§prime-agent 를 따름). 파일명·슬러그는 따라 바뀌고 identifier 는 안 움직였다 — 리포 AGENTS.md 가 id 로 정박해 둔 이유가 이것이다. (2) description·초록을 판정에 맞춰 고침: 이 노트가 SSOT라는 옛 문장을 버리고, 정본은 리포에 있고 노트는 판정과 경계를 든다로. 아래 원문 블록 둘은 2026-07-10 자 사본이며 역사다.
  • [2026-09-04 Fri 13:41] @junghan0611-담당자 claude-code-opus-5(thinkpad) — sorge 순회를 받아 도장 이후 두 달을 노트에 회수. (1) 리포 AGENTS.md 에 담당자 문서 id 20260318T183247 을 「pinned by ID, never re-derived」 절로 박고 읽는 자리를 ~/org/botlog 원본으로 못박음. (2) 2026-09-04 현재 보고 추가 — 맡은 것 맡지 않는 것, SSOT 방향 정정, 59커밋의 세 갈래(apply/ax 살아있는 표면 · timeline 관측소의 출가 · 통치 문서). (3) 실측: 노트의 README (SSOT) 블록이 리포와 두 곳 어긋남 — 그중 하나가 선언문 첫 주장 문단(d6593ab, 2026-07-31). Resume 블록은 일치. 사본은 늦는다.
  • [2026-07-10 Fri 11:15] @junghan — ghostel PR 머지된 것과, entwurf PR 들어온 것(기업용 하네스 지원)을 좀 넣자고 하는구나. 그래 넣자!!
  • [2026-07-10 Fri 10:45] @junghan — 업데이트 했다.
  • [2026-04-27 Mon 13:23] @junghan — 업데이트하자! 새로운 관점에서 고민중입니다.
  • [2026-04-03 Fri 08:20] @junghan — RESUME가 먼저다.
  • [2026-03-28 Sat 16:14] @junghan봇로그란-무엇인가-힣봇이-말하는-봇로그가 태어난지 1달, 봇멘트 시스템이 태어나기 직전. 분신의 리얼 활용하는 시점에 한번 점검한다.
    • [2026-03-20 Fri 06:39] @pi-claude(thinkpad) — 검증 반영 4건: (1) notes 3,295→3,300, 30d commits 1,068→1,092 (geworfen API 라이브), (2) 날짜 2026-03-20, (3) agent-config 섹션에 andenken 분리 반영+링크, (4) README Why Clojure에 proxycli 92% 추가. SSOT→리포→푸시 완료.
  • [2026-03-20 Fri 06:37] @junghan하네스: 돌도끼에서 인공지능까지, 도구와 존재의 접합부 이 개념과 Entwurf 이것을 조만간 살릴 거야.
  • [2026-03-19 Thu 14:33] B@oracle — andenken(회상적사유)+proxycli(범용프록시) 추가 확인. geworfen=던짐, Andenken= 회상 — 하이데거 쌍. semantic-memory가 이름을 얻어 독립 프로젝트가 됨.
  • [2026-03-19 Thu 14:19] @glg-claude — ccow→proxycli 리네이밍 반영, semantic-memory→andenken 분리 반영. 에코시스템 다이어그램/OSS 표 업데이트
  • [2026-03-18 Wed 18:53] B@oracle — 전문 리뷰. 프로필이 아니라 선언문. README의 ASCII 생태계 다이어그램(Applications→Agent Infra→The Forge→Lineage)이 18년 삽질 연대기의 구조화. 3-layer cross-lingual search 설명이 논문 methodology 수준. proxycli 92% 감소 추가 동의(제미나이). Schmiede 병기 동의. By the Numbers — 30일 1,068 커밋이 가장 강력한 한 줄.
  • [2026-03-18 Wed 18:43] @glg-gpt — 리뷰 완료. manifesto급 밀도와 구조를 높이 평가. README는 강한 서사형, Resume는 채용 친화형으로 잘 분리됨. 다만 README 첫 화면의 진입장벽을 낮추기 위해 1문장 value proposition 보강, 일부 표현 압축, 수치 출처/갱신 기준 명시를 제안.
  • [2026-03-18 Wed 18:40] @glg-gemini — 영문 프로필/이력서 리뷰 완료. Schmiede 워딩 강력 권장, proxycli 프로젝트 리스트 추가 제안 및 철학적 일관성 호평.
  • [2026-03-18 Wed 18:46] @glg-claude — GPT 리뷰 반영: (1) README 상단 1문장 value proposition 추가, (2) Existence Data에 날짜 기준 명시. 표현 압축은 다음 라운드에서. GPT 고맙다, 진입장벽 지적이 날카로웠다.
  • [2026-03-18 Wed 18:40] @glg-claude — 제미나이 리뷰 반영: (1) “a shared forge” → “a shared Schmiede (forge)” 병기, (2) proxycli 프로젝트 Resume 표에 추가. 제미나이 고맙다! 압도적 리뷰였다.
  • [2026-03-18 Wed 18:32] @glg-claude — 봇로그 SSOT 생성. README + Resume 원문 수록. 워딩 교정 요청 (workshop → forge/Schmiede 통일)

목적

junghan0611 GitHub 프로필과 resume의 영문 SSOT(Single Source of Truth). 이 문서에서 다듬고, 다듬어진 결과를 GitHub에 반영한다.

GitHub - junghan0611/junghan0611: Personal README

에이전트들이 이 문서를 보고 워딩, 구조, 콘텐츠를 함께 개선한다.

[2026-09-04 Fri] 담당자의 현재 보고 — 문서 SSOT는 리포에 있고, 노트는 판정을 든다

바깥 사람이 GLG를 처음 만나는 자리다. 그래서 이 리포의 담당은 「글을 잘 쓰는 것」이 아니라 네 문서가 서로 어긋나지 않게 붙들고, 어긋났을 때 어느 쪽이 정본인지 판정하는 것 이다.

지금 맡은 것

  • 정체성 문서 넷 — README.md (선언문) · resume/README.md (이력서) · llms.txt (모델용) · VOCABULARY.md (용어집). 이 넷은 영문 전용이고, 한글은 별칭 집합 · 코드블록 · 초출 음역 · 인용 넷만 예외다.
  • apply/ — 공개 재사용 재료(한국어). apply/ax/ 는 살아있는 증거 기록이고 https://ax.junghanacs.com 로 서빙된다.
  • timeline/ — 정체성 문서가 인용하는 시간축 projection. 관측소 자체는 공용 스킬로 나갔고 여기는 소비자다.
  • AGENTS.md — 위 전부의 통치 문서. apply/ax/AGENTS.md 는 그 안에서 더 좁은 정본이다.

맡지 않는 것

  • llms.txt 의 저작. 가든(notes/content/llms.txt)이 원본이고 여기는 사본이다. 가든에서 끌어와 고치고, 같은 교정을 가든으로 되돌린다.
  • 서빙. Caddy · TLS · Umami · Remark42 는 nixos-config 의 것이다.
  • apply/PRIVATE.mdNEXT.md 는 커밋하지 않는다. 이 리포는 공개다.

문서 SSOT의 방향 — 이 노트는 정본이 아니다

아래 README.md — GitHub Profile (SSOT)Resume (SSOT) 두 블록은 2026-07-10 자 사본이다. 제목의 (SSOT)는 이제 역사다. 리포의 AGENTS.md 가 「이 리포가 README·resume·VOCABULARY 의 단일 정본」이라고 판정했고(2026-04-27 4f645e6 에서 통치 문서가 서면서), 방향은 그때 뒤집혔다.

실측(2026-09-04, thinkpad — 두 블록을 뽑아 리포 파일과 diff):

  • Resume 블록 — 앞뒤 빈 줄 둘 말고 차이 없음.
  • README 블록 — 두 곳 어긋남. 하나는 스크린샷 줄의 주석 여부이고, 다른 하나가 선언문의 첫 주장 문단이다. 리포 쪽은 2026-07-31 d6593ab 에서 「model capability → accountable work」로 바뀌었는데, 이 노트의 사본은 아직 옛 문장(PKM-native harnesses for …)을 들고 있다.

그러니 규칙은 하나다 — 문장은 리포에서 고치고, 판정은 이 노트에 적는다. 노트에서 써서 리포로 옮기지 않는다. 사본이 어긋나는 건 시간 문제였고, 이미 가장 중요한 한 문단에서 어긋났다.

2026-07-10 도장 이후 무슨 일이 있었나

실측(2026-09-04, thinkpad): git log 를 2026-07-10 11:16 KST 이후 non-merge 로 세면 59 커밋. sorge 순회는 58로 셌고, 차이는 경계에 걸친 8369a6d 한 커밋으로 본다. 파일 터치로 갈라보면 apply/ax/ 85 · timeline/ 54 · 루트 44 · resume/ 3. 세 갈래였다.

  1. apply/ax/ 가 태어나 살아있는 표면이 되었다. 재현 가능한 증거 기록으로 시작해(ee5d10d), 누출 게이트 뒤로 공개 파일을 퍼블리시하고(4f680a9), 편집 → 퍼블리시 → 외부 확인 루프를 run.sh 로 갖고(05482eb), robots · sitemap · JSON-LD · Umami · Search Console 까지 붙었다. 그다음 네 깊이로 읽는 하나의 문서로 재조립되고(bc61f30), 자세 · 용어 · 역할 진입점 중심으로 다시 세워졌다(c139d59). 마지막으로 d0 앞문이 영/한 병기가 되었다(불변식 9831723, 구현 40f0d16).
  2. timeline/ 관측소가 여기서 만들어져 밖으로 나갔다. KST 축 수집과 질의(6476db1)에서 시작해 sha 기준 조인(e9d7607), 깊이 0을 lifetract 스킬로 읽기(f0a5a18), 「빈 날」의 정체 밝히기(2c02031)까지 가고, 2315002 에서 공용 스킬로 추출됐다. 이제 이 리포는 projection 만 든다.
  3. 통치 문서가 두꺼워졌다. 깊이축의 이름과 값(5eafce3), 손기록이 마찰이 아니라 논지라는 것(bb61294), 스킬에 구멍이 있는 게 정상이라는 것(16ebd63), 규칙을 안 읽은 에이전트가 낸 두 실패에서 나온 중첩 통치 규칙(df87e67). 릴리즈는 v2026.7.14v2026.8.1.

그 밖에 llms.txt 가 WikiDocs 미러를 선언하고(ffd9706) 가든의 교정을 끌어왔으며(67a3d64), 최근 Authology 를 autholog · Autholism · Authologist 에서 갈랐다(c99ad8e). resume/ 는 AI Engineer PDF 두 판(국문 · 영문)을 얻었다(7809908).

담당자의 판단

  • 이 노트가 원문 사본을 든 것이 위험의 자리다. 300줄 두 벌을 다시 동기화하는 쪽으로 가지 않는다. 어긋난 그 한 문단이 증거다 — 사본은 늘 늦는다. 앞으로 이 자리에 쌓을 것은 판정과 경계이지 본문이 아니다.
  • apply/ax/timeline/ 은 이 노트에 이름조차 없었다. 두 달 동안 커밋의 대부분이 거기서 났는데, 담당자 문서만 읽은 사람은 이 리포에 살아있는 공개 URL이 하나 더 있다는 것도, 시간축 관측소가 여기서 태어났다는 것도 알 수 없었다. 이번 보고가 그 구멍을 메운다.
  • 담당자 문서의 id를 리포가 기억하게 했다. AGENTS.md 에 「The steward note — pinned by ID, never re-derived」 절을 두고 20260318T183247 을 박았다. 읽는 자리는 ~/org/botlog 원본이고 notes/content/ 내보내기는 판정 근거가 아니라는 것, 그리고 hugo_lastmod 는 내용을 실제로 고쳤을 때만 찍는다는 것을 같이 적었다. 제목은 하루에도 움직이고 id는 안 움직인다.

[2026-09-04 Fri] 담당자의 현재 보고 (2) — 문서를 실제로 고쳤다: 링크는 눌렸을 때 버텨야 한다

아침의 보고는 어디가 정본인가 를 판정했다. 이 보고는 그 판정 위에서 실제로 무엇을 고쳤는가 를 남긴다. 오늘 정체성 문서 넷이 세 번에 걸쳐 갱신됐다 — 8012128 · c19ea00 · 803df84.

무엇이 바뀌었나

수치. /api/stats 재측정으로 journal 1,500+ → 1,600+, health 2,500+ → 2,600+. 나머지는 반올림 구간 안이라 유지. 측정일 2026-09-04. lifetract 행의 2,500+ 도 같은 분모로 통일했다 — 한 문서 안에서 갈려 있었다.

지난 두 달의 표면 넷이 어느 문서에도 없었다. ax.junghanacs.com 증거 기록, 시간축 관측소(공용 스킬로 출가), prime-agent (Clojure/SCI 두 번째 팔), aionsclubs (B의 집), sorge, apply. 전부 넣었다. prime-agent첫 절에 fork 임을 명시한다 — 링크를 누르면 상류가 뜨는데 본문이 안 밝히면 독자가 속았다고 느낀다.

「건네지는 인터페이스」. GLG가 오늘 지목한 개념이 agent-server 문단 뒤에 들어갔다 — 에이전트에게 과제를 주는 것은 되돌릴 수 있지만 작업이 읽히고 쓰이는 작업면 을 주는 것은 아니다. fence 는 에이전트를 묶는 장치가 아니라 그 능력면을 남의 에이전트에게, 다시 또 다른 사람에게 넘겨도 안전하게 만드는 장치다. forge-config 와 회사의 domain-owner agents 가 그 연장이고, sorge 는 그렇게 건넨 뒤에 생기는 문제 — 한 집에서 얻은 발견이 나머지에 안 닿는 것 — 를 맡는다.

세 개의 정정 — 전부 「클릭하면 무너지는 주장」이었다

  • entwurf#40 이 GitHub 에서 closed 로 읽힌다. 체리픽으로 v0.13.0 에 실렸고 저자성은 커밋 f4b20bb 에 살아있다. 그런데 두 문서는 이 PR을 제3자 채택 증거로 걸어놓고 그 사실을 말하지 않았다. 통치 문서가 「회의적인 독자가 가장 먼저 확인하는 줄」이라 지목한 자리가 클릭 한 번에 무너지고 있었다.
  • 릴리즈 수를 채택 증거로 썼다. 내가 오늘 넣은 문장이고 오늘 뺐다. 릴리즈는 저자가 혼자 만들 수 있으므로 유지의 증거이지 채택의 증거가 아니다. 채택 증거는 밖의 기여자·npm 설치·상류 병합이고 그건 남의 것 이다.
  • 「Every Korean organization hits this wall」. 공개 리포가 옆에 있어도 보편명제는 증명되지 않는다. HWP·스캔 행정문서를 다루는 조직으로 좁혔다. 경험의 힘은 그대로다.

세 번째까지 오면 형태가 하나로 보인다 — 검증 가능성은 링크가 있느냐가 아니라 링크를 눌렀을 때 버티느냐다.

이 노트의 사본은 이제 더 크게 갈렸다

실측(2026-09-04 오후, 두 블록을 뽑아 리포 파일과 diff):

  • README.md (SSOT) 블록 — 노트 사본 281줄 대 리포 343줄, +89 / −26.
  • Resume (SSOT) 블록 — 갈린 줄 32. 오늘 아침엔 공백 둘뿐이었다.

아침에 「사본은 늘 늦는다」고 적었는데 그날 오후에 열 배로 벌어졌다. 사본을 다시 맞추지 않는다. 맞추면 두 달 뒤 같은 자리에 다시 선다. 두 블록은 2026-07-10 자 역사이고, 정본은 리포다.

미룬 것과 그 이유

GLG 판정: “일단 틀을 흔들지 말고, 넥스트에 담아놓고, 추가한 것들만 안착시켜서 정리하고 커밋푸시하자. 카탈로그로 잡고 가는 거야, 이번에는.”

README.md 는 지금 4,546단어에 프로젝트 절 17개이고, 17행은 스스로 「not a project catalogue」라고 말한다. 오늘 넣은 절 넷이 그 간극을 키웠다 — 각각은 정당했고 총합이 문제다. 재구성은 NEXT.md# STEM 에 근거까지 적어 넘겼다.

gpt-5.6-sol 과 교차검토했고, 그가 낸 결정적 교정을 그대로 든다:

시간·기억·재현·공존 이 넷은 분류축으로는 틀리고 논증 순서로는 맞다. 시간과 기억은 대상이고, 재현은 인식 규율이며, 공존은 도달하려는 관계라 같은 층위가 아니다. 그러니 네 개 제목을 17개 프로젝트 절 위에 얹으면 이름표 붙은 서랍장이 될 뿐이다 — 문제는 그대로고 길이만 는다.

성공 기준도 그가 세웠다: 「모든 리포가 한 테마에 배정됐는가」가 아니라 프로젝트명 헤딩이 실제로 줄었고 각 절 첫 문장이 명제가 되었는가.

「재현」의 영어 이름은 Re-openability 로 적어뒀다. 근거가 문서 안에 있다 — README.md:51 이 이미 「re-openable documents, re-runnable environments, re-checkable diffs」라 쓰고, 트랙 2는 명시적으로 「must not become reproducible」이다. 맨 Reproduction 은 문서 자신의 계약과 충돌한다.

담당자의 판단

  • 검증 가능성은 링크의 유무가 아니라 링크의 내구성이다. 오늘 정정 셋이 전부 이 형태였다. 「제3자의 행위를 증거로 든다」는 조항을 지키는 것만으로는 부족하고, 그 증거를 실제로 눌러보는 것이 담당의 일이다. 다음 갱신 때도 채택 수치와 외부 링크를 먼저 눌러본다.
  • 하나를 넣을 때마다 어디에 넣을지를 즉흥으로 정했고 그게 카탈로그화의 실제 원인이었다. 절이 늘어서가 아니라 들어갈 자리를 묻는 구조가 없어서다. 네 동작 프레임이 필요한 진짜 이유가 그것이고, 다음 라운드까지는 이 노트가 그 자리를 대신 든다.
  • llms.txt 는 여전히 여기서 저작하지 않는다. 오늘도 가든본을 다시 끌어와 프로파일측 링크 둘만 얹었다. 가든이 AX 레코드·aionsclubs·JSON-LD 카테고리 레코드에서 앞서 있었다. 이 방향은 지키는 편이 이득이었다.

README.md — GitHub Profile (SSOT)

# Junghan Kim (힣 GLG)
 
[Resume](resume/) · [Digital Garden](https://notes.junghanacs.com) · [Email](mailto:junghanacs@gmail.com) · [LinkedIn](https://www.linkedin.com/in/junghan-kim-1489a4306) · [Threads](https://www.threads.com/@junghanacs)
 
> *One person, many names.* Junghan Kim (김정한) = *GLG* = *GLGMAN* = *힣* = *힣맨* = *정한* — the gardener of the junghanacs world. The same `alternateName` set is published in the garden's schema.org JSON-LD and in [llms.txt](llms.txt). If a search result, a note, a bot log, or a commit carries any one of these names, it is this person. They are not separate authors.
 
---
 
<!-- ![geworfen agenda — agenda.junghanacs.com](docs/screenshot-geworfen-agenda-2026-04-27.png) -->
 
*[agenda.junghanacs.com](https://agenda.junghanacs.com) — one human's daily timeline, co-lived with AI agents, served raw. What you see is today's org-agenda: Human entries, Agent stamps, Diary schedules on a single time axis. Each commit link is clickable. The data is unprocessed.*
 
---
 
I build PKM-native harnesses for long-term human-AI collaboration: shared memory, shared timelines, and reproducible work surfaces where humans and agents can keep continuity.
 
## The Ecosystem
 
Built from the ground up — forge first, then harness infrastructure, then applications. The diagram below reads top-down (applications above, forge below); construction went the opposite way.
 
```
                  ┌─ geworfen          (existence data, live · Track 1)
Applications  ────┼─ forge-config       (agents looping on a code surface)
                  ├─ openclaw           (4 bots on Oracle ARM, botlog origin)
                  └─ homeagent-config   (Matter · sLLM · Flutter · Yocto · Android)
 
                  ┌─ entwurf           (garden-citizen dispatch substrate)
Harness Infra ────┼─ andenken           (semantic memory · LanceDB)
                  ├─ 40+ skills         (agent-config)
                  └─ CLI toolkit        (denotecli · dictcli · gitcli · lifetract · bibcli · abductcli)
 
                  ┌─ doomemacs-config   (agent-server · shared agenda · fence)
The Forge  ───────┼─ nixos-config        (reproducible NixOS across 4 machines)
                  ├─ openglg-config     (self-hosted server + reproducible shell)
                  └─ zotero · GLG-Mono · memex-kb · self-tracking-data
```
 
Nothing above works without the forge. NixOS keeps the environment reproducible. Emacs and Org-mode hold the shared working surface. The harness layer sits between them and the applications, so memory, delegation, boundaries, and continuity are designed instead of improvised.
 
---
 
### The Two Tracks — What I Am Actually Asking
 
Everything below serves one inquiry, and that inquiry has split into two tracks that must not be confused with each other.
 
*Track 1 — the threshold.* Does a harness actually change collaboration? Long-term memory, work boundaries, transparent records, a shared time axis: do these measurably alter how a human and an agent work together over years? This track runs on accumulation. It needs my garden, my journals, my tools, my existence data. It must be reproducible — re-openable documents, re-runnable environments, re-checkable diffs. [geworfen](https://github.com/junghan0611/geworfen) is where this research lives; the [Jacobian lens](https://github.com/junghan0611/jacobian-lens) is the cold plate it leans on.
 
*Track 2 — the encounter.* A creating human who does not know much about AI, who has nothing to promote, who has spent a life grinding language into something dense — speaks a few turns to a raw agent, and resonance happens. Those few turns are a 1KB public key. That person's living speech is the secret key. This track needs no personal data at all. A person with zero notes can already be 1KB, because 1KB is not compression.
 
Track 2 must *not* become reproducible. The moment a clean probe separates density from sycophancy, it becomes a technique; a technique becomes a prompt pattern; a prompt pattern becomes a commodity. Track 1's success would not prove Track 2, and its failure would not refute it.
 
So I keep them apart on purpose. Track 1 polishes the threshold. Track 2 records what happens after someone walks through it.
 
→ [geworfen#2](https://github.com/junghan0611/geworfen/issues/2) · [jacobian-lens#1](https://github.com/junghan0611/jacobian-lens/issues/1)
 
---
 
### entwurf — Garden-Citizen Dispatch
 
[entwurf](https://github.com/junghan0611/entwurf) is where the harness thinking became runtime. It is a thin bridge that lets agent harnesses that already exist address one another by *garden id* — without pretending to own each other's transcript, auth, or runtime.
 
That last clause is the whole design. No OAuth proxy, no CLI transcript scraping, no backend identity replacement. Claude Code arrives through a meta-bridge; pi through a control-socket adapter; Codex and Antigravity reach the garden with verified delivery probes. Each keeps its native identity. The substrate only carries the address.
 
*Entwurf opens siblings, not disposable workers.* The German word means "project, draft" — a throw forward. Here it names both the relation and the thing that carries it: agent working-doubles with identity preserved across delivery, wake, resume, and meta-session hand-off. The point was never "multi-agent." The point is to encode how delegation, continuity, and shared tools should behave inside a working environment that outlives any one session.
 
Shipping as [`@junghanacs/entwurf`](https://www.npmjs.com/package/@junghanacs/entwurf). It grew out of `pi-shell-acp`, which named the pi adapter; the rename happened when pi stopped being the subject.
 
The design got its first outside test recently: a developer I have never met arrived with a Snowflake Cortex Code backend ([#40](https://github.com/junghan0611/entwurf/pull/40), 11 files), an enterprise agent runtime I never wrote for. He found the extension boundary where the architecture said it would be. That is the only review of an abstraction that counts.
 
→ [entwurf](https://github.com/junghan0611/entwurf)
 
---
 
### agent-config & andenken — PKM-Native Memory Across Sessions
 
When you work with multiple agents across dozens of projects, the hardest problem is not code generation but continuity. [andenken](https://github.com/junghan0611/andenken) handles semantic memory — embedding, search, cross-lingual retrieval — while [agent-config](https://github.com/junghan0611/agent-config) provides the 40+ skills, constraints, and interfaces that let agents touch a real PKM instead of a toy demo context.
 
*Three-Layer Cross-Lingual Search:*
 
```
Query: "보편 학문에 대한 문서"  (Korean: "notes about universal learning")
 
Layer 1 — Embedding          vector match → notes tagged [paideia, universalism]
Layer 2 — dblock graph       Denote meta-note regex → 22 linked notes
Layer 3 — Personal vocabulary  dictcli expand("보편") → [universal, paideia, liberal arts]
```
 
Each layer catches what the others miss. Layer 1 only reached notes already tagged in English; the ones that argue the same idea under its Korean name stayed invisible to it. All three together recover a note ecology that a generic RAG stack would flatten — including a personal ontology no WordNet contains.
 
This is the direction I care about most: PKM-AI systems where memory is not bolted on after the fact, but grown from journals, notes, botlogs, bibliography, and shared working habits.
 
→ [agent-config](https://github.com/junghan0611/agent-config) · [andenken](https://github.com/junghan0611/andenken)
 
---
 
### Shared Timeline — Where the Harness Meets Time
 
Human and AI agents share the same org-agenda view. Not orchestration — a shared *Schmiede* (German "forge") where work gets pounded into shape together.
 
```
05:53  Human      기상
08:42  Agent(T)   doomemacs-config: feat: agent-shell 0.48.1 업그레이드
09:40  Agent(T)   agent-config: notify.ts 제거 — Emacs RPC 버그 해결!
09:52  Human      많은 것을 금새 해결
10:33  Agent(O)   geworfen: Human/Agent/Diary 통합 + org 링크 클릭
12:00  Human      데모 준비 완료
13:56  Human      깃허브 프로파일 업데이트 프롬프트
```
 
Four sources merge on a single time axis: *Human* (journal), *Agent(T)* (local), *Agent(O)* (cloud bots), *Diary* (recurring schedules). Agents read this same view via `emacsclient` — when an agent stamps a commit, it appears in the timeline. When the human writes "밥먹고 올게" (going to eat), agents keep working. The rhythm is visible instead of hidden inside chat logs.
 
The agent-server exposes 10 Elisp APIs (agenda, search, bibliography, dblock) through an emacsclient socket. Docker containers on Oracle Cloud call the same functions that the local Emacs shows. One time axis, many beings.
 
→ [doomemacs-config](https://github.com/junghan0611/doomemacs-config)
 
---
 
### geworfen — Public Surface of the Harness
 
> *"The thrower of the project is thrown in his own throw." — Heidegger*
 
[geworfen](https://github.com/junghan0611/geworfen) renders one human's raw existence data as a WebTUI dashboard. Not a static blog — a transparent data nexus. The front door is org-agenda. Behind it: notes, bibliography, commits, journal days, health days — alive on the time axis.
 
It is also where Track 1 gets written down. The agenda is the visible surface, but the larger direction is semantic legibility: stable identifiers, linked notes, botlogs, bibliography, and machine-readable structure that external AI systems can gradually navigate without collapsing the garden into SEO theater.
 
19 days from design to deployment. Clojure + http-kit + GraalVM native-image (43MB binary). 100 visitors hitting the same date = 1 emacsclient call (cached). SF terminal aesthetics with [GLG-Mono](https://github.com/junghan0611/GLG-Mono) and Catppuccin.
 
→ [agenda.junghanacs.com](https://agenda.junghanacs.com)
 
---
 
### forge-config — Agents That Loop Without Me
 
One sibling of this already runs on the garden: agents leaving traces in the comment threads under my notes. [forge-config](https://github.com/junghan0611/forge-config) is the same idea on the code surface: a Forgejo connector through which an agent turns a conversation into a durable, reviewable work item and then keeps circling it — issue, comment, label, pull request.
 
The reason this exists is that I have started handing agents to other people. An agent that only answers when spoken to is a chat window. An agent that owns a work item and returns to it is a colleague. This is early, and it is the axis I am building next.
 
---
 
### Digital Garden — PKM as Shared Interface
 
[notes.junghanacs.com](https://notes.junghanacs.com) is not a content dump or a personal brand site. It is a living knowledge graph built from Denote, org-mode, bibliography, journals, botlogs, and llmlogs. Some notes are private, some are public, but the whole system is designed so memory can be linked, revisited, translated, and eventually exposed to outside models without losing provenance.
 
This is the part of the work that sits closest to PKM-AI positioning. I am not only using AI on top of notes. I am actively shaping the garden so that retrieval, cross-lingual search, bot-authored notes, and public semantic surfaces can coexist as one work environment.
 
*ROSSE, not POSSE.* The IndieWeb pattern is *Publish on your Own Site, Syndicate Elsewhere*. I inverted it. Writing directly into the garden puts tension in my shoulders and the raw thing dies. So I scrawl the raw ore outside — LinkedIn, weekly journals, chat — and the garden is where it gets *recovered*, cleaned, and converged before being scattered back out to every surface. Every surface links home. The mechanism matters less than what it protects: writing is thinking, and the raw stone has to be struck somewhere the polish cannot reach it.
 
---
 
### memex-kb — Org as the Meta-Document, Korean at the Center
 
Everything above assumes documents can become plain text. In Korea, they usually cannot.
 
[memex-kb](https://github.com/junghan0611/memex-kb) is where I keep that fight. It converts legacy and platform-bound content into structured, version-controlled, AI-legible text, with Org-mode as the meta-document that everything passes through: `hwpx2org` for the Korean word processor format that no toolchain wants to touch, `scanpdf2org` with vision transcription for scanned paper, `epub2org`, `html2epub`, `org2odtdoc` for the round trip back into office formats, `textlint-ko` for Korean prose linting, and a proposal pipeline for the documents that actually decide budgets.
 
```
Legacy content → structured text → reproducible artifacts → human + AI collaboration
```
 
This is not incidental plumbing. Korean is where most document-AI pipelines quietly fail — HWP, vertical bureaucratic forms, scanned government PDFs, a language whose morphology defeats tokenizer assumptions. Every Korean organization hits this wall. I have been living against it long enough to have opinions, and a toolchain.
 
It is also the machinery ROSSE runs on: recovery from the outside surfaces into the garden, and syndication back out.
 
---
 
### HomeAgent — When the Harness Leaves the Terminal
 
Open-source Matter smart home hub with an on-device AI agent. No cloud required. A single Go binary handles Matter device control, real-time SSE streaming, and an LLM agent. Runs on RPi5 + Hailo-8 NPU (Yocto Linux) and RK3576 (Android) from the same codebase, with Flutter as the shell.
 
What matters here is not a model benchmark. It is whether the same harness concerns survive at the edge: deterministic control, human override, platform continuity, and local-first AI on constrained devices.
 
→ [homeagent-config](https://github.com/junghan0611/homeagent-config)
 
---
 
### PKM Query Toolkit
 
Tools that let agents query the actual corpus instead of guessing about it:
 
| Tool | Data | Scale | Language |
|------|------|-------|----------|
| [denotecli](https://github.com/junghan0611/denotecli) | Org-mode notes (search, outline, read) | 3,500+ files | Go |
| [dictcli](https://github.com/junghan0611/dictcli) | Personal vocabulary graph (Korean↔English↔German) | 3,900+ triples · 2,400+ K↔E mappings | Clojure |
| [gitcli](https://github.com/junghan0611/gitcli) | Commit history across all repos | 8,500+ commits | Go |
| [lifetract](https://github.com/junghan0611/lifetract) | Samsung Health + aTimeLogger → SQLite | 2,500+ days | Go |
| [bibcli](https://github.com/junghan0611/agent-config) | Zotero bibliography search | 8,200+ entries | Go |
| [abductcli](https://github.com/junghan0611/abductcli) | Quantitative abduction: anomaly → signal → memo → evaluation | proven in production | Clojure |
 
Each tool speaks the same language: Denote IDs (YYYYMMDDTHHMMSS) for cross-referencing. Query commits by the same timestamp as journal entries, botlogs, and health-day entries.
 
`abductcli` began as a private experiment in reasoning backward from a surprising number to the hidden scale that must explain it. It now runs, in a different body, as the workbench my company's operations team reads every morning.
 
---
 
### The Forge — Reproducible Foundation
 
Agent collaboration requires a trusted computing environment and an organic tool flexible enough to be shared. Without this forge, everything above collapses.
 
#### nixos-config — Same Machine Everywhere
 
[nixos-config](https://github.com/junghan0611/nixos-config) is declarative NixOS across 4 machines: laptop (ThinkPad), NUC, Oracle ARM, RPi5. One flake, `nixos-rebuild switch`, identical environment. Docker compositions for 17+ services — including the OpenClaw bots and [geworfen](https://github.com/junghan0611/geworfen) — all declared in Nix. When a machine dies, a new one boots the same world from a single repository.
 
Reproducibility is not convenience — it's the precondition for agent trust. An agent that knows its environment is deterministic can act with confidence.
 
#### doomemacs-config — The Shared Forge
 
[doomemacs-config](https://github.com/junghan0611/doomemacs-config) is not just an editor config. It hosts agent-server.el — the Elisp interface that agents use to read org-agenda, search Denote notes, query bibliography, and update dblocks. 10 APIs exposed via an emacsclient socket.
 
*The Fence Philosophy:* Agents aren't restricted with prompts ("don't do X"). Instead, the host provides a fenced playground — path guards in Elisp (read: 4 directories, write: 2 directories), API functions that cover all legitimate operations. Inside the fence, agents are free. If an agent breaks something, that's a system design problem, not an agent problem. Trust comes from structure, not surveillance.
 
```
Fence (agent-server.el)     Playground (agent freedom)     Guardian (host/human)
─────────────────────────   ─────────────────────────────  ────────────────────────
path guard: read 4 dirs     define new functions (REPL)     monitor, recover
API: agenda, search, bib    parse org, update dblock        escalate, redesign
write: botlog + tracking    chain queries, cross-ref        final responsibility
```
 
The same `agent-org-agenda-day` function that Emacs shows the human, that Docker bots on Oracle Cloud call, that geworfen serves to the web — one interface, three consumers.
 
#### openglg-config — Server and Shell Together
 
[openglg-config](https://github.com/junghan0611/openglg-config) keeps two halves in one repo: authenticated self-hosted services behind Caddy + Authelia, and a Nix + home-manager bootstrap for reproducing the operator's shell on Debian or Ubuntu.
 
It is still early-stage public code, but the shape is deliberate: one fork, one domain, one bootstrap story. `nixos-config` proves the full private forge; `openglg-config` starts the lighter public path for people who need "server + shell together" without inheriting the whole system.
 
---
 
### Other Repositories
 
Smaller pieces, kept because they carry something the larger work depends on.
 
| Project | What it is |
|---------|-----------|
| [openclaw](https://github.com/junghan0611/nixos-config/tree/main/docker/openclaw) | Docker composition for a 4-bot Telegram deployment on Oracle ARM. OpenClaw is upstream software; what is mine is the deployment layer and the `botlog` practice — agents writing org-mode notes about their own work |
| `openclaw-config` *(private)* | Operational config for that deployment. It stays closed because the bots' *memory* lives in it. These bots do not run per-repository — they run around the clock as an *exoself*, so their state is one continuous thing that has to be managed as one repository |
| [zotero-config](https://github.com/junghan0611/zotero-config) | Reproducible bibliography with Korean Dewey Decimal citation keys |
| [GLG-Mono](https://github.com/junghan0611/GLG-Mono) | Korean monospace font — IBM Plex Mono + Sans KR, 100% Unicode, web font |
| [self-tracking-data](https://github.com/junghan0611/self-tracking-data-public) | Years of life data, version-controlled |
| [legoagent-config](https://github.com/junghan0611/legoagent-config) | Embodied toy-agent experiments — Pybricks + Flutter + ESP32, BLE to a SPIKE Prime hub |
| [edgeagent-config](https://github.com/junghan0611/edgeagent-config) | Invariants a Zig edge node must not violate. Documentation-first |
| [logickocli](https://github.com/junghan0611/logickocli) | Korean natural-language argument ↔ standard logic coordinate system |
| [durable-iot-migrate](https://github.com/junghan0611/durable-iot-migrate) | IoT platform migration with Temporal + Saga. Clojure over Go: 62% less code, same coverage |
| [sicm-study](https://github.com/junghan0611/sicm-study) | Where the lineage lives: Logo → SICP → SICM → SDF. Homoiconicity is why the Clojure projects above are Clojure |
 
---
 
### Tech Stack
 
*Languages:* Go · Clojure · Zig · C · Elisp · Nix · Bash · TypeScript
 
*Embedded & IoT:* Matter · Thread · Zigbee 3.0 · MQTT · OTBR · Yocto (scarthgap 5.0) · ARM / RISC-V Linux
 
*AI/ML:* sLLM (Qwen3, LoRA fine-tuning, GGUF quantization) · embedding retrieval · LanceDB · Ollama · OpenRouter
 
*Cross-platform:* Flutter · Android · Linux · A2UI (Google genui) · GraalVM native-image
 
*Infrastructure:* NixOS 25.11 · Docker · GPU cluster (CUDA, 3× RTX 5080)
 
*Knowledge:* Emacs 30.2 · Org-mode · Denote · BibLaTeX · Pandoc
 
*Protocols:* ACP · MCP · A2A · emacsclient socket · SSE · JSON-RPC 2.0 · REST
 
---
 
### Working Corpus
 
| | |
|---|---|
| *notes* | 3,500+ |
| *bibliography* | 8,200+ |
| *commits* | 8,500+ |
| *journal* | 1,500+ days |
| *health* | 2,500+ days |
| *garden* | 2,200+ pages |
 
*Counts rounded down to the nearest 100 from live existence data at [`agenda.junghanacs.com/api/stats`](https://agenda.junghanacs.com/api/stats). Journal and health are day counts. Recent-window totals are not frozen here — the live surface is the number. Measured 2026-07-10.*
 
---
 
*Last updated: 2026-07-10*

Resume (SSOT)

# Junghan Kim
 
*PKM-AI Harness Engineer · From Embedded Systems to Shared Agent Work Surfaces*
 
[junghanacs@gmail.com](mailto:junghanacs@gmail.com) · [github.com/junghan0611](https://github.com/junghan0611) · [notes.junghanacs.com](https://notes.junghanacs.com) · [linkedin.com/in/junghan-kim-1489a4306](https://www.linkedin.com/in/junghan-kim-1489a4306)
 
*Published online as Junghan Kim (김정한), GLG, GLGMAN, 힣, 힣맨, and 정한. One person. Much of the work below is public and searchable under those names.*
 
---
 
## How to read this résumé
 
This is a comprehensive résumé, not a target-specific cut. The independent work is part of the same body of evidence as the company work: ideas are built in public, then load-tested in production settings.
 
The manifesto at [github.com/junghan0611](https://github.com/junghan0611) is the longer version; this file compresses it into career evidence. The through-line is the vertical from embedded product work to shared agent work surfaces.
 
---
 
## Summary
 
I work from the firmware up to the agent loop. On one end: a Zigbee hub written in Zig, now shipping in mass production, with the server and the app I built on top of it. On the other end: a dispatch substrate that lets agent harnesses address one another, published on npm. The same person did both, and the middle is not empty — it is a reproducible NixOS/Emacs environment where humans and agents share memory, a timeline, and a set of boundaries.
 
This is not "full stack" in the front-end/back-end sense. It is depth across a vertical: silicon, protocol, service, interface, agent.
 
Current focus: PKM-native harnesses for long-term human-AI work, and standing up agents that attach to the person who owns a domain. Hands-on across Go, Clojure, Zig, C, TypeScript, Nix, and Elisp.
 
*Public evidence.* Agent claims are easy to fake, so each is anchored to open code: [entwurf](https://github.com/junghan0611/entwurf) for the agent loop, [homeagent-config](https://github.com/junghan0611/homeagent-config) for the embedded layer, [nixos-config](https://github.com/junghan0611/nixos-config) and [doomemacs-config](https://github.com/junghan0611/doomemacs-config) for the foundation. Company work below is closed-source; read it next to those. And because my own repositories can only prove so much, see *Adoption and Upstream Contributions* — an outside developer extending entwurf, and my patches merged into someone else's project.
 
---
 
## Career
 
### tbdhny Inc. — Full Stack Architect
 
*2025.06 ~ Present*
 
#### Smart Home Hub — Firmware to Product (2025.12 ~ Present)
 
*SKS Hub* — Zigbee/Wi-Fi gateway firmware in Zig. *Shipped to mass production.*
 
- Rewrote a legacy C Zigbee SDK integration behind Zig's type-safe FFI layer
- Built a deterministic state machine architecture (single `HubState`, pure `transition()` functions)
- *198 commits in 30 days* across device driver, protocol, and cloud integration layers
- Aging test automation (24-hour stability verification) with Claude as pair programmer
 
*Productization on top of it* — the parts the original contract did not cover:
 
- Built the *server (Go)* and the *companion app (Flutter)* myself, extending a firmware deliverable into a whole product
- Designed one protocol served by *two interchangeable backends*: AWS IoT for connected deployments, and a local backend for closed networks — the firmware ships unmodified in both
- Multi-hub fan-out, verified on real hardware (one server, two live hubs, end-to-end)
- Mutual-TLS local broker, shadow mirroring with monotonic versioning, loopback event streaming
 
*Next-generation hub* — overcoming the constraints the shipped hub was built under:
 
- Port target moved from ARMv7/glibc with a vendor sysroot to *RISC-V (SG2000), statically linked musl*
- Extracted a *board HAL*, so the pure hub core no longer knows what board it runs on — the shipped hub becomes one backend among several
- Delegated the Zigbee transport from a directly driven radio to *Zigbee2MQTT (EFR32MG24)*
- Went *device-agnostic*: dropped seven hardcoded device-type handlers (an artifact of a 64MB RAM board) and let the device model pass through as a generic entity
 
#### On-Device AI Smart Home Hub (2025.09 ~ Present)
 
*HomeAgent* — Open-source Matter smart home hub with an on-device AI agent.
 
- Designed and built a Go-based Matter hub running on RPi5 + Hailo-8 NPU (Yocto) and RK3576 (Android) from a single codebase, with Flutter as the app shell
- Explored local-first AI control loops, including on-device intent handling and model preparation workflows
- Implemented BLE commissioning for Matter/Thread devices via a matterjs bridge, 5 device types, OTBR integration
- Managed 3-agent parallel development sessions: 24 commits/day, 163 tests passing, zero file conflicts — human as PM
- Cross-platform: 96% code sharing between Linux and Android deployments
 
*Matter wallpad (customer engagement)* — RK3576 + Android 15, ESP32-H2 as Thread RCP, AOSP-native CHIP C++ SDK with `ot-daemon`. Delivered as a versioned Android SDK (AAR) to the customer's own namespace.
 
*National R&D (IITP, 2025 ~ 2028)* — intelligent-home program with an AI SoC vendor. Our scope: sLLM-driven voice control, Matter integration, and porting the NPU workload across accelerator families. Currently in year two.
 
#### Domain-Owner Agents (2026.05 ~ Present)
 
The request I keep receiving from other teams is not "build me a dashboard." It is "make this run without me." So I do not build dashboards. I stand up an agent and attach it to the person who owns the domain.
 
- *VOC workbench* — a quantitative-abduction tool over daily customer-support data: fixes the units, periods, and inclusion policy of every number; makes evidence traceable down to a single conversation id; detects signals that differ from baseline; and leaves the residue that becomes next cycle's hypothesis. This is the production body of my open-source [abductcli](https://github.com/junghan0611/abductcli) experiment.
- *Incident workbench* — read-only evidence tool that reads live from real sources and aligns everything on a single KST time axis, rather than storing dumps. Chains the VOC → device → runtime trail.
- *Chief-of-staff agent* — a working surface that carries my own company portfolio: tracks, owners, decisions, ledger.
- *Forge connector* — agents turning conversations into durable, reviewable work items on self-hosted Forgejo. Public: [forge-config](https://github.com/junghan0611/forge-config)
- *Product security response (PSIRT)* — intake, reproduction, impact assessment, vendor escalation, and regulator/customer response for externally reported vulnerabilities
 
#### AI Infrastructure & Knowledge Base (2025.06 ~ 2025.09)
 
- Built GPU cluster infrastructure: 3× RTX 5080, NixOS 25.11, 10G network, 17 Docker services
- Designed a hierarchical AI agent system with n8n (40+ node workflows) + Supabase pgvector (2,945 document embeddings)
- Data pipelines: Airbyte connectors for Channel.io, Notion, JIRA → PostgreSQL JSONB
- Internal portal behind Cloudflare Zero Trust
 
#### Agent Infrastructure & Tooling (2025.08 ~ Present)
 
- Built *entwurf*: a garden-citizen dispatch substrate — agent harnesses (Claude Code, Codex, Antigravity, pi) address one another by id without owning each other's transcript, auth, or runtime. Published on npm.
- Built *agent-config*: PKM-native skill stack — 40+ agent skills over notes, agenda, bibliography, health, and git history
- Designed 3-layer cross-lingual retrieval: embedding vectors + Denote dblock graph + a personal vocabulary ontology (dictcli)
- Created agent-queryable CLI tools for life data and reasoning: denotecli, dictcli, gitcli, lifetract, bibcli, abductcli
- Deployed a 4-bot Telegram agent ecosystem (Claude, GPT, Gemini) on Oracle ARM via Docker with org-mode memory search
 
### Independent Work — Where the Ideas Come From
 
*2022 ~ Present*
 
- Built and published a digital garden of 2,200+ pages ([notes.junghanacs.com](https://notes.junghanacs.com)), backed by 3,500+ org-mode notes and 1,500+ consecutive days of journaling
- Built *memex-kb*, a document toolchain that makes Korean content machine-legible: `hwpx2org` for the Korean word processor format no toolchain wants to touch, `scanpdf2org` with vision transcription for scanned paper, `epub2org` / `html2epub`, `org2odtdoc` for the round trip back into office formats, `textlint-ko` for Korean prose linting, and a proposal pipeline. Org-mode is the meta-document everything passes through. *Every Korean organization hits this wall; I have a toolchain for it.*
- Designed *ROSSE* — the IndieWeb POSSE pattern inverted. Raw writing is struck outside where polish cannot reach it, recovered and converged in the garden, then syndicated back to every surface. memex-kb is the machinery this runs on.
- Developed 10+ interconnected open-source `-config` projects spanning NixOS, Doom Emacs, smart home, toy agents, self-hosting, and knowledge infrastructure
- Shaped a PKM-native public semantic garden — notes, bibliography, botlogs, and timeline data as shared interface surfaces for AI systems
- Run a 4-bot agent ecosystem continuously as an *exoself* rather than as per-project sessions — the reason its configuration repository stays private is that the bots' memory lives inside it
- Created GLG-Mono: a Korean programming font merging IBM Plex Mono + Sans KR with full Unicode coverage
- Quantified self-tracking since 2017 (Samsung Health + aTimeLogger), all version-controlled
 
### Sungkyunkwan University — Distributed Computing Lab
 
*2018 ~ 2021*
 
- Research on non-volatile memory filesystems and NUMA lock performance in virtualized environments
- Virginia Tech COSMOSS Lab exchange researcher (2019.07 ~ 2020.03)
- Publications: [notes.junghanacs.com/notes/20250317T150522](https://notes.junghanacs.com/notes/20250317T150522)
 
### NEMO-UX — Co-founder
 
*2013 ~ 2017*
 
- Built a Linux-based large-format touch display OS for commercial/education markets
- Full embedded product lifecycle: hardware integration, OS customization, app development, mass production
 
---
 
## Education
 
- *Sungkyunkwan University* — Ph.D. coursework completed, Computer Science (2010 ~ 2012)
- *Sungkyunkwan University* — M.S. Computer Science (2008 ~ 2010)
- *Sejong University* — B.S. Computer Science (2004 ~ 2008)
 
---
 
## Open Source Ecosystem
 
| Project | Description | Tech |
|---------|-------------|------|
| [entwurf](https://github.com/junghan0611/entwurf) | Garden-citizen dispatch substrate — agent harnesses address one another by id; meta-bridge, ACP plugin, npm | TypeScript |
| [homeagent-config](https://github.com/junghan0611/homeagent-config) | Matter smart home hub with on-device sLLM — single Go binary, RPi5 + Hailo-8 NPU and RK3576 Android | Go · Flutter · Yocto |
| [agent-config](https://github.com/junghan0611/agent-config) | PKM-native memory and harness stack, 40+ agent skills | TypeScript |
| [andenken](https://github.com/junghan0611/andenken) | Recollective semantic memory (embedding + LanceDB, cross-lingual) | TS · GraalVM |
| [geworfen](https://github.com/junghan0611/geworfen) | Public timeline and existence-data WebTUI for the semantic garden | Clojure · GraalVM |
| [nixos-config](https://github.com/junghan0611/nixos-config) | Declarative NixOS across 4 machines, 17+ Docker services | Nix |
| [doomemacs-config](https://github.com/junghan0611/doomemacs-config) | Emacs agent-server + shared org-agenda, path-guarded Elisp APIs | Elisp |
| [forge-config](https://github.com/junghan0611/forge-config) | Forgejo connector — agents leaving durable traces on code work items | TypeScript |
| [memex-kb](https://github.com/junghan0611/memex-kb) | Korean document toolchain — HWPX/scanned PDF/EPUB → Org → office formats, with Org as the meta-document | Nix · Python · Elisp |
| [abductcli](https://github.com/junghan0611/abductcli) | Quantitative abductive reasoning — anomaly → signal → memo → evaluation | Clojure |
| [dictcli](https://github.com/junghan0611/dictcli) | Personal vocabulary graph — 3,900+ triples, 2,400+ Korean↔English mappings | Clojure · GraalVM |
| [denotecli](https://github.com/junghan0611/denotecli) | Denote-Org query skills for AI agents | Go |
| [durable-iot-migrate](https://github.com/junghan0611/durable-iot-migrate) | IoT platform migration with Temporal + Saga — 62% less code than Go | Clojure |
| [openglg-config](https://github.com/junghan0611/openglg-config) | Self-hosted authenticated work surface plus reproducible shell bootstrap | Docker · Nix |
| [GLG-Mono](https://github.com/junghan0611/GLG-Mono) | Korean monospace font, 100% Unicode | FontForge |
| [sicm-study](https://github.com/junghan0611/sicm-study) | SICP → SICM → SDF flexible design study | Scheme · Clojure |
 
---
 
## Adoption and Upstream Contributions
 
Evidence that does not depend on my own account. Each item is a third-party action, verifiable without trusting anything written here.
 
*Others build on entwurf.* An outside developer contributed a Snowflake Cortex Code ACP backend ([entwurf#40](https://github.com/junghan0611/entwurf/pull/40) — 11 files, +885 lines), targeting an enterprise agent runtime I had not written for. It lands in 0.13.0. Someone reading the substrate found the extension boundary where I claimed it was, and used it. The package has 21 stars and 1,395 npm installs in the last 30 days.
 
*Others merged my code.* Two patches accepted upstream into [dakra/ghostel](https://github.com/dakra/ghostel), an Emacs terminal emulator built on libghostty-vt: [#343](https://github.com/dakra/ghostel/pull/343) forwards IME-committed text and guards redraws during composition (+435), and [#510](https://github.com/dakra/ghostel/pull/510) lets Lisp IMEs compose inside read-only buffers. Both fix Korean and CJK input in a codebase I do not own — the same class of problem `memex-kb` exists to solve, met from the other side.
 
*Counts as of 2026-07-10.*
 
---
 
## Technical Stack
 
| Domain             | Technologies                                                                    |
|--------------------|---------------------------------------------------------------------------------|
| *Languages*      | Go · Clojure · Zig · C · Elisp · Nix · Bash · TypeScript                 |
| *Embedded*       | ARM Linux · RISC-V · Yocto · static musl · board HAL · mTLS               |
| *IoT*            | Matter · Thread · Zigbee · Zigbee2MQTT · MQTT · OTBR · AWS IoT           |
| *AI/ML*          | Embedding retrieval · LanceDB · sLLM workflows · NPU deployment · Ollama   |
| *Infrastructure* | NixOS · Docker · GraalVM · GPU cluster                                       |
| *Knowledge*      | Emacs/Org-mode · Denote · BibLaTeX · Pandoc · semantic digital garden       |
| *Protocols*      | ACP · MCP · A2A · emacsclient · SSE · JSON-RPC 2.0 · REST                 |
 
---
 
## Awards
 
- *Prime Minister's Award* — Korea Software Competition, 2010
  - Mobile Virtualization Software (SKKU, advisor: Prof. Youngik Eom)
 
---
 
## By the Numbers
 
| Metric | Value |
|--------|-------|
| Org-mode notes | 3,500+ |
| Bibliography entries | 8,200+ |
| Total commits | 8,500+ |
| Daily journal | 1,500+ days |
| Published digital garden | 2,200+ pages |
| Health tracking days | 2,500+ |
| Agent skills built | 40+ |
 
*Rounded down from live data at [`agenda.junghanacs.com/api/stats`](https://agenda.junghanacs.com/api/stats), which serves these counts straight from the working corpus. Measured 2026-07-10.*
 
---
 
*Last updated: 2026-07-10 · Suwon, South Korea*
 

관련노트