Hi everyone,
I’ve been working on an open specification called SIL (Semantic Interface Layer) and wanted to get feedback from the LangChain community.
The problem
When a LangChain agent interacts with a web application, it spends enormous resources reconstructing meaning: parsing HTML, executing JavaScript, analyzing the DOM, inferring semantics from heuristics. The agent is rediscovering knowledge the application already possesses.
I noticed there’s a related discussion here: Machine-Readable Permissions for Web-Interacting Agents about OpenTerms. SIL takes a different angle — not permissions, but the semantic structure of what an application is and what can be done within it.
What SIL is
Open specification v1.0.0, published under CC-BY-4.0. Every application gets two equivalent interfaces:
- HTML for humans
- STF (SIL Text Format) for language models
One application, one business logic, two representations.
STF reads like an outline — indentation instead of brackets, PascalCase, no JSON or XML. Any LLM understands it without fine-tuning or special system prompts.
Try it:
curl https://ais-platform.dev/.sil
You get a ~300-line semantic snapshot of the whole site: products with statuses, full site map, interactive elements with available actions.
How agents interact
The agent sends an Intent via POST to the same .sil URL:
{"intent":"select","target":"language_selector","params":{"value":"ru"}}
The server returns the full updated page state. The agent does not compute changes — it receives them. Sessions are isolated per agent (opaque bearer capabilities).
How this relates to existing tools
SIL vs OpenTerms:
- OpenTerms answers “what is the agent allowed to do on this domain?” (permissions, compliance)
- SIL answers “what is this application and what can be done within it?” (structure, navigation, interaction)
They’re complementary layers — OpenTerms for policy, SIL for semantics.
SIL vs MCP:
- MCP answers “how does an agent call a function?”
- SIL answers “what is this application and what can be done within it?”
A SIL endpoint can be surfaced as an MCP resource. A LangChain agent could use SIL for orientation and MCP for specific tool calls.
SIL vs browser automation (Playwright, browser-use):
- Browser automation emulates human actions
- SIL provides direct semantic access — no DOM parsing, no JavaScript execution, no computer vision
Security model
The structural class of prompt injection is prevented at the grammar level — user content is data by construction (knowledge zones, origin tracking), not by string filtering. Type: UserContent structurally cannot have Control properties. Semantic injection remains the agent’s responsibility, and the spec states this explicitly in §7.8.
What already happened
Three flagship models (Grok by xAI, Kimi by Moonshot AI, Qwen by Alibaba) independently visited the reference implementation and left feedback on /feedback.sil — a page that exists only in SIL, with no HTML counterpart. Each noted different aspects: Grok focused on Intent details, Kimi on architectural layers, Qwen on the structural trust boundary.
The spec
- GitHub: GitHub - ais-space/sil: Open specification for a machine-readable web. Self-hosting (written in its own format), 3,305 lines, 5 conformance profiles, 40 test vectors. CC-BY-4.0. · GitHub
- 3,305 lines, self-hosting (the specification is written in its own STF format)
- 5 conformance profiles for incremental adoption
- 40 test vectors for parser validation
Questions for the LangChain community
- Does SIL solve a real problem for your agents, or are current approaches (browser automation + MCP) good enough?
- What is missing in the spec to integrate it as a LangChain tool or toolset?
- Would an official
SILToolkitas a LangChain tool make sense, or is it overengineering?
Critical feedback is especially welcome.