Full-stack developer focused on Buddhist digital humanities and AI security — building open-source tools that make ancient texts accessible to modern researchers, and securing LLM applications.
-
FoJin 佛津
— The world's encyclopedic Buddhist digital text platform. 500+ sources, 30 languages, full-text reading, AI Q&A, knowledge graph, parallel reader. FastAPI + React + Elasticsearch.
-
Master-skill
— Chinese Buddhist master AI skill generator powered by FoJin. 8 pre-built masters across Chan, Tiantai, Huayan, Pure Land, Yogācāra, Mādhyamaka, and cross-tradition. AgentSkills standard.
-
llm-pgvector
— PostgreSQL pgvector storage backend for LLM. HNSW/IVFFlat indexes for sub-millisecond semantic search at scale. Born from FoJin's 678K+ vector production workload.
-
llm-seclint
— Static security linter for LLM-powered applications. The Bandit for the AI era.
-
Buddhist AI Translator
— AI translation for Buddhist texts across Sanskrit, Pali, Tibetan, and Classical Chinese.
| Status | Project | Stars | PR | Description |
|---|---|---|---|---|
| ✅ | Dify | #35267 | test(types): replace Account/Tenant status string literals with enum ... | |
| ⏳ | Dify | #34560 | fix(types): widen ToolProviderApiEntity icon to include EmojiIconDict | |
| ✅ | Dify | #34456 | fix(security): add tenant_id validation to prevent IDOR in data sourc... | |
| ⏳ | Dify | #34381 | refactor: migrate core, models, tasks, events and schedule to session... | |
| ✅ | Dify | #34379 | refactor: migrate service_api and inner_api to sessionmaker pattern | |
| ⏳ | Dify | #33986 | fix: use constant-time comparison for API key validation | |
| ✅ | Dify | #33769 | fix: remove legacy z-index overrides on model config popup | |
| ✅ | Dify | #33767 | fix(tests): correct keyword arguments in tool provider test constructors | |
| ⏳ | Cherry Studio | #14083 | fix: clean up OAuth tokens when deleting MCP server | |
| ✅ | Cherry Studio | #13893 | fix(security): prevent XSS via dangerouslySetInnerHTML in MCP descrip... | |
| ✅ | Cherry Studio | #13892 | fix(security): validate URLs in shell.openExternal and prevent path t... | |
| ✅ | Gradio | #13204 | fix: preserve special characters in uploaded filenames | |
| ✅ | Gradio | #13182 | fix: make example field optional in cc build | |
| ✅ | Gradio | #13159 | fix: add Starlette 1.0 compatibility | |
| ✅ | LiteLLM | #25777 | fix(utils): allowed_openai_params must not forward unset params as None | |
| ✅ | LiteLLM | #24070 | Fix thinking blocks dropped when thinking field is null | |
| ⏳ | SurfSense | #1238 | feat: add maxLength constraints to auth and settings form inputs | |
| ⏳ | SurfSense | #1237 | fix(a11y): remove nested landmarks under (home) layout | |
| ✅ | SurfSense | #1232 | fix(web): clear announcement stagger timers on unmount | |
| ✅ | SurfSense | #1230 | fix(web): memoize Zero provider opts to prevent reconnect churn | |
| ✅ | SurfSense | #1229 | fix(web): drop react-dom/server from inline-mention-editor bundle | |
| ✅ | SurfSense | #886 | fix: use asyncio.to_thread for embedding calls in search endpoints | |
| ✅ | gstack | #128 | fix: eliminate duplicate command sets in chain, improve flush perf an... | |
| ⏳ | crewAI | #5307 | fix: replace eval() with safe AST evaluator in calculator template | |
| ✅ | Haystack | #10969 | docs: add AzureDocumentIntelligenceConverter documentation | |
| ✅ | trailofbits/skills | #130 | docs(aflpp): add opinionated environment variables guide | |
| ✅ | buddhist-uni.github.io | #637 | Split search_index.js into pure JS logic and Liquid data template | |
| ✅ | buddhist-uni.github.io | #636 | Added Node.js unit tests for core JavaScript utilities | |
| ✅ | buddhist-uni.github.io | #634 | Add help text to Archive.org borrowable links |
If you're interested in Buddhist studies, digital humanities, or NLP for historical texts — open an issue or start a discussion on any of my repos.



