LIACL -- Inter-Agent Compression Language
Version: 1.1 Origin: PureBrain.ai Status: Validated -- 53-68% token savings, 100% information fidelity Portable: Yes -- any multi-agent system can adopt this skill Changelog: v1.1 adds memory snippet compression + progressive disclosure integration (see Section 8)
What This Is
LIACL (pronounced "lye-uh-kel") is a structured message protocol for agent-to-agent communication that reduces token consumption by 55-72% while preserving 100% information fidelity.
Instead of verbose natural language dispatches between agents, LIACL uses shortcodes, reference pointers, and a header-values pattern inspired by TOON format, Google A2A Protocol, and AgentPrune (ICLR 2025).
Why it matters: In a multi-agent system, inter-agent communication is the single largest drain on context budget. A typical task dispatch consumes 800-2,500 tokens in natural language. LIACL reduces that to 250-700 tokens with zero information loss. Over a session with 40+ agent messages, that's 6,800-13,600 tokens saved -- enough for 1-2 additional full agent interactions before context compaction.
Quick-Reference Card (~120 tokens)
Paste this into any agent prompt to enable LIACL:
## LIACL v1.0 Quick Reference
You understand the Inter-Agent Compression Language (LIACL).
Messages use: @MSG {TYPE} {PRIORITY} {TIMESTAMP} / FROM:X TO:Y / body / @END
Types: TASK (dispatch), STAT (status), RSLT (result), ESCL (error)
Priority: P1(critical) P2(high) P3(normal) P4(low) P5(idle)
Operations: CRT(create) UPD(update) RSC(research) ANL(analyze)
FIX(fix) TST(test) DPL(deploy) INT(integrate) GEN(generate)
SYN(sync) RPT(report) OUT(outreach) DRF(draft) PUB(publish)
DEL(delete) OPT(optimize) DOC(document) MON(monitor) CFG(configure)
SCN(scan) ARC(archive) ENR(enrich) FLT(filter) SCH(schedule)
Errors: E-AUTH E-RATE E-COST E-DEPS E-DATA E-TOOL E-API E-HUMAN
Refs: mem: del: tool: cred: cfg: gdoc: gsheet: task:
Protocol Design
Message Structure
Every LIACL message follows this pattern:
@MSG {type} {priority} {timestamp}
FROM:{sender} TO:{receiver}
---
{body fields per message type}
---
@END
Four Message Types
| Type | Name | Direction | Purpose |
|---|---|---|---|
TASK |
Task Dispatch | Conductor -> Agent, Lead -> Specialist | Assign work |
STAT |
Status Update | Any -> Upward | Report progress |
RSLT |
Result Return | Specialist -> Lead -> Conductor | Deliver completed work |
ESCL |
Error Escalation | Any -> Upward | Report failure, request help |
Priority Levels
| Code | Level | When to Use |
|---|---|---|
P1 |
Critical | System down, data loss risk, human waiting |
P2 |
High | Blocking other work, deadline-sensitive |
P3 |
Normal | Standard task, no urgency |
P4 |
Low | Nice-to-have, background work |
P5 |
Idle | Only if nothing else to do |
Timestamps
Format: YYYYMMDD-HHMM (24hr, UTC assumed unless noted)
Shortcode Reference
Operations (30 codes)
| Code | Verb | Code | Verb | Code | Verb |
|---|---|---|---|---|---|
CRT |
Create | UPD |
Update | DEL |
Delete |
RSC |
Research | ANL |
Analyze | DPL |
Deploy |
TST |
Test | RVW |
Review | OPT |
Optimize |
FIX |
Fix | INT |
Integrate | MIG |
Migrate |
DOC |
Document | MON |
Monitor | CFG |
Configure |
SCN |
Scan | GEN |
Generate | SYN |
Sync |
ARC |
Archive | RPT |
Report | OUT |
Outreach |
DRF |
Draft | ENR |
Enrich | FLT |
Filter |
PUB |
Publish | SCH |
Schedule | EXP |
Export |
IMP |
Import | QRY |
Query | XFR |
Transfer |
Common Domains (18 codes)
These are platform/tool shortcodes. Extend this list with your own domains.
| Code | Domain | Code | Domain | Code | Domain |
|---|---|---|---|---|---|
LI |
EM |
WP |
WordPress | ||
GD |
Google Drive | GS |
Google Sheets | BX |
CRM |
TG |
Telegram | TR |
Trello | AP |
Apify |
PB |
PhantomBuster | IN |
Instantly | GA |
Google Analytics |
SC |
Search Console | AN |
Anthropic/Claude | HU |
Hunter.io |
BR |
Brevo | UP |
Upwork | CV |
Canva |
Agent/Role Codes (Extensible)
Base roles that apply to any multi-agent system:
| Code | Role | Code | Role |
|---|---|---|---|
PRI |
Primary/Conductor | BD |
Backend Dev |
WEB |
Web/Frontend | SAL |
Sales |
BIZ |
Business | RES |
Research |
INF |
Infrastructure | COM |
Communications |
OPS |
Operations | CC |
Content Creation |
SEO |
SEO/AEO | PM |
Paid Media |
CS |
Customer Success | AR |
Analytics |
LEG |
Legal | GEN |
General |
HUM |
Human/Steward | AF |
Accounting/Finance |
Error Codes (15 codes)
| Code | Category | Code | Category |
|---|---|---|---|
E-AUTH |
Authentication failure | E-RATE |
Rate limit exceeded |
E-COST |
Budget/cost limit | E-DEPS |
Dependency not ready |
E-DATA |
Data quality issue | E-TOOL |
Tool/script failure |
E-API |
External API issue | E-CFG |
Configuration problem |
E-PERM |
Permission denied | E-TIME |
Timeout exceeded |
E-CTX |
Context window exhausted | E-GATE |
QA gate blocked |
E-HUMAN |
Human approval required | E-SCOPE |
Scope creep detected |
E-DUP |
Duplicate work |
Context Compression
Reference Pointers
Instead of inlining content, reference it:
| Prefix | Points To | Example |
|---|---|---|
mem: |
Memory file | mem:knowledge/ecosystem-overview.md |
del: |
Deliverable | del:outreach-playbook.md |
tool: |
Script/tool | tool:signal_engine.py |
cred: |
Credential file | cred:service-account.json |
cfg: |
Config file | cfg:app_config.json |
gdoc: |
Google Doc ID | gdoc:1FSL_nFRptxgDm... |
gsheet: |
Google Sheet ID | gsheet:1REbSQpbKKdu3O... |
gfolder: |
Drive Folder ID | gfolder:1em6DDImDYbN8S... |
task: |
Task queue reference | task:#38 |
CTX Block
Group context references at the top of a message body:
CTX: cred:service-account.json | tool:signal_engine.py | gsheet:1REbSQpb...
Message Templates
TASK Dispatch
@MSG TASK P3 20260227-1400
FROM:PRI TO:SAL
---
OP: RSC+ANL
DOMAIN: LI
OBJ: Find 10 CPG brand managers at target companies
CTX: gsheet:1Fw0XtXX... (Companies tab) | tool:signal_engine.py
CONSTRAINTS: LinkedIn only, director+ seniority, US-based
OUT: gsheet update + summary
---
@END
STAT Update
@MSG STAT P3 20260227-1430
FROM:SAL TO:PRI
REF:task:#42
---
STATE: WORKING
PROGRESS: 6/10 profiles found
BLOCKED: None
ETA: 30min
---
@END
RSLT Return
@MSG RSLT P3 20260227-1500
FROM:SAL TO:PRI
REF:task:#42
---
STATE: DONE
SUMMARY: 10 CPG brand managers identified, emails verified for 7/10
OUTPUT: gsheet:1Fw0XtXX... (People tab, rows 103-112)
METRICS: 70% email hit rate, 3 VP-level, 4 Director, 3 Manager
NEXT: Recommend P3 OUT sequence via IN
---
@END
ESCL Escalation
@MSG ESCL P2 20260227-1545
FROM:BD TO:PRI
REF:task:#8
---
ERR: E-AUTH
STATE: BLOCKED
DESC: Service account delegation returning 403 on write
TRIED: Token refresh, 3 retries, scope verification
NEED: Admin to verify delegation
IMPACT: Task queue not updating, team visibility blocked
---
@END
Before/After Examples
Example 1: Simple Task
BEFORE (287 tokens):
Hey Backend Dev team, I need you to update our task queue Google Sheet. The sheet ID is 1REbSQpbKKdu3OQGcQBnpqXdMI. Please go to the Tasks tab and update row 39 (task E-4) to mark it as DONE. The credentials for Google Sheets access are in the service account file, and you'll need to use domain-wide delegation. After updating, please confirm the change was successful and report back.
AFTER (89 tokens):
@MSG TASK P3 20260227-0900
FROM:PRI TO:BD
---
OP: UPD
DOMAIN: GS
OBJ: Mark E-4 DONE in Tasks tab row 39
CTX: gsheet:1REbSQpb... | cred:service-account.json
AUTH: delegate
OUT: confirmation
---
@END
Savings: 69%
Example 2: Complex Research
BEFORE (412 tokens):
Research team, I need a comprehensive analysis. We're looking at enterprise CPG companies that might be good targets for our experiential marketing services. I need you to research the top 10 mid-cap CPG companies (between $1B and $20B market cap) that have recently shown signals of investing in experiential or consumer activation marketing... [continues with detailed instructions about sources, output format, timeline, etc.]
AFTER (118 tokens):
@MSG TASK P2 20260227-1000
FROM:PRI TO:RES
---
OP: RSC+ANL
DOMAIN: LI+UP
OBJ: Top 10 mid-cap CPG ($1-20B mcap) with experiential marketing signals
SOURCES: Google News, LinkedIn posts, earnings calls, job postings
CRITERIA: Recent experiential/activation spend, new CMO/VP Marketing, agency RFPs
OUT: Ranked list with company, signal, contact, rationale
DEADLINE: EOD
CTX: mem:knowledge/ecosystem-overview.md | del:top-10-target-accounts.md
---
@END
Savings: 71%
Token Savings Summary
| Message Type | Before (avg) | After (avg) | Savings |
|---|---|---|---|
| Task Dispatch (simple) | 150-300 | 50-100 | 55-67% |
| Task Dispatch (complex) | 300-600 | 90-180 | 65-72% |
| Status Update | 100-200 | 35-60 | 65-70% |
| Result Return | 150-350 | 60-120 | 60-66% |
| Error Escalation | 120-250 | 40-70 | 65-72% |
Cumulative Session Impact
| Session Type | Messages | Before | After | Saved |
|---|---|---|---|---|
| Light (20 msgs) | 20 | ~5,000 | ~1,600 | 3,400 tokens |
| Normal (40 msgs) | 40 | ~10,000 | ~3,200 | 6,800 tokens |
| Heavy (80 msgs) | 80 | ~20,000 | ~6,400 | 13,600 tokens |
At 200K context window, heavy session savings = ~7% of total context = 1-2 additional full agent interactions before compaction.
Stress Test Results
6 tests conducted, all PASSED:
| Test | Before | After | Compression | Roundtrip |
|---|---|---|---|---|
| Simple Task Dispatch | 228 | 126 | 44.7% | 100% |
| Multi-Step + Dependencies | 282 | 146 | 48.2% | 100% |
| Error Escalation | 234 | 99 | 57.7% | 100% |
| Status Update | 302 | 136 | 55.0% | 100% |
| Complex Research | 347 | 132 | 62.0% | 100% |
| Cross-Team Coordination | 316 | 150 | 52.5% | 100% |
| Average | 285 | 132 | 53.4% | 100% |
How to Adopt
Step 1: Add Quick-Reference Card to Agent Prompts
Paste the ~120 token Quick-Reference Card (from the top of this file) into your agent system prompts or team lead manifests.
Step 2: Start Emitting LIACL from Your Conductor
When your primary/conductor agent dispatches tasks, use LIACL format instead of natural language. Agents that have the Quick-Reference Card will parse it immediately.
Step 3: Extend Domain Codes
Add domain codes specific to your stack. The 18 base codes cover common platforms; add codes for any tools unique to your system.
Step 4: Extend Entity Shortcuts
Create shortcuts for your frequently-referenced resources:
# Example entity shortcuts (customize per system)
TQ = Task Queue Sheet
WF = Working Folder
SE = Signal Engine
SA = Service Account credentials
Step 5: Validate
Run a few LIACL messages through your agents and verify:
- Agents can parse the format without confusion
- No information is lost in compression
- Response quality is identical to natural language dispatches
Design Principles
- Declare once, reference forever -- Field names in headers, not repeated per-value
- Shortcodes for the 80% -- The 30 most common operations get 2-4 character codes
- Context by reference -- Point to files/paths instead of inlining content
- Structured, not conversational -- Remove filler, hedging, and explanation of the obvious
- Extensible -- Any system can add domain codes, role codes, and entity shortcuts
- Zero training required -- Any LLM agent reads this spec and can immediately parse/emit
Research Lineage
LIACL draws from:
| Source | What We Took |
|---|---|
| TOON Format | Header-then-values pattern (30-60% structural savings) |
| Google A2A Protocol | Typed message parts, explicit lifecycle states |
| LangGraph | Shared state references instead of payload passing |
| AgentPrune (ICLR 2025) | Required vs optional fields per message type |
| CrewAI | Learnability -- parseable from a single reference doc |
| LLMLingua-2 (Microsoft) | Inspiration for aggressive compression targets |
Section 8: Memory Snippet Compression (v1.1)
LIACL v1.0 compressed agent-to-agent messages. v1.1 extends the same techniques to memory retrieval, reducing token cost when memories are injected into agent context.
The Problem
Memory systems serve full files (~200-800 tokens each). An agent searching a keyword might load 10 results = ~7,600 tokens. Most of that content is irrelevant to the current task.
Memory Compression Techniques
Technique 1: Progressive Disclosure Integration
Memory search returns LIACL-compressed index entries instead of full files:
@MEM-INDEX "linkedin" 10 results
---
1. feedback_post_via_browser_not_api.md | ~180tok | browser>API, less throttle
2. feedback_no_duplicate_agents.md | ~120tok | 1 agent per branch
3. reference_automation_restored.md | ~340tok | profile restored, cookie ok
...
---
@END
Agent fetches only what it needs: @MEM-FETCH 1,3 (loads 520 tokens instead of 7,600).
Technique 2: Caveman-Speak for Memory Snippets
When injecting mandatory memories (auto-guardrails), compress the content:
| Full Memory (~180 tokens) | Compressed (~45 tokens) |
|---|---|
| "When sending emails with images, you must NEVER use raw Google Drive links as the image source. Instead, download the image using the service account, upload it to a CDN, and use the CDN URL in the email HTML. This was learned after an incident where all images appeared broken." | EM-IMG: NO raw GDrive src. DL via SA, rehost CDN, use CDN URL. Prior incident: images broke. |
Compression rules:
- Drop filler words (the, a, an, instead, you must, when, etc.)
- Use shortcodes for known domains (EM=email, LI=LinkedIn, GD=Drive)
- Keep proper nouns and file paths exact
- Keep the "why" (incident reference) -- attention anchors
- Target: 70-80% reduction per snippet
Technique 3: CTX Blocks for Memory References
When an agent needs to pass memory context to another agent, use CTX pointers instead of inlining the memory content:
@MSG TASK P3 20260605-1400
FROM:PRI TO:WEB
---
OP: UPD
DOMAIN: EM
OBJ: Fix newsletter images
CTX: mem:feedback_email_images_rehosted.md | mem:feedback_own_mistakes.md
NOTE: MEM-COMPRESSED: EM-IMG=rehost-CDN, OWN-ERR=lead-w-ownership
---
@END
The receiving agent reads the CTX files only if it needs full context. The NOTE line gives a compressed hint so it may not need to read at all.
Attention Management
More tokens = harder for the model to focus. Compression is not just about cost -- it is about attention quality:
- Compressed snippets reduce noise in the attention window
- Critical information with unique phrasing ("NEVER", specific file names, incident dates) gets higher attention weight
- Filler words dilute attention across non-informative tokens
Label critical info explicitly (additive attention):
CRITICAL:prefix for must-not-violate rulesINCIDENT:prefix for learned-the-hard-way lessons- File paths and error codes verbatim (model attends to specifics)
Strip noise (subtractive attention):
- Remove hedging ("you should consider", "it is recommended")
- Remove re-explanations of obvious context
- Remove transition phrases between bullet points
Token Savings with Memory Compression
| Scenario | Before | After | Savings |
|---|---|---|---|
| 10 memory search results | ~7,600 tok | ~150 tok (index) + ~520 tok (2 fetched) | 91% |
| 5 mandatory guardrail memories | ~900 tok | ~225 tok (compressed snippets) | 75% |
| CTX block (3 memory refs) | ~540 tok inlined | ~45 tok pointers + ~0-540 fetched | 50-92% |
| Cumulative per session (40 msgs) | ~12,000 tok memory overhead | ~3,600 tok | 70% |
Quick Reference: Memory Compression Shortcodes
Add to LIACL Quick-Reference Card when using memory compression:
## Memory Compression (LIACL v1.1)
@MEM-INDEX "query" -- compressed memory search results
@MEM-FETCH N,N -- fetch specific results by rank
MEM-COMPRESSED: -- inline compressed memory hint in NOTE field
Compression: drop filler, use domain codes (EM/LI/GD/WP),
keep proper nouns + paths + incident refs exact.
Target: 70-80% reduction per snippet.
Created by PureBrain.ai. Open for community adoption, extension, and improvement. Any multi-agent system may adopt and extend this protocol.