Intelligenism Agent Framework

Why IAF Exists

IAF is not just another multi-agent framework. It is the first practical implementation of Intelligenism — a theoretical framework on how intelligence emerges in organisations, whether human, artificial, or hybrid.

The AI industry has no shortage of agent frameworks (CrewAI, AutoGen, LangGraph, Google ADK, and many more). They all solve the same problem: "how to make multiple agents collaborate on tasks." But they all share the same blind spot: they hardcode a specific collaboration paradigm into the framework itself, then call it "flexible" because you can configure parameters within that paradigm.

IAF starts from a different premise — an epistemological one.

From single neurons to complex neural networks, intelligence exhibits a bottom-up construction pattern. Regardless of whether we look at complex intelligent systems or individual neurons, their boundaries are clear, and individuals maintain a high degree of independence from one another. This means the complexity and intelligence potential of a neural network comes from the connections between individuals, not from making the individuals internally more complex. Therefore, maintaining the independence of individuals or small units, and expressing complexity outside the individual, is the essence of connectionism. — Thinking, Conception and Construction of Intelligenism

This principle directly shapes IAF's architecture: every agent is a complete, independent unit. Complexity lives in the connections between agents (the Dispatch and Tube layers), not inside any single agent's code.


Possibility Management vs Certainty Management

Intelligenism begins with an epistemological judgment: humans cannot assert that any theory is absolute truth. Since we cannot assert absolute truth, the way to evaluate a theory should shift toward "fitness" — whether the theory can effectively guide action and produce positive value in a given scenario. — Thinking, Conception and Construction of Intelligenism

2026 is a period of profound transformation in AI. The only thing we can be certain of is that we are in the middle of a revolution — everything else is uncertain. This creates a critical risk: if we bet resources on a framework built on certainty-based assumptions, when that assumption is falsified, all accumulated advantages collapse.

Most multi-agent frameworks practice certainty management. Their developers assume they know which collaboration paradigm works best, so they deeply integrate that paradigm into the framework's core. CrewAI's identity is role-playing sequential execution. AutoGen's identity is multi-round dialogue with consensus convergence. If you could swap these out, these frameworks would lose their reason to exist.

IAF practices possibility management. It assumes that more multi-agent collaboration modes will emerge in the future, and therefore refuses to assert from a position of absolute truth that any one mode is necessarily better.

What this means in practice:

The core difference: traditional frameworks offer freedom inside a fence. IAF makes the fence ~2000 lines tall — low enough to step over at zero cost.


Core Concepts

Fundamental Loop

The Fundamental Loop is a complete, self-contained agent runtime. Every agent has its own independent copy containing:

Current implementation: ~267 lines of Python for the engine core, plus shared infrastructure. The engine uses a five-layer message assembly model:

LayerSourceWhen LoadedPurpose
1All files in context_filesEvery callAgent's identity, knowledge, routing
2Skill .md files matched by triggerOn keyword matchScenario-specific task instructions
3history.jsonlChat mode onlyConversation memory
4Current user messageEvery callThis turn's input
5Trim passEvery callEnsure context fits the window

Agent Capability Model

LayerCarrierWhen LoadedAnalogy
Identity & Knowledgecontext_files (.md)Every callKnowledge in the brain
Conditional Instructionsskills (.md + trigger rules)On keyword matchConditioned reflexes
Execution Abilitytools (*_tools.py)Every call (schema injected)Hands and feet

Available Tool Files

FileToolsCapabilityDefault
file_tools.pyread_file, write_file, list_dirRead/write files, list directoriesYes
shell_tools.pyrun_shellExecute terminal commandsNo
tube_tools.pytrigger_tube, list_tubes, tube_logTrigger tubes, check status, read logsNo
dispatch_tools.pyrun_dispatch, list_dispatch_strategiesInitiate multi-agent collaborationNo

Drop a tool file into agents/xxx/tools/ — auto-discovered, zero code changes.

Additive Complexity

Shared-engine frameworks have multiplicative complexity: 3 agents × 2 trimming strategies × 4 tool sets = 24 combinations, each with potential interaction bugs. Adding one agent multiplies the complexity by a coefficient.

IAF has additive complexity: each agent's Fundamental Loop is always ~267 lines. Adding a 4th agent means one more 267-line copy. Each copy evolves independently, affecting nothing else.

True Parallel Execution

Because each Fundamental Loop runs as an independent process:


Four-Layer Architecture

The framework consists of four fully independent layers. Units within each layer are also isolated from each other. The four layers communicate through Flask APIs and the filesystem — no layer invades another.

LayerWhat It DoesUnit GranularitySelf-Containment
AgentComplete runtime for a single intelligent agentOne folder = one agentCopy the folder to deploy
DispatchMulti-agent collaboration orchestrationOne folder = one collaboration strategyCopy the folder to deploy
TubeSignal topology — wiring between building blocksOne JSON entry = one signal pathwayEdit JSON to activate
UIHuman-machine interaction interfacesOne HTML file = one feature pageDrop the file to use

Plus cross-cutting infrastructure:

Layer 1: Agent Layer

The bottom execution unit. Each agent owns a complete Fundamental Loop copy (engine, tools, context, identity, skills). Agents don't know Dispatch or Tube exist. Two run modes: chat (with history, for user interaction) and batch (clean context, for scheduled tasks).

Layer 2: Dispatch Layer

Multi-agent collaboration orchestration. Each collaboration strategy is an independent folder containing its own orchestration logic, context injector, config, and optional UI page. Dispatch treats agents as data sources (reads their context_files, skills, model config) but calls lib/llm_client.call_llm() directly — zero coupling with agent engines.

Analogy: Agents are actors, Dispatch is the director. The director has actors read their own persona (SOUL.md) but can also hand them an entirely new script. The performance records on set belong to the director (sessions/), not the actor's personal diary (history.jsonl).

Three-layer context isolation:

Context TypeOwned ByStorage LocationPurpose
Agent chat historyAgentagents/xxx/history.jsonlUser-agent interaction memory
Dispatch collaborationDispatchdispatch/xxx/sessions/*.jsonlMulti-agent collaboration process
Per-call contextcontext_injectorIn memory (not persisted)Assembly result for a single LLM call

Agents are unaware they participated in a Dispatch. Dispatch never touches an agent's history.jsonl. Isolation is an architectural guarantee.

Layer 3: Tube Layer

The signal topology layer — the wiring between building blocks. When a condition is met, trigger a target to execute. Same three agents plus two dispatches — different Tube configurations produce entirely different system behaviour: serial pipelines, parallel fan-out, feedback loops. The blocks haven't changed; the wiring has. See the Tube in Detail section below.

Layer 4: UI Layer

Yellow-pages index + independent HTML pages. Each page is self-contained, communicates with the backend through APIs. No SPA, no shared UI engine — adding a page means dropping an HTML file into a directory.

TypeLocationRoute
Yellow pagesindex.htmlGET /
Basic chatchat.htmlGET /chat
User pagespages/*.htmlGET /pages/<name>
Dispatch UIdispatch/xxx/*.htmlGET /dispatch/<name>
Tube dashboardpages/tube-dashboard.htmlGET /pages/tube-dashboard

Mapping to Intelligenism Theory

Theory ConceptArchitecture Implementation
Autonomous unit of an intelligent consortiumEach agent's independent Fundamental Loop
Carbon-silicon symbiosis, loose couplingProcess isolation + filesystem communication + AI operability
Pluggable collaboration paradigmsIndependent strategy folders under dispatch/
Rewirable signal topologyDeclarative configuration via tubes.json
Deterministic scheduling without LLMTube orchestration is pure Python, not probabilistic LLM judgment
Possibility management over certainty managementFull code copies instead of parameterised configuration
Value lies in the wiring, not the blocksAgent + Dispatch + Tube assembly knowledge is the competitive moat

Dispatch in Detail

Dispatch Folder Structure

FileRole
dispatch.pyOrchestration logic: round control, agent call order, termination conditions
dispatch_base.pyInfrastructure: tool loop, LLM parsing, staging
context_injector.pyContext assembly: reads agent files per config
session_manager.pySession CRUD
dispatch_config.jsonParticipating agents, context_files, round limits
rules/*.mdAgent role definitions within the collaboration
sessions/Complete records of collaboration processes
*.html(Optional) Dedicated UI page

Context Injector

Each Dispatch strategy has a context_injector.py that selectively reads from agent folders based on dispatch_config.json:

{
  "agents": {
    "default": {
      "display_name": "Strategist",
      "provider": "from_agent",
      "model": "from_agent",
      "context_files": [
        "agents/default/SOUL.md",
        "dispatch/roundtable/rules/default.md",
        "dispatch/roundtable/staging/session_history.md"
      ]
    }
  },
  "turn_order": ["default", "agent2"]
}

provider and model set to "from_agent" reads from the agent's own agent_config.json. Or you can override directly — the same agent can use different models in different collaboration strategies.

Data Flow

dispatch.py
 ├── reads dispatch_config.json (which agents, what to read from each)
 ├── context_injector.py (selectively reads from agent folders per config)
 │   ├── agents/xxx/SOUL.md ← read or not, config decides
 │   ├── agents/xxx/skills/x.md ← which ones, config decides
 │   └── agents/xxx/agent_config.json ← get model/provider
 ├── assembles Dispatch's own context (session history, task instructions)
 └── calls lib/llm_client.call_llm() directly

Tube in Detail

Tube is the framework's third dimension — the signal topology layer. It describes signal pathways between building blocks: when a condition is met, trigger a target to execute.

Existing multi-agent frameworks share a common problem: the pipes between building blocks are cast in place.

DimensionCrewAI / LangGraph / ManusIntelligenism
Collaboration protocolBuilt-in fixed patterns / fixed three-roledispatch/ pluggable folders
Signal topologyHardcoded, untouchabletubes.json declarative rewiring

Tube Anatomy

ElementDescription
TriggersWhat condition activates it (pluggable: cron, manual, API, file watch, etc.)
StepsWhat to do sequentially after activation (Agent, Dispatch, another Tube)
PayloadData passed from trigger source to target (prompt, file path, upstream output)

tubes.json — Single Source of Topology Truth

[
  {
    "id": "doc_analysis_pipeline",
    "enabled": true,
    "triggers": [
      { "type": "cron", "config": { "expr": "30 9 * * *" } },
      { "type": "manual" }
    ],
    "steps": [
      { "type": "agent", "id": "doc_processor", "mode": "batch",
        "payload": { "prompt": "Process and analyse documents" } },
      { "type": "dispatch", "id": "roundtable",
        "payload": { "message": "Brainstorm based on analysis results" } },
      { "type": "tube", "id": "send_report" }
    ]
  }
]

Trigger Sources

SourceTriggered ByMechanism
Crontube_runner (automatic)croniter time comparison, 15-second polling
APIHuman / AI agent / external systemPOST /api/tube/trigger → flag file
Tube chainUpstream tube stepsteps with type=tube → inline execution

Drive Targets

Target TypeExecution
Agentsubprocess → run_agent.py
Dispatchsubprocess → run_dispatch.py
TubeInline recursive execution (depth limit: 5)
CustomDrop .py in targets/, implement build_command()

Execution Model

Tube API Endpoints

MethodPathFunction
GET/api/tubesList all tubes + real-time status
GET/api/tube/statusLightweight status query
POST/api/tube/triggerManual trigger
GET/api/tube/logQuery logs (supports filtering)
GET/api/tube/log/groupedLogs grouped by tube
DELETE/api/tube/logClear logs

The Tube Dashboard (pages/tube-dashboard.html) provides real-time monitoring: tube list with live status, manual trigger buttons, expandable config details and step payloads, scrolling execution logs, and per-tube log clearing. Auto-polls every 10 seconds.


File System as Communication Protocol

Agents communicate through the file system — output files, monitor status files, log files, flag files. Not through shared memory or function calls.


AI Operability

IAF is not just "an AI framework for humans" — it is an AI framework that AI can also operate. The design features — minimal codebase, filesystem communication, JSON declarative config, process isolation — make the framework fully controllable by both carbon-based and silicon-based intelligence.

A top-tier AI agent taking over a framework must pass four gates: understand, modify, deploy, monitor. IAF is clear on every gate:

GateIAFTraditional Frameworks
Understand~2000 lines, fits in one context window10,000+ lines, requires modular comprehension
ModifyEdit JSON and Markdown filesWrite Python/SDK code conforming to framework constraints
Deploypython3 chat_server.py — one commanddocker compose / kubernetes
Monitorcat tube_log.jsonl — plain textDedicated dashboards / monitoring APIs

Directory Structure

intelligenism-agent-framework/
├── config.json                     # Global config (provider connections)
├── lib/                            # Shared infrastructure
│   ├── llm_client.py               # HTTP LLM calls + retry + error classification
│   └── token_utils.py              # Token estimation
├── template/                       # Fundamental Loop template (copy to create agents)
│   ├── core/
│   │   ├── direct_llm.py           # Engine core (~267 lines)
│   │   └── tool_executor.py        # Tool auto-discovery registry
│   ├── tools/
│   │   └── file_tools.py           # Default tool set
│   ├── context/
│   │   └── sliding_window.py       # Default trimming strategy
│   ├── skills/                     # Empty directory (populate per agent)
│   ├── SOUL.md                     # Identity template
│   └── agent_config.json           # Agent config template
├── agents/                         # Agent instance directory
│   └── default/                    # (same structure as template/)
├── dispatch/                       # Collaboration strategy library
│   └── roundtable/                 # Roundtable discussion strategy
│       ├── dispatch.py             # Orchestration logic
│       ├── dispatch_base.py        # Infrastructure (tool loop, LLM parsing)
│       ├── context_injector.py     # Context assembly
│       ├── session_manager.py      # Session management
│       ├── dispatch_config.json    # Participating agents + file read rules
│       ├── context/                # Dispatch-specific trimming
│       ├── rules/                  # Agent role definitions
│       ├── sessions/               # Collaboration records
│       ├── staging/                # Runtime temporary files
│       └── roundtable.html         # Dedicated UI page
├── tube/                           # Signal topology layer
│   ├── tube_runner.py              # Main loop engine
│   ├── triggers/                   # Pluggable trigger sources
│   │   ├── cron.py                 # Cron scheduling
│   │   └── manual.py              # Manual / API trigger
│   ├── targets/                    # Pluggable drive targets
│   │   ├── agent.py                # Drive agent
│   │   └── dispatch.py             # Drive dispatch
│   ├── run_agent.py                # Agent CLI entry
│   ├── run_dispatch.py             # Dispatch CLI entry
│   ├── tubes.json                  # Single source of topology truth
│   ├── tube_log.jsonl              # Execution log
│   └── manual_triggers/            # Flag file directory
├── chat_server.py                  # Web server / router + Tube Runner
├── dispatch_routes.py              # Dispatch Flask Blueprint
├── tube_routes.py                  # Tube Flask Blueprint
├── index.html                      # Yellow pages (feature index)
├── chat.html                       # Basic chat interface
├── pages/                          # User-created pages
│   └── tube-dashboard.html         # Tube monitoring panel
└── tests/
    └── test_template.py

Four Orthogonal Extension Dimensions

The framework's four extension dimensions are fully orthogonal — a change in any one dimension does not affect the other three.

OperationHowCode Changes
Add new agentcp -r template/ agents/xxx/0 lines
Add tool to agentDrop .py in agents/xxx/tools/0 lines
Add knowledgeAdd .md file, update context_files0 lines
Add skillDrop .md in agents/xxx/skills/ + trigger rule0 lines
Change trimmingSwap .py in agents/xxx/context/0 lines
Add collaborationAdd folder in dispatch/0 lines
Add signal pathwayAdd entry in tube/tubes.json0 lines
Add trigger typeDrop .py in tube/triggers/0 lines
Add drive targetDrop .py in tube/targets/0 lines
Add LLM providerAdd entry in config.json0 lines
Add UI pageDrop .html in pages/0 lines

Folder = Product

Product UnitFormUse Case
AgentFolderDomain-specific agents (news gathering, code review, translation, etc.)
DispatchFolderCollaboration strategies (brainstorm, debate, serial conversion, etc.)
TubeJSON configSignal topology recipes and trigger chain designs
HTMLFilePurpose-built human-machine interaction interfaces

The core difference from traditional SaaS products: what users get is not a black-box service, but a fully disassemblable, learnable, and modifiable blueprint.


Key Design Principles


Comparison with Existing Frameworks

DimensionCrewAI / AutoGen / LangGraphManusIAF
Code size10,000+ linesClosed source~2000 lines
Engine modelOne shared engineFixed three-roleEach agent gets independent engine
Complexity growthMultiplicativeHidden internallyAdditive
ParallelismAsync pseudo-parallelCloud parallelMulti-process true parallel
Fault isolationNone (one crash = all crash)UnknownComplete isolation
CustomisabilityWithin config parametersNot customisableAny line of code
Collaboration paradigmHardcoded in frameworkFixed three-rolePluggable, independent folders
Signal topologyHardcodedHardcodedtubes.json declarative rewiring
AI operabilityDifficult (10k+ lines + SDK)Impossible (closed source)Fully operable (2000 lines + filesystem)
Product unitCode (hard to circulate)SaaS serviceFolder / JSON entry (tradeable)
Agent communicationShared memory / function callsInternalFile system
DependenciesMany third-party librariesN/Aflask + requests + croniter
Management philosophyCertainty managementCertainty managementPossibility management

Tech Stack

The entire framework depends only on Python + HTML. No Node.js, no npm, no frontend build tools.

pip install flask requests croniter

That's it.


Current Status: v1.0


Getting Started

# Clone the repo
git clone https://github.com/IntelligenismCommercialDevelopment-LLC/intelligenism-agent-framework.git
cd intelligenism-agent-framework

# Set up virtual environment
python3 -m venv venv
source venv/bin/activate

# Install dependencies
pip install flask requests croniter

# Configure your LLM provider in config.json

# Create your first agent
cp -r template/ agents/my_agent/

# Edit agents/my_agent/SOUL.md to define your agent's identity

# Start the server
python3 chat_server.py

# Open http://localhost:5000

The Bigger Picture

IAF is one component of a larger knowledge production system rooted in Intelligenism theory:

LayerComponentWhat It Does
Knowledge ExpressionAITF Protocol (open standard)How knowledge is structured and communicated between agents
Knowledge ProductionIAF (this framework)How agents produce and collaborate on knowledge
Knowledge RetrievalAITF-optimised embedding modelHow structured knowledge is searched and retrieved
Knowledge VisualisationLanceDB + DashboardHow knowledge is viewed and used

Each layer is independently developed and independently valuable. Together, they form a complete pipeline from raw information to structured, retrievable, actionable knowledge.


Links