iAgentX
$ ai --ask "explain my IBM i RPG code"
Error: No IBM i context found.
$ ai --ask "read my open source member"
Error: Cannot access QCLLESRC. What is QCLLESRC?
$ ai --ask "check the job log for CPF2110"
Error: Job logs? Is that a podcast?
$ ai --ask "why is my DB2 query slow"
Error: I only know SQL. What is DB2 for i?
$ # Yeah. That's the problem. →
Your AI is brilliant. Just completely blind to IBM i.
Until now.
iAgentX
iAgentX

Bring AI Intelligence
to Your IBM i

Connect Claude Code, GitHub Copilot & IBM Bob directly to your IBM i system — source members, DB2, job logs and more. Free. Secure. Instant.

Live now on VS Code Marketplace
Claude Code — iAgentX for IBM i
› List all source files in DK
──────────────────────────
⚡ ibmi_list_source_files
QCLLESRC · 42 members
QRPGLESRC · 87 members
QSQLSRC · 15 members
──────────────────────────
› Explain BATCHFTP
⚡ ibmi_get_source_member
Reading QCLLESRC/BATCHFTP…
✓ 247 lines loaded
iAgentX
The Challenge

Why AI can't help IBM i developers — yet.

💬  "When was the last time you asked your AI assistant about code running on IBM i… and it actually helped?"
🤖
AI Agents Don't Know What They Don't Know

Copilot can call Code for IBM i extension commands — but only if you tell it they exist. Without explicit prompting, it won't discover or use them. Claude Code and IBM Bob have no IBM i access at all.

👁️
Open Files Are Invisible Too

Files opened in VS Code from IBM i (QCLLESRC, IFS) are NOT in the working directory. Claude Code and IBM Bob cannot see them — only Copilot can, partially.

💰
Premium Alternatives Cost More

IBM Bob's IBM i integration feature is releasing June 24th — but at an additional cost on top of existing Bob pricing.

+$20/month · $20 for 40 Bob coins
iAgentX
Market Gap

How do the options stack up?

Capability GitHub Copilot Claude Code IBM Bob (today) IBM Bob (Jun 24+) ✦ iAgentX
Reads IBM i source members ≈ via extension
commands not in AI context
✗ ✗ ✓ premium ✓ Free
SQL / DB2 for i queries ≈ via extension
commands not in AI context
✗ ✗ ✓ premium ✓ Free
Access open IFS / member editors ≈ partial ✗ ✗ ✓ premium ✓ Free
Job logs, spool files, CL diagnostics ≈ via extension
commands not in AI context
✗ ✗ ? ✓ Free
Proactive IBM i tool discovery (no prompting needed) ≈ needs explicit prompt ✗ ✗ ? ✓ Free
✦  iAgentX gives you the premium IBM i AI experience — today, for free.
iAgentX
The Solution
iAgentX

Meet iAgentX for IBM i

A VS Code extension that bridges your AI coding tools directly into IBM i — with zero extra setup and no additional cost.

⚡
Zero Setup

Install the extension and you're done. iAgentX auto-configures Claude Code, Copilot Chat, and IBM Bob on first launch — no manual MCP config required.

🔗
Reuses Your Connection

No extra credentials. iAgentX piggybacks on Code for IBM i's existing SSH session — the same connection you already use every day.

🤖
Works With All Your AI Tools

Claude Code CLI, GitHub Copilot Chat, IBM Bob — all three get IBM i superpowers simultaneously from a single extension.

Published by Duvaragesh VS Code Marketplace

iAgentX
Architecture

How it all connects

iAgentX runs a lightweight HTTP+SSE MCP server inside the VS Code extension host. AI agents call it over the loopback interface — it forwards requests through Code for IBM i's existing SSH session. No new credentials, no external exposure.

🔒

Loopback only — server binds to 127.0.0.1, unreachable from outside your machine

🔑

No extra credentials — reuses your Code for IBM i SSH session transparently

⚙️

Auto-configures Claude Code, Copilot & IBM Bob on first launch

🪟

Shared across windows — one server instance serves all your VS Code windows

AI Agents
Claude Code Copilot Chat IBM Bob
MCP over HTTP+SSE · 127.0.0.1:41927
iAgentX for IBM i — VS Code Extension Host
29 purpose-built IBM i tools · JSON-RPC 2.0 dispatch · Auto-config
Code for IBM i Public API
Code for IBM i Extension
SSH connection reused — no extra credentials
SSH
IBM i System
DB2 for i  ·  IFS  ·  Job Logs  ·  Source Members  ·  Spool Files
iAgentX
Security

Built-in, not bolted-on.

🛡️  "Worried about an AI modifying your production IBM i data? Here's why you don't need to be."
👤
Your Profile, Your Access

iAgentX uses your IBM i user profile via Code for IBM i's SSH session. No service account. No elevated privileges. No stored credentials. The AI operates within your own access rights.

🔍
Read-Only SQL, Always

Only SELECT, WITH, and VALUES are permitted. INSERT / UPDATE / DELETE / DDL are blocked at the extension layer — the AI literally cannot modify DB2 data.

No writes to DB2
📋
CL Command Allowlist

Only display/diagnostic CL verb prefixes are permitted. All other commands are blocked, even if the AI requests them.

DSP · LST · WRK · CHK · PRT · DMP · RTV · QRY
📝
No Blind Remote Writes

Editor write tools only operate on files already open in your VS Code. The AI cannot open and overwrite arbitrary source members without your involvement.

🌐
Loopback-Only HTTP Server

The MCP server binds exclusively to 127.0.0.1. It is completely unreachable from any other machine on the network — no firewall rules needed.

127.0.0.1 only
🔐
No Credential Storage

iAgentX stores absolutely nothing. SSH credentials live exclusively in Code for IBM i's secure credential store. Zero attack surface for credential theft.

iAgentX
Capabilities

29 IBM i Tools
at your AI's fingertips.

Every tool available to Claude Code, Copilot Chat, and IBM Bob simultaneously — the moment you install the extension.

29
purpose-built tools
🔌
Connection
ibmi_connection_status
📁
Source Members & Objects
get_source_member list_source_members list_source_files search_source_members list_objects get_object_info check_object get_program_info get_file_fields get_library_list
🗂️
IFS
get_ifs_file list_ifs_directory search_ifs
🗄️
SQL & Data
run_sql get_data_area
🔧
Jobs & Diagnostics
get_job_log find_jobs list_spool_files get_spool_file get_output_queue_info run_cl_command
👤
Users & Messages
list_user_profiles get_message_description
✏️
VS Code Editor
get_active_editor list_open_editors update_active_editor update_editor_by_uri replace_in_active_editor
iAgentX
Demo 1 — Job in Message Wait

Requirement: Diagnose a job stuck in MSGW

💬 "Is any of my jobs in message wait? Get the root cause."
Scenario
  • Batch job MSGWDEMO submitted via SBMJOB
  • Job silently stopped responding — no error, no output
  • Nobody knows why it's hanging or what it's waiting for
  • AI must find the job, check its status, and read its log
Prompt used
Is any of my jobs in message wait? Get the root cause.
🤖 Claude Code — Chat
Is any of my jobs in message wait? Get the root cause.
⚡ibmi_find_jobs — searching for MSGW jobs for current user
⚡ibmi_get_job_log — reading job log for MSGWDEMO
⚠ Job found in MSGW:
MSGWDEMO is waiting for an operator reply.

Root cause from job log:
The job completed two SQL steps successfully — scanned the system catalog and counted tables across schemas. At step 3, it sent a *INQ inquiry message to QSYSOPR:

"Nightly extract ready. Found 4,821 tables in 312 schemas. Reply G to proceed or C to cancel."

→ Job is healthy — it is waiting for a human decision before the extract runs. Reply in QSYSOPR to unblock it.
Tools used: ibmi_find_jobs ibmi_get_job_log
iAgentX
Demo 2 — IFS Directory Analysis

Requirement: Explore & explain an IFS directory

💬 "What are all these files in my home directory and what do they do?"
Scenario
  • IFS path: /home/DK
  • Mix of shell scripts, Python files, config & logs
  • Developer wants plain-English explanation of each file
  • AI must list the directory and read key files for context
Prompt used
Analyse the /home/DK directory on IBM i and explain what each file and script is used for.
🤖 Claude Code — Chat
Analyse the /home/DK directory on IBM i and explain what each file and script is used for.
⚡ibmi_list_ifs_directory — scanning /home/DK (8 objects found)
⚡ibmi_get_ifs_file — reading backup.sh, etl.py, etl_config.json
📂 /home/DK — 8 objects

Shell Scripts
backup.sh — Archives DB2 journal receivers to IFS nightly
deploy.sh — Promotes QRPGLESRC members to TESTLIB on commit
cleanup.sh — Purges /tmp files older than 7 days

Python
etl.py — Extracts DB2 query results to CSV for reporting pipeline

Config & Logs
etl_config.json — Schema targets, output paths, row limits
.env.sample — Env var template for DB2 connection strings

→ backup.sh and etl.py are active cron jobs. etl.py runs daily at 02:00.
Tools used: ibmi_list_ifs_directory ibmi_get_ifs_file
iAgentX
Demo 3 — Source Member Analysis

Requirement: Explain code & generate a flow diagram

💬 "What does this CL program do? Give me a flow diagram."
Scenario
  • Source file: QCLLESRC · Member: BATCHFTP
  • 89-line CL program nobody has touched in 3 years
  • Goal: understand the logic without reading every line
  • Bonus: visual flow diagram to share with the team
Prompt used
Analyse BATCHFTP in QCLLESRC. Explain what the program does and create a program flow diagram.
🤖 Claude Code — Chat
Analyse BATCHFTP in QCLLESRC. Explain what the program does and create a program flow diagram.
⚡ ibmi_get_source_member — reading QCLLESRC/BATCHFTP (89 lines)
BATCHFTP — Batch FTP Transfer (CL)
Transfers nightly DB2 exports from IFS to a remote server via FTP.

Program Flow:
START
  │
  ▼
Declare vars (FTPHOST, USER, SRC/DST)
  │
  ▼
OVRDBF → FTPSCRIPT member
  │
  ▼
CALL FTP RMTSYS(&FTPHOST)
  ├── OK  → SNDMSG QSYSOPR → END
  └── ERR → MONMSG CPF0000 → Log → END
Tools used: ibmi_get_source_member
iAgentX
Demo 4 — Row Count Analysis

Requirement: Cross-table row count analysis

💬 "How long would it take you to manually write SQL to get row counts for every table and its history table across an entire schema?"
Scenario
  • Schema: XYZLIBRARY
  • Each table has an associated history table (temporal type H)
  • Example: RULE (main) ↔ RULEH (history)
  • History table name = main name + trailing H in system name
  • Need: row counts for every main table + its history table
Prompt used
Get row counts for all main tables and their history tables in XYZLIBRARY. History tables have temporal type H, and the main table name is derived by removing the trailing H from the history table's system name.
🤖 Claude Code — Chat
Get row counts for all main tables and their history tables in XYZLIBRARY. History tables have temporal type H, and the main table name is derived by removing the trailing H.
⚡ ibmi_run_sql — querying QSYS2.SYSTABLES + dynamic COUNT(*)
Here are the row counts for all main tables and their history tables in XYZLIBRARY:
Main TableRowsHistory TableHistory Rows
RULE1,284RULEH8,742
POLICY45,610POLICYH312,048
CLAIM9,331CLAIMH67,812
CONTRACT22,100CONTRACTH180,556
PRODUCT412PRODUCTH2,184
📊 Found 18 main tables with history counterparts in XYZLIBRARY.
Tools used: ibmi_run_sql
iAgentX
Demo 5 — Fix FK Hierarchy Function

Requirement: Debug & fix a SQL table function

💬 "Ever had a bug where your SQL function ignores all the FK relationships you carefully designed?"
Scenario
  • Function: XYZZ010788.schemaTableHierarchy('XYZLIBRARY')
  • Bug: Returns level = 1 for ALL tables
  • Expected: levels reflect FK depth (parent=1, child=2, grandchild=3…)
  • Goal: Fix it & deploy to library DK for testing
Prompt used
The function schemaTableHierarchy in my working directory is returning hierarchy level 1 for all tables when I run SELECT * FROM TABLE(XYZZ010788.schemaTableHierarchy('XYZLIBRARY')). The levels should reflect FK relationships. Investigate and fix it, then give me the fix to create in library DK and test against XYZLIBRARY.
✦ Key Insight
The AI reads the open source member directly from your editor — no copy-paste, no manual file transfer to the AI.
🤖 Claude Code — Chat
The function schemaTableHierarchy is returning level 1 for all tables. Investigate and fix it, then give me the fix for library DK.
⚡ibmi_get_active_editor — reading open QSQLSRC/SCHTBLHRC
⚡ibmi_run_sql — querying QSYS2.SYSKEYCST for FK relationships
🔍 Root Cause Found:
The recursive CTE uses CONSTRAINT_SCHEMA = p_schema but the FK catalog view uses UNIQUE_CONSTRAINT_SCHEMA for the referenced side. All FK joins are silently producing no rows — so every table falls back to level 1.

✅ Fix for library DK:
CREATE OR REPLACE FUNCTION DK.schemaTableHierarchy(p_schema VARCHAR(128))
RETURNS TABLE(TABLE_NAME VARCHAR(128), LEVEL INT)
-- [corrected JOIN condition: UNIQUE_CONSTRAINT_SCHEMA]
...
Ready to CREATE in library DK and test against XYZLIBRARY.
Tools used: ibmi_get_active_editor ibmi_run_sql ibmi_replace_in_active_editor
iAgentX
Impact

Before & After iAgentX

⚠ Without iAgentX
😤Manually copy IBM i source into chat — then paste fixes back
🔁Context-switch between VS Code, 5250 terminal, and AI chat window
🔍AI can't see open files — you must describe the code in words
🚫No job log, no spool files, no CL diagnostics in AI context
💸Premium vendor add-ons required for IBM i AI integration
✦ With iAgentX
⚡AI reads source members directly — no copy-paste ever
💬Single chat window for all IBM i analysis, debugging & editing
👁️AI sees your open editors in real time — surgical edits on the spot
🔧Job logs, spool files, CL diagnostics all accessible in AI chat
🆓Free, open source — works with the tools you already have
0
extra credentials needed
29
IBM i tools for your AI
3
AI clients auto-configured
$0
cost — free to use, ELv2
iAgentX
Get Started

Up and running in 3 steps.

1
Code for IBM i

Install the Code for IBM i extension and connect to your IBM i system

halcyontechltd.code-for-ibmi
2
Install iAgentX

Search the VS Code Marketplace and install iAgentX for IBM i

iAgentX for IBM i
3
Open Claude Code

iAgentX auto-configures Claude Code, Copilot & IBM Bob. Start chatting.

claude

Your IBM i. Your AI. Connected.

← → to navigate