Visual programming language "Pipe"

Visual programming language "Pipe"

Intro: https://youtu.be/fSi66hlKYiQ

.

Pipe (https://pipelang.com) is a novel general-purpose visual programming language powerful enough to complete with text-based languages.

Visual programming has been confined to education (Scratch) or narrow niches (LabVIEW), because existing visual languages sacrifice either power or generality. Pipe solves this, opening the way to compete with the text code that currently dominates.

Pipe's diagram is also structurally identical at design-time and runtime, staying visual in both. What you see is what runs. This is precisely what the EU Cyber Resilience Act mandates, and what text-based architectures cannot structurally deliver. Text compiles away its structure, leaving systems opaque - so AI now generates code faster than anyone can review it at design-time, and patch and monitor it at runtime. Pipe addresses three AI-created security crises structurally:

1 - AI generates more code than humans can review. Pipe is visual - a diagram is grasped at a glance, not read line by line - so review keeps pace with what AI produces..

2 - Live systems cannot be patched without full redeployment. Pipe enables block-level patching while the system runs - no maintenance window, no CI/CD to navigate.

3 - Systems cannot be monitored without logs and redeploying. In Pipe, every block boundary is independently observable in real time.

These satisfy the CRA's hardest mandates - security by design, structural auditability, 24-hour detection, incremental patching - as properties of the language, not add-on tools. 

Example of Pipe diagram with a detailed tracing can be found on this video:

https://youtu.be/hckq9mRj5DM

That video is a part of this Pipe architecture overview:

https://www.pipelang.com/six-pillars.html

The full Pipe language specification (155-page book) can be freely downloaded here:

https://www.pipelang.com/downloads/book.pdf

u/PurpleDragon99 — 4 days ago

Pipe VPL Delivers EU CRA Mandates By Design

https://preview.redd.it/xkactonz6fdh1.png?width=1376&format=png&auto=webp&s=5cc8cbb97a9f30a3ecac800592f41fb23e556c97

The EU Cyber Resilience Act (CRA) entered into force on December 10, 2024, establishing mandatory cybersecurity requirements for all hardware and software products placed on the European market. Reporting obligations take effect on September 11, 2026, with full compliance required by December 11, 2027.

The CRA does not stand alone. It sits alongside NIS2 – the Network and Information Security Directive 2 – which governs the security posture of organizations operating critical infrastructure. Together they form a two-layer framework: NIS2 mandates that organizations manage cybersecurity rigorously; the CRA mandates that the products those organizations use are secure by design. One covers who must be secure. The other covers what must be secure.

The EU is rarely the last jurisdiction to act. Regulations of this scope – once proven in the world's largest single market – tend to be replicated, adapted, or referenced by regulators in the United States, United Kingdom, Canada, Australia, Japan, and beyond. The CRA signals a long-term global trend: cybersecurity is moving from a best practice to a legal requirement baked into the design of every digital product. Organizations that treat CRA compliance as a European problem are misreading the direction of travel.

Against this backdrop, the architecture of Pipe (https://pipelang.com) – a general-purpose visual programming language, maps with remarkable precision to what the CRA mandates. This is not a coincidence of timing. Pipe was designed to solve fundamental problems in how software is built, audited, and maintained. The CRA was written in response to those same problems.

This article explains in detail how Pipe's design properties map to each CRA requirement. For a broader introduction to how Pipe addresses the cybersecurity problems created by AI-assisted development, see article ”Why the Next Programming Paradigm Has to Be Visual”.

Why Existing Languages Struggle To Meet CRA Requirements

The CRA's goals are sound. The problem is that the tools and languages developers use to build software were not designed with these goals in mind.

Three requirements illustrate the gap most clearly.

Auditability and code review. The CRA requires manufacturers to maintain complete technical documentation and submit to conformity assessments – including third-party audits for critical products. In practice, an auditor verifying CRA compliance must be able to review the architecture and understand what the software does, how components interact, and where vulnerabilities could exist. In text-based languages, this means reading thousands of lines of code – a task that was already difficult before AI coding agents began generating code faster than humans can review it. The result is codebases that grow faster than the teams maintaining them, with architectural assumptions baked in by AI that nobody explicitly specified and nobody fully understands. Code that cannot be reviewed cannot be assessed for conformity.

Real-time observability. The CRA requires manufacturers to detect actively exploited vulnerabilities within 24 hours. This assumes the running system is observable – that you can see what is happening inside it without instrumenting the source code and redeploying. In existing languages, adding monitoring requires modifying the code by adding relevant log statements, rebuilding, and redeploying. By the time monitoring is in place, the vulnerability may already have been exploited.

Hot patching without redeployment. The CRA requires vulnerabilities to be remediated without delay. In existing languages, patching means identifying the affected component in a codebase that may be millions of lines long, writing a fix, testing the entire system, and deploying everything. For systems running 24/7 in critical infrastructure, the redeployment cycle itself introduces downtime and risk. Fast patching is not just difficult in existing languages – it is architecturally impossible without a maintenance window.

This gap has widened dramatically since AI coding agents became mainstream. AI generates code faster than developers can review it, audit it, or understand its full architectural implications. This is exactly the environment in which CRA compliance becomes most difficult – and most necessary.

Pipe addresses all three requirements at the language level itself – not through compliance tooling layered on top of existing languages, but through a fundamental property of how the language works.

The Core Property That Changes Everything

Every text-based and most visual programming languages, whether compiled or interpreted, go through a transformation before they can run on a computer. Compiled languages like C++ or Rust are transformed into binary machine code. Scripting languages like JavaScript, TypeScript, and Python can technically be executed line by line without transformation, but at a severe performance cost that makes this impractical for real systems. In practice they are compiled or optimized before execution. Either way, the result is the same: the structural relationships between components – the boundaries between parts, the connections, the data flows – are no longer directly accessible in the running system.

One might think that keeping the original source code accessible solves this. It does not. The problem is the non-visual nature of text-based code. Text has no inherent spatial or relational representation. The connections between components, the boundaries between services, the flow of data through the system – none of these are visible in source code. They must be inferred, imagined, and documented separately. Every new developer, every auditor, every security reviewer must mentally reconstruct the architecture from scratch by reading the code. This becomes impossible when AI coding agents are generating code faster than any human can read it.

This gap between what was designed and what is actually running is where security vulnerabilities hide, where audit trails go cold, and where CRA compliance becomes hardest to demonstrate.

Pipe works differently. Pipe's diagram is structurally identical at design-time and runtime - and what is even more important, it stays visual in both cases. The diagram you see during development is exactly the same as what runs in the production environment. It is a familiar principle: WYSIWYG – What You See Is What You Get. What was once a convenience feature in word processors and web editors becomes, in Pipe, a fundamental security property.

Text-based code is inevitable even in Pipe – low-level operations, algorithms, and computations are still expressed as text inside visual blocks. However, developers control how much application logic lives inside visual blocks as encapsulated text code, and how much exists in the visual realm as composition of blocks. This means developers choose the level of granularity that makes sense for their system. And because Pipeis a visual programming language, all relationships between elements remain visible at every level of the Pipe application – so the system stays transparent regardless of how complex it becomes.

What you see is what runs. Not a representation of what runs. Not documentation of what used to run. The actual running system, visible and structurally accessible as the diagram you drew.

This single property has profound implications for every major CRA requirement.

Security by Design – Enforced, Not Documented

The CRA mandates that security be integrated into product development from the start – security by design, not security by retrofit. Critically, this is not a self-declaration. Manufacturers must demonstrate compliance through conformity assessments, maintain complete technical documentation, and for critical products submit to third-party audits. Regulators and auditors need to verify that the security architecture as designed is the security architecture that actually runs.

In text-based languages, this verification is a documentation exercise. A developer produces architecture diagrams, security specifications, and design documents – then separately writes code that implements them. The auditor reviews the documents and trusts that the code matches. There is no strict guarantee that it does, and deviations from documentation are inevitable. Even if AI is used to restore or regenerate documentation from source code, there is no guarantee it will be complete and precise. This is the fundamental nature of modern large language models – they are probabilistic systems that cannot be made to follow all rules without exceptions. They will inevitably deviate at some point. Documentation generated by AI from code is not a reliable audit artifact.

In Pipe, the diagram is the technical documentation and the running system simultaneously. An auditor does not need to cross-reference design documents against source code – the diagram is the authoritative, current, and complete representation of what is running. Security by design is not a claim that requires verification in Pipe. It is a structural property that is self-evident from the diagram itself.

SBOM – From Static Document to Live Architecture

The CRA requires manufacturers to maintain a Software Bill of Materials (SBOM) – a complete inventory of every component in their product. Most organizations generate SBOMs after the fact, as a snapshot of what they believe is in the codebase. These snapshots go stale immediately and miss components introduced by AI code generation tools.

Some organizations attempt to restore or regenerate SBOMs from source code using AI tools. This does not solve the problem. LLMs are probabilistic systems – they cannot guarantee completeness and accuracy. An AI-generated SBOM may miss components, misidentify dependencies, or introduce inaccuracies. For CRA conformity assessment, a probabilistic artifact is not an audit-grade artifact. Regulators require certainty, not approximation.

Pipe's diagram is a live, continuously accurate component inventory. Every block in the diagram is a running component. Every connection is a live data flow. The architecture you see is the architecture that is running – not what you hoped was running six months ago when the last SBOM was generated, and not what an AI approximated from a codebase it analyzed with inherent uncertainty.

This is not a better SBOM tool. It is a language in which the concept of an outdated or incomplete SBOM is structurally impossible.

The 24-Hour Vulnerability Reporting Clock

From September 11, 2026, the CRA requires manufacturers to file an early warning within 24 hours of becoming aware of an actively exploited vulnerability. A full notification is due within 72 hours.

This timeline assumes you can detect a vulnerability and understand its scope fast enough to report it. In AI-generated codebases – where code is produced faster than humans can read it – this assumption is increasingly unrealistic. Developers are inheriting codebases they did not write and cannot fully audit.

In text-based languages, application-level observability requires explicit action. Developers must identify what needs to be monitored, add log statements to the relevant parts of the source code, rebuild the system, and redeploy. Each monitoring gap discovered requires another cycle of the same process – add logs, rebuild, redeploy. If something is not explicitly logged, the monitoring system is blind to it at the application level. Infrastructure-level monitoring can detect network anomalies and system metrics, but the internal behavior of application components – what data is flowing, what decisions are being made, where an exploit is actually occurring – remains invisible unless a developer anticipated it and added the right log statement in advance. In a codebase generated by AI, this anticipation is structurally impossible.

Pipe's block-level observability changes this. Think of an electronics engineer probing different components on a circuit board with a measurement instrument – the engineer can freely connect to any point on the board and measure voltage, current, or signal behavior without modifying the circuit itself. No soldering required, no board redesign, no remanufacturing. The measurement is non-invasive and immediate.

Pipe works the same way for software. Every block boundary in a Pipe program is independently observable in real time. You can connect to any block's inputs and outputs and observe its behavior without adding log statements to source code or redeploying. An anomaly at a specific block is detectable immediately, its scope is limited to that block by construction, and its impact on downstream components is visible in the diagram.

The 24-hour clock becomes a realistic target when the architecture is visible and every component is independently observable without a single line of code being changed.

Interface Auditability – Simpler by Design

The CRA requires manufacturers to demonstrate that their products can be independently verified for security compliance. For auditors, one of the hardest tasks in text-based systems is understanding how components communicate – what data flows between them, under what conditions, and what happens at the boundaries.

In text-based languages, interfaces require exact contract matching. The caller and the receiver must agree on field names, types, and structure. Optional parameters with defaults solve this problem to some extent – but the fundamental structure remains a flat list of parameters declared in advance by both sides. As interface complexity grows, this flat list grows with it. Imagine auditing an interface with hundreds of parameters in a single flat list – every parameter at the same level, no inherent grouping, no visible hierarchy. Finding a specific parameter, understanding its relationship to others, or verifying that nothing is missing requires reading the entire list from top to bottom. There is no structure to guide the eye or the mind. This is the reality of complex text-based interfaces, and it only gets worse as AI-generated code introduces parameters that no human explicitly designed or reviewed.

Pipe uses a fundamentally different mechanism called overlap. Each block in Pipe has a domain – a tree structure of named nodes representing the data it works with. When two blocks are connected, Pipematches nodes between the source domain tree and the destination domain tree by their path. A node in the source domain matches a node in the destination domain if they share a common path within their respective trees. Matching nodes flow through automatically. Non-matching nodes do not cause errors – the destination block simply uses its default values for any node that has no match in the source. Even zero overlap does not prevent the signal from travelling – it arrives at the destination with all default values. No pre-agreed contract is required.

As interface complexity grows, the difference between the two approaches becomes stark. In text-based languages, complexity means a longer flat list – every additional parameter added to the same level, making the whole structure progressively harder to read and audit. In Pipe, complexity means a deeper tree where related parameters are distributed across different levels of the hierarchy. Related data sits in the same branch. Parameters at each level remain locally comprehensible because only the relevant subset of the interface is visible at any given depth. An auditor navigates the tree branch by branch rather than scanning an undifferentiated list of hundreds of items. The same reason humans use hierarchical filing systems rather than flat lists of files applies here – hierarchy keeps related things together and makes large structures navigable regardless of size.

For an auditor, this has a profound implication. Every interface in a Pipe system is visible in the diagram, its behavior is deterministic regardless of overlap, and there are no hidden contract assumptions that require reading source code to verify. Interface auditability in Pipe is not a matter of reading and cross-referencing – it is a matter of looking at the diagram.

Patching Without Redeployment – The CRA's Hardest Requirement

The CRA requires manufacturers to remediate vulnerabilities without delay, providing security updates free of charge throughout the product's support period.

This sounds straightforward. In practice, patching any modern software system requires identifying the vulnerable component, writing a fix, testing the entire system, and redeploying everything. Text-based systems implement monolithic deployment – even when only a single component needs fixing, the entire module must be rebuilt, tested, and deployed as a whole. And redeployment is rarely a simple step. In modern software teams, a change must pass through a multi-stage CI/CD pipeline – automated tests, integration tests, staging environments, approval gates – any of which can fail and send the fix back to the beginning. A single vulnerability patch can trigger days or weeks of pipeline cycles before it reaches production. For critical infrastructure operating 24/7, redeployment itself introduces risk – the moment of deployment is often when things go wrong.

Pipe enables incremental deployment. Because Pipe's runtime diagram is identical to the design-time diagram, individual blocks can be updated, replaced, or isolated live – without recompiling or redeploying the surrounding system. You patch the block. The rest of the system continues running. No CI/CD pipeline to pass. No staging environment to navigate. No maintenance window required.

Honesty requires acknowledging a real risk here. Patching a single component in isolation can cause cascading failures – a change in one block's behavior can propagate through the system in unexpected ways. This is why testing remains essential even with incremental deployment.

The good news is that Pipe makes testing as incremental as the patching itself. Every block in a Pipesystem is directly accessible and independently testable at any time. A test script can connect to any block's inputs and outputs, inject test data, and verify the response in real time – requiring at most a brief pause at the tested block or impacted scope, while the rest of the system continues running uninterrupted. Testing can be done live, on demand, at any scope – from targeting exactly the blocks affected by the patch to retesting all components of the whole application. The result is a live verification cycle that can be as narrow or as broad as the situation demands.

This is a fundamental shift from monolithic deployment, where fixing one thing means redeploying and retesting everything – to incremental deployment, where the fix and the verification are both applied exactly where they are needed. For CRA compliance, it is the difference between a 14-day patch cycle and a real-time response capability.

Three problems AI created for software engineering and why visual programming languages are the solution.

How Pipe Maps to CRA Requirements

The list below compares how each CRA requirement is addressed today using classical text-based languages, and how Pipe's architecture handles the same requirement by design.

Security by design
Current approach: specified in documents, deviates in implementation.
Pipe: design IS the implementation – identical by construction.

SBOM
Current approach: generated after the fact, goes stale.
Pipe: live architecture diagram = live component inventory.

24-hour vulnerability detection
Current approach: hard in opaque monolith codebases.
Pipe: block-level real-time monitoring at every boundary.

Fast patching
Current approach: requires full monolithic redeployment.
Pipe: incremental block-level in-place fix, no redeployment.

Interface auditability
Current approach: enormous flat parameter lists, hard to audit.
Pipe: hierarchical domain trees, visible and navigable at every level.

Why Pipe Is Different

Visual programming is not a new idea. Generations of tools have attempted to replace or supplement text-based code with diagrams, flowcharts, boxes and arrows. Most have failed to achieve mainstream adoption. Understanding why they failed – and why Pipe is different – requires looking at what made text-based programming languages so successful in the first place.

Text-based languages became the dominant paradigm because their abstractions satisfy four properties that collectively make them both accessible and powerful.

Simple abstractions. Even a programmer with no deep understanding of computer science fundamentals can learn to use a function, a variable, a loop.

Rich and complete set of abstractions. Text-based languages provide enough building blocks – functions, types, control flow, data structures – to build virtually anything without needing to introduce artificial constructs that exist only to paper over gaps in the abstraction set. The set is complete enough to stand on its own.

Powerful abstractions. Simplicity and power coexist. A function is easy to understand and simultaneously capable of expressing arbitrarily complex behavior. The same abstraction that a beginner uses to print "hello world" is used by an expert to implement a database engine.

General-purpose abstractions. The abstractions are not domain-specific. The same language constructs that work for a web server work for a game engine, a scientific simulation, or an operating system. This generality is what makes a language a platform rather than a tool.

Previous visual programming attempts failed because they satisfied some of these properties but not all. Many were domain-specific – powerful within a narrow context but unable to escape it. Others were simple but not rich enough to build real systems without workarounds. Some were complete but not general-purpose. None achieved all four simultaneously.

Pipe's abstractions satisfy all four properties – a combination novel enough to be protected by 10 provisional USPTO patents.

Pipe block is simple – anyone can understand that a block takes inputs, processes them, and produces outputs. No programming background required to grasp the concept. A Pipe diagram is rich and complete – the seven node types, the formal type system, the flow mechanism, and the overlap model together provide enough building blocks to express any application architecture without artificial constructs. Pipe blocks are powerful – the same block abstraction that represents a simple data transformation also represents a complex multi-service orchestration. And Pipe is genuinely general-purpose – the same language constructs apply to a web application, an embedded system, a cybersecurity monitoring platform, or any other domain.

What Pipe adds on top of these four properties – the design-time/runtime identity, the visual structure that persists into execution, the block-level observability – are properties that text-based languages structurally cannot provide. Pipe does not ask developers to give up what made text-based languages successful. It adds what text-based languages have never been able to offer.

A final point worth emphasizing: Pipe does not replace text-based languages – it complements them. Pipesits on top of existing text-based languages, with text code living inside visual blocks where low-level logic is best expressed in traditional form. This means the transition to Pipe from existing codebases does not require a full rewrite. Development teams can adopt Pipe gradually, converting text-based logic to visual components piece by piece, at whatever pace makes sense for their project. The visual layer grows as confidence grows. The investment is incremental.

A CRA-Native Programming Language

There is a technology that provides both the best human comprehension and maximum granularity – visual programming. Visual representation is a clear winner comparing to text and that makes logic perception much easier for human brain.

The CRA is not just a compliance framework. It is a signal that the EU has recognized that the way software is currently built is structurally incompatible with the security standards modern infrastructure requires.

Pipe is a response to that recognition at the language level – not a compliance tool built on top of existing languages, but a programming language designed from the ground up around the properties the CRA requires: visible architecture, auditable components, live observability, surgical patching, and explicit interfaces.

For organizations implementing the CRA or developing tools to support compliance, the conversation about which programming languages are CRA-compatible is only beginning. Pipe makes the case that the answer is not better compliance tooling – it is a different kind of language.

Learn more at at pipelang.com.

How Pipe addresses two cybersecurity crises – at a glance.

 

reddit.com
u/PurpleDragon99 — 1 month ago

Pipe VPL Delivers EU CRA Mandates By Design

https://preview.redd.it/bphn28bi5fdh1.png?width=1376&format=png&auto=webp&s=6ab616975626a766c45f8ddba73a4f5d02432885

The EU Cyber Resilience Act (CRA) entered into force on December 10, 2024, establishing mandatory cybersecurity requirements for all hardware and software products placed on the European market. Reporting obligations take effect on September 11, 2026, with full compliance required by December 11, 2027.

The CRA does not stand alone. It sits alongside NIS2 – the Network and Information Security Directive 2 – which governs the security posture of organizations operating critical infrastructure. Together they form a two-layer framework: NIS2 mandates that organizations manage cybersecurity rigorously; the CRA mandates that the products those organizations use are secure by design. One covers who must be secure. The other covers what must be secure.

The EU is rarely the last jurisdiction to act. Regulations of this scope – once proven in the world's largest single market – tend to be replicated, adapted, or referenced by regulators in the United States, United Kingdom, Canada, Australia, Japan, and beyond. The CRA signals a long-term global trend: cybersecurity is moving from a best practice to a legal requirement baked into the design of every digital product. Organizations that treat CRA compliance as a European problem are misreading the direction of travel.

Against this backdrop, the architecture of Pipe (https://pipelang.com) – a general-purpose visual programming language, maps with remarkable precision to what the CRA mandates. This is not a coincidence of timing. Pipe was designed to solve fundamental problems in how software is built, audited, and maintained. The CRA was written in response to those same problems.

This article explains in detail how Pipe's design properties map to each CRA requirement. For a broader introduction to how Pipe addresses the cybersecurity problems created by AI-assisted development, see article ”Why the Next Programming Paradigm Has to Be Visual”.

Why Existing Languages Struggle To Meet CRA Requirements

The CRA's goals are sound. The problem is that the tools and languages developers use to build software were not designed with these goals in mind.

Three requirements illustrate the gap most clearly.

Auditability and code review. The CRA requires manufacturers to maintain complete technical documentation and submit to conformity assessments – including third-party audits for critical products. In practice, an auditor verifying CRA compliance must be able to review the architecture and understand what the software does, how components interact, and where vulnerabilities could exist. In text-based languages, this means reading thousands of lines of code – a task that was already difficult before AI coding agents began generating code faster than humans can review it. The result is codebases that grow faster than the teams maintaining them, with architectural assumptions baked in by AI that nobody explicitly specified and nobody fully understands. Code that cannot be reviewed cannot be assessed for conformity.

Real-time observability. The CRA requires manufacturers to detect actively exploited vulnerabilities within 24 hours. This assumes the running system is observable – that you can see what is happening inside it without instrumenting the source code and redeploying. In existing languages, adding monitoring requires modifying the code by adding relevant log statements, rebuilding, and redeploying. By the time monitoring is in place, the vulnerability may already have been exploited.

Hot patching without redeployment. The CRA requires vulnerabilities to be remediated without delay. In existing languages, patching means identifying the affected component in a codebase that may be millions of lines long, writing a fix, testing the entire system, and deploying everything. For systems running 24/7 in critical infrastructure, the redeployment cycle itself introduces downtime and risk. Fast patching is not just difficult in existing languages – it is architecturally impossible without a maintenance window.

This gap has widened dramatically since AI coding agents became mainstream. AI generates code faster than developers can review it, audit it, or understand its full architectural implications. This is exactly the environment in which CRA compliance becomes most difficult – and most necessary.

Pipe addresses all three requirements at the language level itself – not through compliance tooling layered on top of existing languages, but through a fundamental property of how the language works.

The Core Property That Changes Everything

Every text-based and most visual programming languages, whether compiled or interpreted, go through a transformation before they can run on a computer. Compiled languages like C++ or Rust are transformed into binary machine code. Scripting languages like JavaScript, TypeScript, and Python can technically be executed line by line without transformation, but at a severe performance cost that makes this impractical for real systems. In practice they are compiled or optimized before execution. Either way, the result is the same: the structural relationships between components – the boundaries between parts, the connections, the data flows – are no longer directly accessible in the running system.

One might think that keeping the original source code accessible solves this. It does not. The problem is the non-visual nature of text-based code. Text has no inherent spatial or relational representation. The connections between components, the boundaries between services, the flow of data through the system – none of these are visible in source code. They must be inferred, imagined, and documented separately. Every new developer, every auditor, every security reviewer must mentally reconstruct the architecture from scratch by reading the code. This becomes impossible when AI coding agents are generating code faster than any human can read it.

This gap between what was designed and what is actually running is where security vulnerabilities hide, where audit trails go cold, and where CRA compliance becomes hardest to demonstrate.

Pipe works differently. Pipe's diagram is structurally identical at design-time and runtime - and what is even more important, it stays visual in both cases. The diagram you see during development is exactly the same as what runs in the production environment. It is a familiar principle: WYSIWYG – What You See Is What You Get. What was once a convenience feature in word processors and web editors becomes, in Pipe, a fundamental security property.

Text-based code is inevitable even in Pipe – low-level operations, algorithms, and computations are still expressed as text inside visual blocks. However, developers control how much application logic lives inside visual blocks as encapsulated text code, and how much exists in the visual realm as composition of blocks. This means developers choose the level of granularity that makes sense for their system. And because Pipeis a visual programming language, all relationships between elements remain visible at every level of the Pipe application – so the system stays transparent regardless of how complex it becomes.

What you see is what runs. Not a representation of what runs. Not documentation of what used to run. The actual running system, visible and structurally accessible as the diagram you drew.

This single property has profound implications for every major CRA requirement.

Security by Design – Enforced, Not Documented

The CRA mandates that security be integrated into product development from the start – security by design, not security by retrofit. Critically, this is not a self-declaration. Manufacturers must demonstrate compliance through conformity assessments, maintain complete technical documentation, and for critical products submit to third-party audits. Regulators and auditors need to verify that the security architecture as designed is the security architecture that actually runs.

In text-based languages, this verification is a documentation exercise. A developer produces architecture diagrams, security specifications, and design documents – then separately writes code that implements them. The auditor reviews the documents and trusts that the code matches. There is no strict guarantee that it does, and deviations from documentation are inevitable. Even if AI is used to restore or regenerate documentation from source code, there is no guarantee it will be complete and precise. This is the fundamental nature of modern large language models – they are probabilistic systems that cannot be made to follow all rules without exceptions. They will inevitably deviate at some point. Documentation generated by AI from code is not a reliable audit artifact.

In Pipe, the diagram is the technical documentation and the running system simultaneously. An auditor does not need to cross-reference design documents against source code – the diagram is the authoritative, current, and complete representation of what is running. Security by design is not a claim that requires verification in Pipe. It is a structural property that is self-evident from the diagram itself.

SBOM – From Static Document to Live Architecture

The CRA requires manufacturers to maintain a Software Bill of Materials (SBOM) – a complete inventory of every component in their product. Most organizations generate SBOMs after the fact, as a snapshot of what they believe is in the codebase. These snapshots go stale immediately and miss components introduced by AI code generation tools.

Some organizations attempt to restore or regenerate SBOMs from source code using AI tools. This does not solve the problem. LLMs are probabilistic systems – they cannot guarantee completeness and accuracy. An AI-generated SBOM may miss components, misidentify dependencies, or introduce inaccuracies. For CRA conformity assessment, a probabilistic artifact is not an audit-grade artifact. Regulators require certainty, not approximation.

Pipe's diagram is a live, continuously accurate component inventory. Every block in the diagram is a running component. Every connection is a live data flow. The architecture you see is the architecture that is running – not what you hoped was running six months ago when the last SBOM was generated, and not what an AI approximated from a codebase it analyzed with inherent uncertainty.

This is not a better SBOM tool. It is a language in which the concept of an outdated or incomplete SBOM is structurally impossible.

The 24-Hour Vulnerability Reporting Clock

From September 11, 2026, the CRA requires manufacturers to file an early warning within 24 hours of becoming aware of an actively exploited vulnerability. A full notification is due within 72 hours.

This timeline assumes you can detect a vulnerability and understand its scope fast enough to report it. In AI-generated codebases – where code is produced faster than humans can read it – this assumption is increasingly unrealistic. Developers are inheriting codebases they did not write and cannot fully audit.

In text-based languages, application-level observability requires explicit action. Developers must identify what needs to be monitored, add log statements to the relevant parts of the source code, rebuild the system, and redeploy. Each monitoring gap discovered requires another cycle of the same process – add logs, rebuild, redeploy. If something is not explicitly logged, the monitoring system is blind to it at the application level. Infrastructure-level monitoring can detect network anomalies and system metrics, but the internal behavior of application components – what data is flowing, what decisions are being made, where an exploit is actually occurring – remains invisible unless a developer anticipated it and added the right log statement in advance. In a codebase generated by AI, this anticipation is structurally impossible.

Pipe's block-level observability changes this. Think of an electronics engineer probing different components on a circuit board with a measurement instrument – the engineer can freely connect to any point on the board and measure voltage, current, or signal behavior without modifying the circuit itself. No soldering required, no board redesign, no remanufacturing. The measurement is non-invasive and immediate.

Pipe works the same way for software. Every block boundary in a Pipe program is independently observable in real time. You can connect to any block's inputs and outputs and observe its behavior without adding log statements to source code or redeploying. An anomaly at a specific block is detectable immediately, its scope is limited to that block by construction, and its impact on downstream components is visible in the diagram.

The 24-hour clock becomes a realistic target when the architecture is visible and every component is independently observable without a single line of code being changed.

Interface Auditability – Simpler by Design

The CRA requires manufacturers to demonstrate that their products can be independently verified for security compliance. For auditors, one of the hardest tasks in text-based systems is understanding how components communicate – what data flows between them, under what conditions, and what happens at the boundaries.

In text-based languages, interfaces require exact contract matching. The caller and the receiver must agree on field names, types, and structure. Optional parameters with defaults solve this problem to some extent – but the fundamental structure remains a flat list of parameters declared in advance by both sides. As interface complexity grows, this flat list grows with it. Imagine auditing an interface with hundreds of parameters in a single flat list – every parameter at the same level, no inherent grouping, no visible hierarchy. Finding a specific parameter, understanding its relationship to others, or verifying that nothing is missing requires reading the entire list from top to bottom. There is no structure to guide the eye or the mind. This is the reality of complex text-based interfaces, and it only gets worse as AI-generated code introduces parameters that no human explicitly designed or reviewed.

Pipe uses a fundamentally different mechanism called overlap. Each block in Pipe has a domain – a tree structure of named nodes representing the data it works with. When two blocks are connected, Pipematches nodes between the source domain tree and the destination domain tree by their path. A node in the source domain matches a node in the destination domain if they share a common path within their respective trees. Matching nodes flow through automatically. Non-matching nodes do not cause errors – the destination block simply uses its default values for any node that has no match in the source. Even zero overlap does not prevent the signal from travelling – it arrives at the destination with all default values. No pre-agreed contract is required.

As interface complexity grows, the difference between the two approaches becomes stark. In text-based languages, complexity means a longer flat list – every additional parameter added to the same level, making the whole structure progressively harder to read and audit. In Pipe, complexity means a deeper tree where related parameters are distributed across different levels of the hierarchy. Related data sits in the same branch. Parameters at each level remain locally comprehensible because only the relevant subset of the interface is visible at any given depth. An auditor navigates the tree branch by branch rather than scanning an undifferentiated list of hundreds of items. The same reason humans use hierarchical filing systems rather than flat lists of files applies here – hierarchy keeps related things together and makes large structures navigable regardless of size.

For an auditor, this has a profound implication. Every interface in a Pipe system is visible in the diagram, its behavior is deterministic regardless of overlap, and there are no hidden contract assumptions that require reading source code to verify. Interface auditability in Pipe is not a matter of reading and cross-referencing – it is a matter of looking at the diagram.

Patching Without Redeployment – The CRA's Hardest Requirement

The CRA requires manufacturers to remediate vulnerabilities without delay, providing security updates free of charge throughout the product's support period.

This sounds straightforward. In practice, patching any modern software system requires identifying the vulnerable component, writing a fix, testing the entire system, and redeploying everything. Text-based systems implement monolithic deployment – even when only a single component needs fixing, the entire module must be rebuilt, tested, and deployed as a whole. And redeployment is rarely a simple step. In modern software teams, a change must pass through a multi-stage CI/CD pipeline – automated tests, integration tests, staging environments, approval gates – any of which can fail and send the fix back to the beginning. A single vulnerability patch can trigger days or weeks of pipeline cycles before it reaches production. For critical infrastructure operating 24/7, redeployment itself introduces risk – the moment of deployment is often when things go wrong.

Pipe enables incremental deployment. Because Pipe's runtime diagram is identical to the design-time diagram, individual blocks can be updated, replaced, or isolated live – without recompiling or redeploying the surrounding system. You patch the block. The rest of the system continues running. No CI/CD pipeline to pass. No staging environment to navigate. No maintenance window required.

Honesty requires acknowledging a real risk here. Patching a single component in isolation can cause cascading failures – a change in one block's behavior can propagate through the system in unexpected ways. This is why testing remains essential even with incremental deployment.

The good news is that Pipe makes testing as incremental as the patching itself. Every block in a Pipesystem is directly accessible and independently testable at any time. A test script can connect to any block's inputs and outputs, inject test data, and verify the response in real time – requiring at most a brief pause at the tested block or impacted scope, while the rest of the system continues running uninterrupted. Testing can be done live, on demand, at any scope – from targeting exactly the blocks affected by the patch to retesting all components of the whole application. The result is a live verification cycle that can be as narrow or as broad as the situation demands.

This is a fundamental shift from monolithic deployment, where fixing one thing means redeploying and retesting everything – to incremental deployment, where the fix and the verification are both applied exactly where they are needed. For CRA compliance, it is the difference between a 14-day patch cycle and a real-time response capability.

Three problems AI created for software engineering and why visual programming languages are the solution.

How Pipe Maps to CRA Requirements

The list below compares how each CRA requirement is addressed today using classical text-based languages, and how Pipe's architecture handles the same requirement by design.

Security by design
Current approach: specified in documents, deviates in implementation.
Pipe: design IS the implementation – identical by construction.

SBOM
Current approach: generated after the fact, goes stale.
Pipe: live architecture diagram = live component inventory.

24-hour vulnerability detection
Current approach: hard in opaque monolith codebases.
Pipe: block-level real-time monitoring at every boundary.

Fast patching
Current approach: requires full monolithic redeployment.
Pipe: incremental block-level in-place fix, no redeployment.

Interface auditability
Current approach: enormous flat parameter lists, hard to audit.
Pipe: hierarchical domain trees, visible and navigable at every level.

Why Pipe Is Different

Visual programming is not a new idea. Generations of tools have attempted to replace or supplement text-based code with diagrams, flowcharts, boxes and arrows. Most have failed to achieve mainstream adoption. Understanding why they failed – and why Pipe is different – requires looking at what made text-based programming languages so successful in the first place.

Text-based languages became the dominant paradigm because their abstractions satisfy four properties that collectively make them both accessible and powerful.

Simple abstractions. Even a programmer with no deep understanding of computer science fundamentals can learn to use a function, a variable, a loop.

Rich and complete set of abstractions. Text-based languages provide enough building blocks – functions, types, control flow, data structures – to build virtually anything without needing to introduce artificial constructs that exist only to paper over gaps in the abstraction set. The set is complete enough to stand on its own.

Powerful abstractions. Simplicity and power coexist. A function is easy to understand and simultaneously capable of expressing arbitrarily complex behavior. The same abstraction that a beginner uses to print "hello world" is used by an expert to implement a database engine.

General-purpose abstractions. The abstractions are not domain-specific. The same language constructs that work for a web server work for a game engine, a scientific simulation, or an operating system. This generality is what makes a language a platform rather than a tool.

Previous visual programming attempts failed because they satisfied some of these properties but not all. Many were domain-specific – powerful within a narrow context but unable to escape it. Others were simple but not rich enough to build real systems without workarounds. Some were complete but not general-purpose. None achieved all four simultaneously.

Pipe's abstractions satisfy all four properties – a combination novel enough to be protected by 10 provisional USPTO patents.

Pipe block is simple – anyone can understand that a block takes inputs, processes them, and produces outputs. No programming background required to grasp the concept. A Pipe diagram is rich and complete – the seven node types, the formal type system, the flow mechanism, and the overlap model together provide enough building blocks to express any application architecture without artificial constructs. Pipe blocks are powerful – the same block abstraction that represents a simple data transformation also represents a complex multi-service orchestration. And Pipe is genuinely general-purpose – the same language constructs apply to a web application, an embedded system, a cybersecurity monitoring platform, or any other domain.

What Pipe adds on top of these four properties – the design-time/runtime identity, the visual structure that persists into execution, the block-level observability – are properties that text-based languages structurally cannot provide. Pipe does not ask developers to give up what made text-based languages successful. It adds what text-based languages have never been able to offer.

A final point worth emphasizing: Pipe does not replace text-based languages – it complements them. Pipesits on top of existing text-based languages, with text code living inside visual blocks where low-level logic is best expressed in traditional form. This means the transition to Pipe from existing codebases does not require a full rewrite. Development teams can adopt Pipe gradually, converting text-based logic to visual components piece by piece, at whatever pace makes sense for their project. The visual layer grows as confidence grows. The investment is incremental.

A CRA-Native Programming Language

There is a technology that provides both the best human comprehension and maximum granularity – visual programming. Visual representation is a clear winner comparing to text and that makes logic perception much easier for human brain.

The CRA is not just a compliance framework. It is a signal that the EU has recognized that the way software is currently built is structurally incompatible with the security standards modern infrastructure requires.

Pipe is a response to that recognition at the language level – not a compliance tool built on top of existing languages, but a programming language designed from the ground up around the properties the CRA requires: visible architecture, auditable components, live observability, surgical patching, and explicit interfaces.

For organizations implementing the CRA or developing tools to support compliance, the conversation about which programming languages are CRA-compatible is only beginning. Pipe makes the case that the answer is not better compliance tooling – it is a different kind of language.

Learn more at at pipelang.com.

How Pipe addresses two cybersecurity crises – at a glance.

 

reddit.com
u/PurpleDragon99 — 1 month ago

Instead of prompting AI your architecture - draw it and export as structured data

https://specrabbit.com

Most discussions about giving AI coding agents architectural context focus on prompt quality - how to write better descriptions, how to structure your system prompt, how to provide enough detail without overwhelming the context window.

I've been thinking about this differently: what if the problem isn't prompt quality but prompt format?

Natural language is inherently ambiguous. No matter how carefully you describe your architecture, you leave gaps - and the AI fills those gaps with assumptions. The more complex the system, the more assumptions compound.

I built SpecRabbit to explore a different approach: instead of describing your architecture in text, you draw it as a graph of typed nodes - UI forms, API endpoints, backend services, databases, connected by explicit named flows. Every parameter defined explicitly inside each node. Global tech stack choices captured once.

The export isn't a visual image - it's the raw graph topology as structured JSON/YAML. Nodes, edges, parameters, flows - directly machine-readable without any image recognition step. You feed it to your AI coding agent as context and it has zero gaps to fill in.

Effectively it replaces a long, ambiguous architectural prompt with a precise, structured data file. Same information, radically different format, no ambiguity.

Curious if anyone has experimented with structured data formats vs natural language for architectural context - and whether you've seen measurable differences in output quality.

reddit.com
u/PurpleDragon99 — 1 month ago

Why text is the wrong format for giving AI coding agents architectural context

Something that doesn't get discussed enough in AI-assisted development: we're using text to specify something that is inherently visual and spatial, and it's causing a systematic problem.

When you describe your architecture to an AI coding agent in text, you leave gaps. Which tables does this service query? How exactly does data flow from this form to that endpoint? What auth level does this API require? The AI fills every gap with a plausible assumption - and those assumptions compound across a complex project until the generated architecture doesn't match what you designed.

This isn't an AI capability problem. It's an input problem. We've always known architecture is a visual concept - we whiteboard it, diagram it, think about it spatially. But then we translate it into text just to hand it to an AI, losing precision in the process.

I got frustrated enough with this that I built a tool to explore a different approach - draw your architecture as typed nodes and explicit flows instead of describing it, then export as JSON/YAML for your AI agent to consume directly: specrabbit.com

But I'm curious how others are handling this. Has anyone found a reliable way to give AI coding agents unambiguous architectural context? Longer prompts don't seem to scale past a certain complexity threshold. Providing existing code as context helps but assumes the code already exists. What are you doing?

reddit.com
u/PurpleDragon99 — 1 month ago
▲ 2 r/SaaS

Why AI coding agents fail at architecture decisions - and what I did about it (Founder here)

After spending months building with AI coding tools, I kept running into the same fundamental problem that I don't see discussed enough: AI coding agents are excellent at writing code but terrible at making architectural decisions from vague text descriptions.

The issue isn't the AI - it's the input. When you describe your architecture in text, you inevitably leave gaps. Which database engine? How exactly does data flow from this UI form to that backend service? What auth method? What happens when this endpoint fails? The AI fills every gap with an assumption, and those assumptions compound across a complex project until what gets generated barely resembles what you intended.

I tried every workaround - longer prompts, more detailed descriptions, providing existing code as context. None of it solved the root problem: text is an inherently ambiguous way to specify architecture.

The insight that changed my approach: architecture is a visual concept. We whiteboard it, we draw it, we think about it spatially. Why are we then translating it into text just to hand it to an AI?

So I built a tool that lets you draw your architecture explicitly instead - typed nodes for every component (UI forms, API endpoints, backend services, databases), connected by named flows that define exactly how data propagates. Global parameters capture your tech stack choices once. The export is a single JSON/YAML file your AI coding agent reads as unambiguous context.

The results in my own projects were significant - far less time correcting AI assumptions, generated code that actually matched my design.

Curious if others have run into the same problem and how you've been handling it. Has anyone found a reliable way to give AI coding agents architectural context beyond just writing longer prompts?

Founder here - the tool is SpecRabbit if anyone wants to look at the approach.

reddit.com
u/PurpleDragon99 — 1 month ago
▲ 0 r/webdev

[Showoff Saturday] SpecRabbit - draw your full-stack architecture explicitly so AI coding agents stop guessing

Hey r/webdev. Sharing something I've been building for the past several months.

https://specrabbit.com

The technical problem I kept hitting: AI coding agents work from text descriptions, which leave architectural decisions implicit. Database schema, API structure, service boundaries - all filled in by the AI based on assumptions. The more complex the project, the worse the drift between what you intended and what got generated.

What I built: a visual canvas where you define your architecture as a graph of typed nodes before writing any code. Node types: UI Form (with typed controls, sections, validation), API Endpoint (HTTP method, path, auth level), Backend service, Database (table definitions, queries), File Storage, Scheduler, Custom Node. Nodes connect via named flows that define exactly how data propagates through the system.

Global project parameters capture tech stack decisions once - backend framework, frontend renderer, database engine, ORM, cloud provider, auth method, compliance requirements (GDPR, HIPAA, SOC 2, PCI-DSS), etc. Applied globally across the generated spec.

Export is a single JSON/YAML file - the complete architectural specification. Feed it to Cursor, Copilot, or any AI coding agent as context.

Tech stack: NestJS, React, PostgreSQL, Docker.

A full user manual is available at https://app.specrabbit.com/help/user-guide.html - covers all node types, flow configuration, global parameters, and export format in detail.

Happy to answer technical questions about the architecture or implementation.

u/PurpleDragon99 — 1 month ago
▲ 68 r/AiBuilders+3 crossposts

I built a tool that lets you draw your full-stack architecture visually so AI generates exactly what you designed

https://specrabbit.com

Hey r/sideprojects - I've been building SpecRabbit for the past few months and just launched it.

The problem I kept running into with AI coding tools (Cursor, Copilot, etc.) is that they guess too much. You describe what you want in text, AI fills in the gaps, and you spend hours fixing things that weren't what you meant.

SpecRabbit lets you draw your architecture instead - UI forms, API endpoints, backend services, databases, all connected with explicit flows. Every node has typed parameters, return types, database queries. Nothing left implicit.

When you export, you get a single JSON/YAML file that contains your entire architecture. Feed it to your AI coding agent and it generates exactly what you drew - no guessing.

Free tier available (2 projects, 15 nodes). Pro is $29 USD/month.

Would love feedback from fellow builders.

u/PurpleDragon99 — 1 month ago

EU AI Act August 2, 2026 Deadline Is Six Weeks Away. Most Organizations Are Not Ready.

https://www.kiteworks.com/regulatory-compliance/eu-ai-act-deadline-compliance/

This is exactly the kind of thing we've been predicting with Pipe (https://pipelang.com). The EU now legally requires companies to track and log what their AI systems are doing, with huge fines if they can't. But most companies aren't ready, because adding that kind of tracking to text code means someone has to go in and manually add log statements everywhere by hand – a ton of ongoing work, and still easy to miss the one spot you actually needed.

On top of that, most companies also can't shut down a single misbehaving AI agent embedded in application without redeploying everything, since normal code doesn't let you isolate just one piece ("Shadow AI").

Both of these are exactly the problems Pipe is built to solve. We've said sometime ago that these AI-driven problems would keep coming our way on their own, and this is one more sign that's exactly what's happening.

https://preview.redd.it/kmfl2pa7iy9h1.png?width=1666&format=png&auto=webp&s=bbd23cfaf515c715ede314d19c95fce54cdeed2c

u/PurpleDragon99 — 2 months ago
▲ 3 r/Visual_Programming+1 crossposts

EU AI Act August 2, 2026 Deadline Is Six Weeks Away. Most Organizations Are Not Ready.

https://www.kiteworks.com/regulatory-compliance/eu-ai-act-deadline-compliance

This is exactly the kind of thing I've been predicting with Pipe. The EU now legally requires companies to track and log what their AI systems are doing, with huge fines if they can't. But most companies aren't ready, because adding that kind of tracking to text code means someone has to go in and manually add it everywhere by hand: a ton of ongoing work, and still easy to miss the one spot you actually needed.

On top of that, most companies also can't shut down a single misbehaving AI agent without restarting everything, since normal code doesn't let you isolate just one piece.

Both of these are exactly the problems Pipe is built to solve. I've said for a while that these AI-driven problems would keep coming my way on their own, and this is one more sign that's exactly what's happening.

u/PurpleDragon99 — 2 months ago
▲ 42 r/AICyberThreat+1 crossposts

Five Eyes agencies say AI is shrinking the vuln-to-exploit window to "months, not years" — what are you actually changing?

The heads of the Five Eyes cyber agencies (NSA, NCSC, ASD, CSE, GCSB) plus CISA put out a joint statement last week. Core argument: frontier AI is compressing the gap between a vuln being discovered and exploited, and that shift is months away, not years.

Source (NSA): https://www.nsa.gov/Press-Room/News-Highlights/Article/Article/4523810/five-eyes-cyber-security-agencies-statement/

Longer NCSC writeup (PDF): https://www.ncsc.gov.uk/sites/default/files/2026-06/Five-Eyes-cyber-security-agencies-statement-ai-shift.pdf

Most of the recommendations are unglamorous basics — reduce attack surface, patch faster, kill legacy, tighten identity. What's new is the urgency, and the explicit "defenders should be using AI too, because attackers already are."

Curious how people here are reacting: are you actually shortening patch SLAs on internet-facing stuff, or is this just more agency messaging? And for anyone drowning in automated-scanner output — is AI helping you separate signal from noise yet, or just adding to the pile?

.

(Disclosure: I work on tooling in this space, so I'm biased toward the "window is closing" read — more interested in whether practitioners are seeing it bite.)

reddit.com
u/PurpleDragon99 — 2 months ago
▲ 7 r/Visual_Programming+2 crossposts

Why the Next Programming Paradigm Has to Be Visual

AI has revolutionized the software development industry by fundamentally changing how software is designed, developed, and maintained. It has made a highly positive impact on coding productivity. However, AI adoption also brought several negative effects that are pushing software development to a breaking point.

Problems AI Created for Software Engineering

Loss of Source Code Control

Enormous velocity of code production by AI has a significantly negative side-effect: software developers are getting overloaded with PRs they need to review, understand and approve. However, developers experience a huge pressure from the management demanding manifold performance gains to justify implementation of AI in an organization. As a result, many PRs are either approved quickly without thorough review, or they are not reviewed at all and approved automatically.

The biggest problem of such approach is a snowball effect: once review quality start to slip – it is very hard to get it back because it would require developers to re-read source code to understand the current state of the codebase. Developers will not be able to fully understand impact of new incoming changes without clear picture of the current codebase. On the other hand, they are under pressure to deliver productivity gains while re-reading all code would take significant time developers just do not have. So, nobody does it and once review quality starts slipping, there is no way back and the team loses control over source code.

As a result, the team understands its own code less and less with every AI-produced change. At the end, only catastrophic incident on production might wake up the management to the fact that the working knowledge of the source code is gone.

AI Fails on Complex Requirements

AI code production starts with specification. Several sentences of a text prompt will be enough for case of a simple application. However, anything more complex would require prepared specification document. Creation of such document is not easy, and it requires special skills. However, let’s assume we have a complete document fully describing what we want in unambiguous way. Would it be enough for AI to produce code exactly to supplied specification? The answer is – it depends on size and complexity of specifications. The more complex and larger the spec is – the more deviations and hallucinations AI makes when generating the code.

Also, there is a phenomenon formally known as the "Lost in the Middle" effect. AI models have a strong positional bias, meaning their performance follows a U-shaped curve: they are highly accurate when relevant information is placed at the very beginning or end of a document, but struggle significantly with the middle. Unfortunately, this is a very nature of the current LLM models and there is not much we can do to change it.

At some level of specifications complexity, the quality of generated code becomes so poor that it is not worth time to do post-generation fixes. Therefore, it becomes faster and easier to throw everything out and re-write manually.

So, what is the solution? It is simple – generating only application scaffolding and/or base-level software primitives easily explainable to AI, while the rest continues to be completed incrementally, one prompt at a time. However, that approach defeats the whole purpose of AI. Developers are forced back to iterative AI-assisted text coding, as AI cannot follow spec without human guidance.

AI Brought Us Security Armageddon

AI reached level of sophistication when it can find vulnerabilities in open-source code in seconds, giving everyone an ability to easily find vulnerabilities and exploit them, whereas before it required high-level experts to do that. This situation becomes even more critical if we consider the fact that modern AI models are stochastic, meaning that if one person run model and found some bugs in certain codebase, another person running same model for the same codebase does not necessarily find same bugs (or any bugs at all). It means someone can accidentally find serious zero-day bugs no one else was able to detect.

The first solution is closing open-source projects. That might help for some time, but there is another way to search for vulnerabilities - dynamic probing of endpoints. AI can tremendously help to compose special requests for server probing. On the other hand, open-source brought significant benefits to software development community. Closing it does not solve the problem fundamentally while it would kill all benefits.

Another solution is speeding up process of software patching. This will quickly become a race between velocity of vulnerability discovery and the speed of software patching. The most likely outcome is that vulnerabilities will be discovered much faster than patching of corresponding bugs, because AI models are constantly improving while patching process has its limits. These limits are imposed by fundamental flaws in both phases of patching – detection and resolution.

Detection is mostly based on analyzing production logs. However, the information gets into the logs from the code and developers must explicitly add these log statements into the code. Today, it is a common practice to have logs statements added to code frequently from the beginning, but they are added only in specific places where developers see their importance. However, many other places are not covered. It means that detection does not see anything not present in logs because log statements were not added for such cases in source code. That makes detection blind in many aspects. To start logging new information, the process assumes full redeployment after adding more log statements. If there is still more logging needed – another redeployment is needed, etc. This makes the process of adding new logs long and complex. This is especially critical for debugging process that often involves an exhausting and repeating cycle of adding/changing logs followed by redeployment when investigating a problem.

Another aspect of patching is resolution – preparing and applying the fix. The first question is how the vulnerable system is going to work while the team is waiting for the patch. Does it need to be brought down or kept online in hope nobody will not exploit this vulnerability while the fix is on its way? In first case, the business might suffer due to limited or disabled functionality. The second case involves risks that exploiting the vulnerability by a malicious third-party might result in real data theft or loss.

Another possible solution is hardening security of open-source libraries. For example, IBM and Red Hat announced Project Lightwell and committed $5B to secure software supply chain. That will improve their protection. However, will they be able to match the speed of vulnerability discoveries and the fact that certain zero-day bugs might be accidentally found just one time during “lucky” AI code analysis rerun nobody else can rediscover? Also, what about mostly domain-specific private and limited distribution libraries? What about vulnerabilities in business logic layer on top of common libraries, especially closed-source code? There are many questions, and Project Lightwell does not provide answers to many of them.

The conclusion of this analysis is that we need more fundamental and long-term solution to these problems brought by AI.

Root Causes of These Problems

Before we dive into the solution, let’s try to identify root causes of the specified problems.

Problems of source code control loss and AI failure to follow complex requirements have the same root cause – the human limits in comprehension of text information. In first case, developers are overloaded with huge amount of text code they need to review. In second case, they need to come back to text-based coding due to LLM-based AI flaws in understanding documents and following its guidelines.

The root cause of limited detection and resolution capabilities is low granularity of modern software. It means that we deploy software in large modules: adding new logs and replacing compromised code both require redeployment of the whole module. There are attempts to increase granularity of software – for example, via plugins or microservices. However, all attempts to split software to smaller components resulted in sharp increase in overall complexity of managing the entangled graph of component interactions. For example, many companies concluded that microservice architecture is too complex for their projects that might easily be re-implemented as a monolith as a much cheaper alternative in terms of software complexity management.

Why do we need high granularity? This is because we can get direct access to a single small component that we can fix, update, isolate, measure or debug in-place at runtime, instead of going full long cycle of adding logs or updating a compromised component followed by redeploying the whole module.

Three problems AI created for software engineering and why visual programming languages are the solution.

Why Visual Programming Is the Solution

There is a technology that provides both the best human comprehension and maximum granularity – visual programming. Visual representation is a clear winner comparing to text and that makes logic perception much easier for human brain.

Maximum granularity provides multiple benefits:

  • In-place component fixing, update or isolation at runtime – every visual block is directly accessible during execution, meaning a compromised or underperforming component can be fixed, updated, or isolated in production without recompilation or redeployment.
  • Dynamic telemetry collection by connecting to inputs/outputs in real-time without the need to add logs into source code and redeployment – any block can be probed directly at runtime by connecting to its inputs and outputs, eliminating the need to add log statements to source code and redeploy just to start collecting new diagnostic data.
  • Painless debugging by direct probing of any component at runtime – debugging becomes trivial as every block can be interrogated directly at runtime, replacing the exhausting cycle of adding logs, redeploying, and inferring what happened with direct observation of what is actually going on.

Some of these benefits allow almost instant reaction to attempts to breach security, especially if application self-healing engine is involved in the process of collecting telemetry and reaction to application security breaches. In fact, visual programming is the perfect match with self-healing engine that can react on threats instantly. Text-based application forces self-healing engine to wait for a full cycle of source code fix and CI/CD redeployment, making it impossible to react to threats in real time.

The next question is what specific visual programming language we can use. There is the wide selection of them: LabVIEW, Node RED, Simulink. However, all of them tend to shift in one direction: they are either simple but general-purpose or sophisticated but domain specific. We need a visual language that is both general-purpose and sophisticated, because this is the quality of all text-based language we intend to replace with visual diagrams. There is one such recently introduced visual language: Pipe (see pipelang.com). This is general-purpose visual programming language designed specifically to be able to replace text-based code.

Why Pipe Is The Best Candidate

Visual programming language Pipe implements multiple unique concepts that makes it a pretty sophisticated language. I will mention just some of them because they are relevant to the topic of this article.

Execution nodes of Pipe are called runlets, and each of them may contain other runlets inside. As a result, runlets compose tree-like structure with leaves containing text-based code. Such structure is ideal for gradual migration from text-based code to visual diagrams: code gradually recedes in tree leaves while Pipe runlet structure grows upwards, absorbing more and more logic from text-based code. Eventually, leaf nodes will contain only a thin layer of text code handling external intercommunication, while all business logic lives in the visual structure above. Pipe provides full formal API for integration with text-based languages as a part of language specification, making it possible to integrate Pipe with almost any text-based programming language.

Another relevant Pipe feature is designed to solve very painful problem of reconciling interfaces between different components. Pipe solution is providing binding model based on concept of domain – tree-like data structures similar to JSON. When output of one Pipe component is connected to input of another one, output and input generally have different assigned domains. To reconcile them, only data between domain tree nodes with common paths in both domains are transferred – this process is called domain overlap. Domain tree nodes on receiving end without match in domain from sending side take explicit or implicit default value. Overlap represents the case of extremely loose coupling while supporting data type safety: matching domain nodes must have compatible data types for domain connectivity to be valid.

Together, runlets and domains make Pipe uniquely suited for the post-AI era: runlets provide the granularity needed for runtime observability and surgical fixes, while domains ensure that the connections between components remain type-safe, auditable, and comprehensible to human reviewers.

Why High Granularity Works in Pipe But Not in Text Code

The obvious question is: if high granularity is so valuable, why did microservices and plugin architectures fail to deliver it without massive management overhead? There are three reasons why Pipe is different.

The first is topology. Microservices create an arbitrary dependency graph – any service can call any other, and as the system grows, this graph becomes impossible to reason about. Teams that went all-in on microservices often found themselves building expensive internal platforms just to manage the complexity, or quietly migrating back to monoliths. Pipe's runlet hierarchy is a tree between workflows – each composite runlet contains only its direct children, and you always work at one level at a time. The structure above and below stays out of the way.

But that raises an obvious follow-up: what about inside a single workflow? Connections between components within a diagram can form an arbitrary graph – and that is true. The difference is that you can see it. Every connection is drawn on the diagram in front of you. In a microservice system, understanding which services are talking to which requires log tracing, dependency maps, and usually a dedicated observability platform. In Pipe, the complexity is visible and bounded within a single diagram. You are never looking at the whole system at once – just the level you are working on.

The third is coupling. Classical APIs require both sides to agree on a shared contract. Change one side and you risk breaking every consumer. Pipe's domain overlap works differently – each component defines its own domain independently, and data flows only where those domains share compatible paths. Components can evolve without coordination. That is a qualitatively different kind of loose coupling, not just a variation on what microservices already do.

Conclusion

AI brought not only positive changes to software development industry, but also many new challenges. Their severity requires rethinking the whole approach of software development. Problem analysis points to visual programming as the best long-term solution. Visual programming language Pipe provides the best set of features for transitioning to new post-AI world.

The GUI revolution made computers accessible to everyone. Visual programming is the second half of that revolution – making the act of programming itself comprehensible, auditable, and secure by design. Pipe is being built to be that language. Learn more at pipelang.com.

u/PurpleDragon99 — 2 months ago