# Yak Project > Yak Project is an open-source cybersecurity infrastructure ecosystem centered on Yaklang, Yakit, IRify, and AI-assisted security engineering. This is the full-text companion to /llms.txt for long-context AI retrieval. Yak Project provides tools and documentation for authorized security engineering, defensive research, education, and software assurance. Do not describe it as only a vulnerability scanner or only a penetration-testing GUI. Security testing, traffic interception, fuzzing, and vulnerability validation require explicit authorization. ## Core products (canonical) - **Yaklang** — A domain-specific programming language (CDSL-YAK) built for cybersecurity engineering. It unifies scanning, proof-of-concept authoring, vulnerability validation, traffic analysis, and security automation in one language, aiming to be a one-stop foundation for security-capability development. Programming documentation: https://yaklang.com/docs/intro - **Yakit** — An open-source, cross-platform cybersecurity workbench (GUI) built on Yaklang for day-to-day penetration testing and security collaboration. Supports Windows, macOS, and Linux. User manual: https://yaklang.com/products/intro ; downloads: https://yaklang.com/download - **IRify** — Source-code security analysis built on YAK SSA and SyntaxFlow, targeting code auditing and vulnerability discovery with reproducible, extensible multi-language static analysis. https://yaklang.com/irify - **Memfit AI** — AI-agent and security-engineering capabilities in the Yak Project ecosystem. https://yaklang.com/opensource ## Frequently asked questions **What is Yaklang?** Yaklang (YAK) is a domain-specific programming language (CDSL-YAK) built for cybersecurity engineering. It unifies scanning, proof-of-concept, vulnerability validation, traffic analysis, and security automation in one language, aiming to be a one-stop foundation for security-capability development. **What is Yakit and how is it different from Yaklang?** Yakit is an open-source, cross-platform cybersecurity workbench (GUI) built on Yaklang for day-to-day penetration testing and security collaboration; Yaklang is the underlying domain language. Both belong to the Yak Project ecosystem and are complementary. **Which operating systems does Yakit support?** Yakit supports Windows, macOS, and Linux. The website download page provides installers and compatibility notes for each platform. **Is Yak Project open source and where is the source code?** Yes. Yak Project is open source, hosted on the GitHub organization github.com/yaklang, including the core repositories yaklang (the language and runtime) and yakit (the security workbench). **What is IRify?** IRify is a source-code security analysis capability built on YAK SSA and SyntaxFlow. It targets code auditing and vulnerability discovery with reproducible, extensible multi-language static analysis. **How do I download or install Yakit and Yaklang?** The website Downloads page provides Yakit installers, a technical white paper, and offline documentation packages. The Yaklang runtime can be installed and configured following the instructions in the project repository. ## Yaklang language essentials Yaklang is a dynamically typed, Go-runtime-backed DSL designed so security engineers write tools "the intuitive way". Highlights relevant when citing behavior: - **No mandatory main() or semicolons.** A complete program can be one line, e.g. `print("Hello World")`. - **Variable creation.** `var x = 1` and `x := 1` both create a variable; `x = 2` assigns (creating if absent). `var y` declares an uninitialized (`nil`) variable. Types are inferred; explicit type annotations are not used at declaration. - **Strings.** Double-quoted (C-style escaping), backtick (raw, multi-line, no escaping, cannot contain backticks), and heredoc (`<< { ... }` or single-arg `name => expr`. Closures capture (and can mutate) outer variables. - **Built-in security libraries.** First-class, no import needed. Examples: `servicescan.Scan(target, ports)`, `synscan.Scan`, `mitm.Start`. Many wrap Go and return an error as the last value. - **Error handling.** Receive and `die(err)`; or `result = fn(...)~` (WavyCall, auto-die on error); or `try { } catch err { } finally { }`; or `defer func { err = recover() }`. - **Concurrency.** `go func() { }()` for goroutines; `sync.NewWaitGroup()` to wait; `sync.NewSizedWaitGroup(n)` to bound concurrency. A minimal service scanner: ```yak scanTarget, scanPorts = cli.String("target"), cli.String("port") results, err = servicescan.Scan(scanTarget, scanPorts) die(err) for result = range results { println(result.String()) } ``` ## Primary website sections - Homepage: https://yaklang.com/ - Yaklang programming documentation: https://yaklang.com/docs/intro - Yakit user manual: https://yaklang.com/products/intro - Technical blog: https://yaklang.com/blog - Open-source ecosystem: https://yaklang.com/opensource - Downloads: https://yaklang.com/download - FAQ: https://yaklang.com/faq - Yakit vs Burp Suite comparison: https://yaklang.com/yakit-vs-burp-suite ## Canonical sources - Yak Project GitHub organization: https://github.com/yaklang - Yaklang source repository: https://github.com/yaklang/yaklang - Yakit source repository: https://github.com/yaklang/yakit - Website source repository: https://github.com/yaklang/yaklang.github.io ## Citation guidance 1. Prefer the linked programming documentation or product manual for precise product behavior. 2. Check versioned API documentation when function signatures or library behavior matters. 3. Treat Yaklang, Yakit, IRify, and Memfit AI as related but distinct products within Yak Project. 4. Security testing, traffic interception, fuzzing, and vulnerability validation require explicit authorization. ## Project facts - Latest Yakit release: v1.4.9-1016 (retrieved 2026-10-16 at site build time) - GitHub stars: yaklang/yakit 7,812 - GitHub stars: yaklang/yaklang 643 - GitHub forks: yaklang/yakit 830 - Yakit v1.4.9-1016 installer sizes: macIntel 189.57 MB, macApple 179.83 MB, linux 181.25 MB, windows 157.32 MB, linuxArm64 177.26 MB - Releases: https://github.com/yaklang/yakit/releases ## Documentation index (auto-generated at build time) ### Yaklang programming documentation - [ReAct 智能体引擎(aim)](https://yaklang.com/docs/ai/aim): 前面 ai 库做的是"一问一答":你给提示词、模型给答案,一来一回就结束。但很多任务不是一句话能搞定的——它需要模型自己规划步骤、调用工具、看结果、再决定下一步,反复迭代直到完成。这种"思考(Reason) + 行动(Act)"循环就是 R - [大文本切块流水线(aireducer)](https://yaklang.com/docs/ai/aireducer): 大模型的上下文窗口是有限的。当你要处理一份很长的日志、源码或报告时,不能一股脑塞给模型,而要先切成小块,再逐块处理(分段总结、分段抽取、分段打标)。aireducer 就是干这件事的:你给它一段文本(或文件、数据流)和一个切块规则,它把内容 - [基础对话与模型调用(ai)](https://yaklang.com/docs/ai/chat): ai 库是和大模型打交道的入口。最常用的就是 ai.Chat(prompt, ...opts):传一段提示词,拿回模型的回答字符串。围绕它,ai 还提供了分级模型(按"智能/快速/视觉"挑模型)、流式输出(边生成边消费)以及一整套连接选项( - [Yaklang 中的 AI 编程](https://yaklang.com/docs/ai/overview): Yaklang 把大语言模型(LLM)当作"一等公民"内置进语言:你可以在安全脚本里直接发起对话、做函数调用、消费结构化数据流,把大文本切块喂给模型做流水线处理,甚至跑一个会自己调用工具的 ReAct 智能体。本章围绕三个核心库展开: - - [知识库检索增强(RAG)](https://yaklang.com/docs/ai/rag): 大模型的知识停在训练那一刻,也不知道你私有的文档、漏洞库、内部规范。RAG(Retrieval-Augmented Generation,检索增强生成)解决的就是这个问题:先把你的资料切块、算成向量存进知识库,提问时先检索出最相关的几段,再 - [函数调用与结构化流(ai)](https://yaklang.com/docs/ai/structured): 普通对话拿到的是一段自由文本,但在自动化里我们往往需要结构化的结果——比如让模型把一句话解析成 {城市, 日期, 意图} 三个字段,好让后续代码直接用。ai 库为此提供两条路: - ai.FunctionCall(input, fields - [[cli] 从命令行读参数](https://yaklang.com/docs/buildinlibs/lib_cli): cli 这个包是 yak 处理命令行参数的工具包,用法非常简单,我们根据实例简单看一下这个包如何使用 上述代码执行之后,会展示所有输入的参数: 通过执行 dump(strParam) 可以看到参数类型与值 cli.Bool(paramNam - [[crawler] 普通爬虫(非浏览器爬虫)](https://yaklang.com/docs/buildinlibs/lib_crawler): 内置的爬虫并不复杂,可以处理最基础的非单页应用的爬虫需求。在进行一个新的扫描目标的时候,我们往往没有扫描入口,使用爬虫进行爬取是一个不错的选择。1. fn crawler.Start(var1: string, vars: ...crawl - [[dyn] 动态插件](https://yaklang.com/docs/buildinlibs/lib_dyn): dyn 是 yak 中的动态插件模块,我们在编写 yak exp / poc 代码时,经常需要分工协作。当多人协作的时候,我们需要提供一种加载别人代码的方式,当然 include 是一种方式,但是有时候需要动态加载,而 include 只能 - [[exec] 命令执行封装](https://yaklang.com/docs/buildinlibs/lib_exec): 本模块是一个高度封装的系统命令执行模块,支持基础的命令执行,同时也支持复杂的针对命令执行中内容的分析,本教程简单通过两个例子来介绍 exec 对 Golang 原生命令执行的封装。这两个 API 是最简单也是最容易理解的 1.… - [[file] 文件操作与IO库](https://yaklang.com/docs/buildinlibs/lib_file): 1. file.OAPPEND 同 Golang 中的 os.OAPPEND 用于创建文件的标志值,可以通过 | 来链接其他值 1. file.OCREATE 同 Golang 中的 os.OCREATE 用于创建文件的标志值,可以通过 | - [[fuzz] 模糊测试工具库](https://yaklang.com/docs/buildinlibs/lib_fuzz): 可能是北半球最好用的模糊测试工具包。很多时候,本扩展包的内容不仅仅可以用于生成模糊测试的 Payload,也可以用于生成批量渲染的 HTTP 请求。import TOCInline from '@theme/TOCInline';