Omnistack
About

Why this exists

Embedded tooling is very good at telling you a build succeeded. Omnistack is built around the part that usually comes after, and is usually skipped.

关于

我们为什么做这个

嵌入式工具很擅长告诉你构建成功了。Omnistack 做的是那之后的那一步, 而那一步通常被跳过了。

The gap

A system that has never been seen running is a system with an unknown number of problems in it. The failures that matter on an embedded board — a control that never resolved, a state that never changed, a panel that never painted — are invisible to every tool that stops at "build ok". They surface on the bench, on the customer's floor, and they surface late.

Omnistack closes that loop by going back to the same hardware with a plan of clicks and reading what the board actually reports. The interesting part is not that it can click. It is that it is built to be honest about the result — which is most of what the research page is about.

Three rules

They are not aspirations. Each one has cost us something to hold to.

◧

Never claim what you did not observe

A build that passed did not prove the app works. An element in a component tree is not a glyph on glass. We report the observation, and we name the gap between the two when there is one.

◇

Unknown stays unknown

If an input may or may not have been dispatched, the result is unknown. Re-running to get a cleaner answer means a second click on a real panel — so it takes a person who looked, not another attempt.

▣

Name what produced the number

Every figure we publish says the board, the release and the tool it came from. A number without a producer is an anecdote, and an anecdote does not survive an integration meeting.

What it is built on

Runtime

AppOS

A five-layer embedded operating system that builds, releases, deploys and rolls back on its own. Applications ship as signed, data-only packages — no native code. Crossing a layer boundary is refused at build time, not in review.

See the layers →
Design

Systems before screens

The framework comes first: which scenarios, which devices, which apps, and which contract binds them. Which platform a capability lands on is a decision with stated criteria — the layer model is a constraint set, not the skeleton.

Where the code is

The framework, the application runtime and the component contracts are published under the omni-stack-gen organisation. Everything the delivery gates and the board deploy path execute is in those repositories.

Browse the repositories

那个缺口

一个从没被看着跑过的系统,是一个你不知道里面还藏着多少问题的系统。嵌入式板子上真正要命的问题—— 根本没解析上的控件、根本没改变的状态、根本没画出来的面板——对每一个停在“构建成功”的工具都是隐形的。 它们在实验台上、在客户现场出现,而且出现得很晚。

Omnistack 把这个环闭上:带着一份点击计划回到同一块硬件上,读板子真正报回来的东西。关键不在于 它会点,而在于它被做成了对结果诚实——这基本上就是研究页在讲的事。

三条规则

这不是口号。每一条我们都为之付过代价。

◧

不声称没有观察到的东西

构建通过了不等于应用能用;组件树里有个元素不等于玻璃上有个字。 我们报观察,并且两者有差距时把差距说出来。

◇

未知就是未知

如果一次输入可能送到了也可能没送到,结果就是 unknown。 为了求个干净答案再跑一次,意味着在真实面板上点第二次——所以这件事需要一个看过的人来做, 而不是再一次尝试。

▣

数字要说清是谁测的

我们发布的每个数字都写明板子、release 和工具。一个没有出处的数字只是传闻, 而传闻活不过一次联调会。

它建在什么之上

运行时

AppOS

一套五层的嵌入式操作系统,自己构建、发版、部署和回滚。 应用以签名、纯数据的包发布——不含原生代码。跨层在构建期就被拒绝,而不是在评审时。

看这五层 →
设计

先有系统,再有界面

框架先行:哪些场景、哪些设备、哪些应用、哪份契约把它们绑在一起。 一个能力落在哪个平台上是带判据的决定——五层模型是一组约束,不是骨架。

代码在哪

框架、应用运行时和组件契约都发布在 omni-stack-gen 组织下。交付门和上板路径 所执行的一切都在这些仓库里。

浏览仓库