ASys (Agentic System Interface) is an open-source system interface protocol designed specifically for AI Agents — binary instructions instead of text commands, persistent connections instead of per-request handshakes, instruction-level permissions instead of broad session-level access. This is where it came from and why it's built the way it is.
Last year, using Claude to help write code felt like working with an intern with terrible memory. Context would drift as conversations grew longer. Restarting a session meant spending several rounds just getting back to where we were. Interfaces we'd agreed on earlier would be forgotten later.
Early this year I tried again. I used Claude Code to build ReCall — a PySide6 desktop flashcard app with config, UI, database, i18n, a theme system, tests, and Windows packaging. Not huge in scope, but it covered everything a real desktop app needs. The experience was completely different. I was still driving, but Claude could keep up. I'd say what needed doing, and it understood accurately. The code mostly worked. When it went off track, a correction pulled it back fast.
The progress between those two experiences was obvious.
Looking back, the domains where LLMs have actually shipped: text and code. Both share something: they're tasks with a finish line — write an article, ship a feature, done. Operations is different. Once a system is live, it's real-time, stateful, and problems arrive without warning. There's no "done." It's a different world entirely.
I was studying for CompTIA A+ Core 2 at the time — reviewing during the day, writing code at night. One question kept turning over in my head: AI assistance for development is maturing fast. What about ops?
When the Operator Becomes an AI
Once AI accelerates development to an exponential pace, the accumulation of running systems accelerates with it. Every new service deployed is something that needs maintaining — indefinitely. Systems don't disappear. Problems pile up. Complexity compounds. Think of it this way: all running systems together form a large lake; all systems under development are rivers flowing into it. As more rivers flow faster, the lake grows faster than anyone expects.
But human ops scales linearly. One engineer can only maintain so many systems, no matter the tooling. Human ops can't keep up with exponential accumulation. Looking ahead, only AI ops can take that on.
For AI ops to work, though, one prerequisite needs solving: the interface.
From POSIX to SSH, from Ansible to Kubernetes Operators — these tools are battle-tested, widely deployed, and will keep running for years. But every one of them was designed with a human operator in mind. When the operator becomes an AI Agent, several things are worth rethinking from scratch: text parsing fails whenever output format changes; session-level permissions carry serious risk for Agents that can hallucinate; frequent sampling makes per-connection handshakes a real bottleneck.
Take the cost of "guessing text." An Agent running ps aux | grep nginx over SSH gets back free-form text — format varies by OS, locale, and tool version. The Agent has to parse it, and every regex that might break is a potential hallucination entry point. Call ASys's SYS_PROCS instead, and you get a fixed 44-byte binary frame: process count, top-5 PIDs, CPU%, memory%, status flags. Typed, unambiguous, identical on every node. Parsing is one line of struct.unpack. This isn't just a performance gain. It's a reliability improvement of a different order. When parsing overhead approaches zero, the Agent can spend nearly all its compute on what actually matters: perception, reasoning, decision.

ASys isn't trying to replace any of these tools. It's exploring one question: if you designed an interface specifically for Agents, from first principles, what would it look like? One more option, that's all.
Open source: github.com/vincentping/asys
Where ASys Came From
From 2010 to 2016, I worked as a developer at a smart card company in Shanghai — SIM cards, bank cards, ID chip cards. The industry had one iron rule: once a card ships, you can't take it back.
Smart card development meant writing the spec first, implementing against the spec, testing against the spec: functional tests, failure tests, edge case coverage. After internal testing came on-site testing at the telecom operator. Tedious, long-cycle, no shortcuts. Because if you found a bug after mass production, the recall cost was catastrophic. That's a completely different philosophy from the move-fast-and-iterate approach of internet development. The deepest thing those six years left me wasn't any particular technology. It was an instinct: thinking it through and writing it down matters more than starting fast.
Those six years also made me fluent in protocols. Especially ISO/IEC 7816 — the APDU system for smart card communication. A card reader sends binary instructions to a smart card and gets back a fixed-format response, never parsed by human eyes. 0x9000 means success. 0x6982 means security status not satisfied. Unchanged for decades. This protocol runs on tens of billions of devices — every bank chip card, every e-passport, every SIM card. Every edge case has been validated in the hardest production conditions possible.
After 2016, I left smart cards and spent the next ten years building web systems of all shapes — frontend JS, backend Python/Go/Java, databases, servers, caches, clouds, various architectures.
The past year I've been deep in AI, building projects with Claude. The more I understand it, the more convinced I am: AI will reshape humanity the way the Industrial Revolution did. After finishing ReCall, I kept asking myself what to build next that was actually AI-related.
One night in late February — studying late, just lay down, half-asleep — APDU from 7816 flashed into my head. Those elegantly simple binary instructions, fixed-format responses. I sat straight up. Why not use APDU-style communication between Agents and servers? Why keep human-readable text in the middle at all?
That same night I re-read the 7816 spec, wrote a rough document, got the initial idea down.
Six years in smart cards, ten years in web systems, one-plus years in AI — take away any one of those, and that half-asleep connection doesn't happen. Most of my old smart card colleagues are still in embedded systems. My web friends rarely have a background in low-level protocol design. Maybe this is what people mean when they say diversity drives emergence. Once the idea showed up, not trying it felt like a waste.
Three Months, Zero to Open Source
Early March — A+ Core 2 still not done — I started anyway.
Old habit from smart card days: write the docs first. Interface design philosophy, instruction set encoding, security model, frame format — think each piece through, write it up, realize mid-writing that I hadn't thought it through, go back. March 16, v0.1 docs done. Same day, first PoC running between a Windows machine and a RHEL server: SYS_HELLO instruction, response 0x9000 OK.
After the exam, progress accelerated. Docs and code alternated. Write code, find a design problem, go fix the spec, continue. Not throwing things away and starting over — just continuous refinement.
A few decisions in this process each took time to work through.
Transport: Why Not mTLS
Transport layer was the first thing that stopped me. Instinct said mTLS — common, widely used, easy to debug. But the more I thought about it, the more wrong it felt.
asyd is ASys's server-side daemon. One of its core use cases is staying reachable during OOM events, full disks, exactly the moments you need it most. If it goes silent because a certificate expired or the CA is unreachable at that moment — an interface that fails during emergencies is more dangerous than no interface at all. And OpenSSL is a heavyweight dependency. That directly conflicts with the zero-external-dependencies design goal.
I went with Noise Protocol IK, implemented on Monocypher. Pure cryptographic primitives, no certificate dependencies, roughly 2,000 lines of C, fully auditable, 1-RTT handshake. This choice lets asyd ship as a single static binary. Deploy it on any POSIX environment with no runtime risk.
Permission Model: Making Unauthorized Things Not Exist
The permission model took longer. The intuitive answer was an ACL table — configure which Agent can do what. Simple-looking, but not enough.
Traditional security models (SSH, sudo) were designed for human operators. Human actions are exploratory; intent is hard to declare upfront. "Broad default permissions plus negative interception" fits how humans work. When the operator is an AI Agent, that assumption breaks. Agent behavior is programmatic. Permission boundaries can be declared precisely at deployment time.
So ASys flips it. The system is dark to an Agent by default. Only instructions explicitly lit up in the Capability Map "physically exist." An unauthorized operation isn't "you don't have permission" — it's "this instruction doesn't exist in your world." Unregistered instructions are dropped at the decode stage and never enter any execution path.
Using a bitmap has an additional benefit: side-channel resistance. If you check permissions before checking existence, an attacker can infer which instructions "exist but are disabled" through tiny timing differences in responses. The Capability Map forces existence-check first. All unauthorized operations produce identical response timing. No information leakage surface.
Least privilege isn't a configuration option. It's a physical property of the protocol.

Instruction Set: How to Organize 256 Slots
The instruction set structure came together faster, because there was an obvious reference: APDU.
Frame format borrowed directly: [CLA][INS][P1][P2][Lc][Data][Le]. The high nibble of the INS byte serves as a logical page index — 0x00–0x0F is Core ISA, the baseline observation instructions, permanently locked; 0x20–0x8F is Standard ISA, seven functional groups; 0xC0–0xFF is Vendor Extensions, open for domain-specific customization.
Any developer reading an instruction code knows the group at a glance. 0x2x is Process Control, no table lookup needed.

More important is the semantic lock on Core ISA: once a core instruction ships, byte offsets never change. New fields can only be appended at the end. Agent parsing code written today is expected to work on some POSIX-compatible system fifty years from now. APDU covers tens of billions of devices precisely because of this long-termism. That's what ASys is trying to inherit.
Closing the OODA Loop
Late May, I ran a complete OODA loop demo on RHEL. The RHEL server ran a CPU hog to trigger a load spike. A Python client on Windows called SYS_STATUS to detect the anomaly, SYS_PROCS to locate the process, PROC_THROTTLE to suppress it, then SYS_STATUS again to confirm recovery. All 0x9000 throughout.
That moment didn't feel like "it works." It felt like "proof of concept confirmed."

May 27, v0.3.0 released. Three months from idea to open source.
Where Things Stand
github.com/vincentping/asys is now at v0.3.1.
Stable today: Core ISA's four observation instructions (SYS_CAPS / SYS_HELLO / SYS_STATUS / SYS_PROCS), the first batch of Standard ISA control instructions (PROC_THROTTLE / SVC_RESTART / TASK_QUERY), a complete Noise IK encrypted channel, public key whitelist authentication, and Epoch_ID replay protection.
The most important next piece is the Python SDK — targeting AI Agent developers, designed to drop into LangChain, AutoGen, and similar frameworks. The core design principle: Agents never touch the byte layer directly. They call structured interfaces (sdk.proc_throttle(pid=1234, action="stop")); the SDK handles parameter validation and binary compilation. LLMs are inherently bad at byte offsets. Having an Agent assemble raw APDU parameters is the wrong abstraction.
Still planned but not yet implemented: per-Agent fine-grained Capability Maps, an audit black box, chained transport. All in the spec. All coming.
Honest Thoughts
Building a protocol solo sounds a little crazy.
Protocols are usually a committee job — they need multi-party consensus, large bodies of real-world input, exhaustive edge case analysis. But the idea showed up. So I tried. Working alone means decisions move fast. It also means no external pressure forces you to think every corner through. My response has been the same as in smart card days: docs before code. White paper, protocol spec, design notes, implementation notes — these took more time than the code itself. Because writing is the best thinking tool I have. If I can't write it clearly, I don't actually understand it. If I don't understand it, the code will collapse eventually.
ASys is an exploratory project. It's not a replacement for SSH, not a competitor to Ansible. The gap it's trying to fill: when an Agent needs to manipulate a system at high frequency, low latency, and with full auditability — while staying reachable in extreme conditions — there's currently no purpose-built standard for that. Wrapping an LLM around SSH and calling it AI ops doesn't solve the underlying problem.
Whether that's worth solving is for others to judge. But I think as Agents move further into production systems, the question "what should the interface between an Agent and a system actually look like?" deserves serious attention.
If ASys starts that conversation, that's enough.
One last note: ASys listens on port 7816 by default. A deliberate tribute to ISO/IEC 7816 — the standard number for smart card communication protocols. Every time I see that number, I'm back in front of a stack of specs from a decade ago: 7816, 14443, EMV, PBOC, UICC, RSA. The years I spent with my face in those pages.
从智能卡到 AI Agent:我为什么做 ASys
记录 ASys 的诞生故事:从智能卡 APDU 协议到专为 AI Agent 设计的二进制系统接口,探讨为什么 AI 运维需要一个全新的通信标准。
read moreGrant in Lincoln Park
Lincoln Park was once Chicago's municipal cemetery. The Grant statue has stood there for over a century — surviving a lightning strike in 1892 and a monuments review committee in 2020. Removing a bronze doesn't remove history; sometimes it only moves the problem out of sight. One person can be both an instrument of justice and an agent of injustice. The complexity doesn't resolve.
read more林肯公园的格兰特
林肯公园曾是芝加哥的城市公墓,如今格兰特将军的铜像立于此地已逾百年。从1892年的雷击到2020年的纪念碑审查委员会,这座铜像经历了它不需要解释的一切。移走纪念物不等于移走历史,有时只是给当代人一种虚假的清洁感。历史的复杂性无法被一块铜化解,也无法被移除一块铜来解决。
read morePlywood Over Bed Slats: A Better Alternative to Bunkie Boards
Bed frame slats spaced 3.5 inches apart — exceeding Simmons warranty requirements. After ruling out a Box Spring, Bunkie Board, and Foundation one by one, I solved the problem with two sheets of plywood from Home Depot for $108. Includes cut dimensions, kerf details, and exactly what to say at the cutting station.
read more不买 Bunkie Board:用胶合板解决床架 Slats 间距问题
床架木条间距3.5英寸,超出Simmons质保要求,Box Spring、Bunkie Board、Foundation逐一排除之后,最终用两张Home Depot的胶合板裁切铺底,$108解决问题。附裁切尺寸、kerf细节和Home Depot沟通话术。
read moreWSL2 Under the Hood: One VM, One File, One IP That Never Stays the Same
Once WSL2 is up and running, some strange things start to happen: you delete gigabytes of files in Linux and Windows disk usage doesn't budge; cross-system file access is painfully slow; a network script that worked fine yesterday suddenly breaks after a wsl --shutdown. None of this is a bug. It all traces back to three things at the core of WSL2's design — a special kind of VM, a single file that holds your entire Linux system, and an IP address that changes every time you restart.
read moreWSL2 底层:一个虚拟机、一个文件、一个会变的 IP
装好 WSL2 之后,用着用着就会碰到一些奇怪的问题:Linux 里删了几十 GB,Windows 磁盘纹丝不动;跨系统访问文件,速度慢得离谱;网络脚本昨天还好好的,重启 WSL 就连不上了。这些都不是 Bug,根子在 WSL2 的底层设计——一个特殊的虚拟机、一个装着整个 Linux 的文件、还有一个每次重启都会变的 IP。搞清楚这三件事,那些让人懵的问题就都说得通了。
read moreInstall Linux on Windows 11 in 5 Minutes
A practical guide to building a native Linux environment on Windows 11 using WSL2, bypassing the resource overhead of traditional virtual machines. Covers enabling BIOS virtualization, one-command deployment with wsl --install, file system mapping, and a warning about the irreversible data erasure caused by --unregister.
Windows 11 下 5 分钟安装 Linux
详解利用 WSL2 在 Windows 11 下构建原生 Linux 环境的实战流程,避开资源繁重的传统虚拟机。 涵盖 BIOS 虚拟化开启、wsl --install 一键部署及文件系统映射机制,并预警 --unregister 彻底抹除数据的风险。
read moreI Built a Study Tool While Preparing for CompTIA A+ — Now It's Open Source
I was studying for CompTIA A+ when I got frustrated with reviewing wrong answers in a plain document. So I built a tool — and now it's open source.
read more备考 CompTIA A+,我用 Python 做了个错题练习工具
备考 CompTIA A+ 期间,用文档记录错题越来越不方便,于是我用 Python 做了一个交互式的错题练习工具,现已开源。
read more龙龙读书记1:爱上植物的第一本书
天下没有不爱阅读的孩子,关键是要找到孩子的兴趣!所以对于家长来说,培养孩子的阅读习惯,从发现孩子的兴趣开始。
read more科幻故事 | 咖啡留香:一次关于意识上传的实验记录
"意识不是被给予的,而是不断创造的。"这是李元教授生前常说的一句话。作为一名量子物理学家,他用自己最后的时光,完成了一场惊世骇俗的实验。
read moreTkinter根窗口设置小技巧:程序启动最大化和程序窗口图标设置
介绍Tkinter程序根窗口的设置方法,同时介绍程序启动时窗口最大化和程序窗口图标设置的小技巧。
read more孩子运动,是选篮球还是足球??
篮球和足球都是团体对抗的球类运动,训练方式也相似,对于提高身体素质,培养孩子的对抗意识和团队合作意识很有帮助。但是因为运动形式的差别,篮球更有利于身体的全面锻炼,对孩子长身高有帮助,同时也有利于脑部发育。
read more2020年温针灸足三里筑基记录
2018年的温针灸足三里百次筑基,对我的身体有很大帮助。今年准备再次温针灸足三里,希望经过三伏天,重新百次筑基。6月1号开始第一次,特记录如下。
read morePython自带的GUI库Tkinter是否值得学习?
Python语言可以用在很多方面,网站开发、数据分析、运营维护、游戏开发等等,那么桌面应用程序GUI呢?其实Python标准库里自带Tkinter就是干这个的。相比PyQT、wxPython等等,Tkinter有哪些优势和不足,是否值得学呢?
read more站桩记录2:调身、调气和调心
站桩的过程实际上首先就是“调身”的过程。“下紧上松”,从双脚开始,到膝盖,再到裆部的放松。上半身则要求头部顶悬、下颌微内收;松肩沉肘,双掌环抱。
read more站桩记录1:开始练习站桩
创意与验证:如何获得好的创意?——Udacity课程《产品设计》学习笔记2
要想有一个好的创业点子,一定要对所做的事情有激情。千万不要只是为了创业而去创业。我们之所以要创业,是因为要解决一个问题,一个会让我们日夜寻思的问题。
read moreBreeze,让无车者也能成为Uber/Lyft司机
对于Uber和Lyft这样的打车平台来说,随着对出行市场的占有率越来越高,他们面对的问题和别的行业有所不同。对于他们来说,获取用户非常简单,甚至太简单了,导致现在他们常常面临的问题是:用户太多,而司机太少。
read more创业者应该具有怎样的素质?——Udacity课程《产品设计》学习笔记1
企业家是否能够培养?这本身就是一个问题。一个企业家所扮演的角色非常广泛,除了企业内的经营管理工作,还有很多企业外的作用,所以要找到一个简单的成功公式非常困难。
read moreInstacart创业者早期的故事
故事从2010年1月说起,80后的Apoorva Mehta在亚马逊已经工作了2年,作为一个开发工程师,他在亚马逊学到了很多,但同时也开始对公司里缓慢官僚的气氛有些感到厌倦,他希望有所改变。
read more美式音标练习笔记——“李阳疯狂英语手势突破发音”
本文是我为了练习美式英语而学习美式音标的笔记,采用了“李阳疯狂英语手势突破发音”教程。
read more如何去除Joomla 3网站静态化URL地址中的分类ID和文章ID
Joomla是一个非常专业的网站内容管理系统(CMS),但是其在SEO搜索引擎优化后的URL模式上有一些不足。这里记录了我的一些改进方法。
read moreRemove Category and Article ID from URL in Joomla 3
Joomla is a very professional content management system (CMS), but there're some minor shortcoming within the SEO URL Mapping.
read more深深网络深似海----搜索引擎之外的网络世界
互联网是一个信息的海洋,那么搜索引擎抓取只是这个海洋的表面,而在信息海洋的深处,存在巨大数量的内容,搜索引擎无法启及,这些内容叫着“DEEP WEB”,或者“INVISIBLE WEB”。
read morerobots.txt和Robots META标签
对于网站管理者和内容提供者来说,有时候会有一些站点内容,不希望被ROBOTS抓取而公开。为了解决这个问题,ROBOTS开发界提供了两个办法:一个是robots.txt,另一个是The Robots META标签。
read moreRSS及其发展历程简介
RSS是一种描述和同步网站内容的格式,是目前使用最广泛的XML应用。RSS应用在国外已经非常普遍,从个人博客(Blog)栏目、企业站点到世界级的门户都提供基于RSS的服务。
read more网络推广新潮流——发行免费电子图书
使用免费电子图书进行营销就像共享软件一样,非常流行。它真正体现了为访问者着想,同时用户也可以收藏,以备进一步的阅读参考。每一本电子书一旦放到网上,就如同有了自己的生命,到处传播,不需要我们再去费心,同时电子书籍又可以保证内容的完整。
read more如何迅速增加电子杂志的订户数
当我们建立起一份电子杂志后,除了系统的管理、内容的准备等等外,最终也会面对临一个推广的问题:怎么样能迅速扩大自己的知名度,增加杂志的订户数呢?
read more自动回复机----电子邮件营销中的另一种秘密武器
小小的电子邮件,有这么多的应用方法,而且还在不断诞生着一些极具创造性的新应用。这里想给大家介绍的是电子邮件营销中的另一个秘密武器:自动回复机(AutoResponder)
read more网上淘金——新世纪的八条网络解决之道
互联网究竟能不能赚钱,除了依赖那些风险基金、为上市奋斗外,我们是否还有其他方式生存和发展呢?
read more让用户知道你——建设企业网站之推广篇
初步完成一个站点的设计建设,只是企业网站经营的开始。为了真正发挥一个站点的作用,我们要以该站点为基础,在网上网下开展长期而有效的推广工作。
read more组织网站内容——建设企业网站之建设篇
在做完“企业网站定位”工作、确定了网站“为什么做”和“为谁而做”,接下来就需要根据目标访问者的潜在需求确定网站的内容。
read more为什么做与为谁而做——建设企业网站之定位篇
建设一个企业网站,首先需要做的应该是确定建站的目的,也就是确定为什么做和为谁而做的问题。
read more企业网站的4种模型
互联网上每个站点都有其商务模式,虽然这些模式是千差万别的,但实际上都可以归结到4种典型的商务模式上来,这些模式构成了网站的基础结构。
read more