Works with Code for IBM i 100% Free — no licence fee New in 1.0 — Git Mode is available

Git and modern DevOps for your IBM i source

Git becomes the way your source is versioned and shared. Project4i stays the way your software reaches production — with backups, authority policies, data-safety gates and rollback.

IBM i development ties code to physical libraries: one application ends up scattered across many libraries, with no shared notion of a project and no history of who changed what, and why. Project4i adds that missing layer on top of Code for IBM i — group members from any library, version them in Git, work in parallel on branches, and promote through your environments with a real DevOps lifecycle, without leaving VS Code or IBM BOB.

Free · No licence fee · No subscription · Requires an active IBM i connection

Runs on
  • Visual Studio Code
  • IBM BOB

What is Project4i?

A DevOps platform for IBM i that lives inside VS Code and IBM BOB and covers the whole application lifecycle, from source to production. It rests on three ideas, and nothing you already have has to change to adopt them.

A project, at last

Group the sources of one application from any library and govern them as a single unit — instead of chasing them across a library list.

Source versioned in Git

Branches, history, review and parallel work — the everyday tooling of every other platform, finally applied to RPG, CL and DDS. New in 1.0

Delivery that is governed

Promote and rollback across environments with pre-promote backups, authority policies, data-safety gates on *FILE objects and a full audit trail.

Git on IBM i

Git Mode Available

Your source lives in a Git repository hosted on your own IBM i. You edit locally, branch, merge and review like on any other platform — and the object that reaches production is still built by the Project4i promote engine, with every guarantee it gives you today.

Git becomes the way source is versioned and shared. Project4i remains the way software is put into production.
Traditional mode compared with Git Mode
Traditional Git Mode
Where the source of truth lives IBM i library Git repository
How you edit Remote member Local file on your PC
Working in parallel Pessimistic lock — one developer at a time Branch & merge — the whole team at once
Promote From library to library From a commit to a library

The mode is chosen per project. Existing projects stay traditional until you decide otherwise: Convert this project to Git Mode is offered on every shared project, and nothing is changed until you confirm. A Git project is always a shared project — the repository is for the whole team.

A merge never writes to production

At most it triggers a deploy to DEV. From there the existing engine takes over: pre-promote backup, authority policy, data-safety gate on data files, deploy register and rollback. Two reasons, neither of them cosmetic:

  • Segregation of duties — if a merge wrote to production, anyone who can merge could write to production. In a regulated shop that is an audit finding on day one.
  • Git does not compile — a merge produces text. Without the promote engine, a failed compile would leave production with the new source and the old object, silently.

Built for fixed-format, not against it

One folder per source physical file, so PGM1 in QRPGLESRC and PGM1 in QCLLESRC stay two different files instead of colliding into one that quietly disappears.

The member lock becomes an advisory warning rather than a block — Git exists precisely to remove that block — but the warning still matters: on RPG III, RPG IV and DDS an automatic merge can produce lines that are syntactically valid with the fields in the wrong columns. A program that compiles and is wrong, with nothing to flag it.

Lines longer than the member can hold are refused before the commit, with the line number — because IBM i truncates them without failing.

Parallel work needs parallel libraries

Optional personal development libraries give each developer their own compile target. Without them, two developers on two branches overwrite each other while believing they are isolated — and Git's parallelism evaporates.

A library name longer than the 10 characters IBM i allows is refused, never shortened: shortening would collapse MARIOROSSI and MARIOROSSETTI onto the same library, which is exactly the problem personal libraries exist to solve.

The traps, already measured for you

Git on IBM i fails in ways that do not look like failures. Each of these was observed on a real IBM i — not assumed — and each one is handled:

  • The clone that succeeds and is empty. A bare repository born on master while everyone pushes main leaves the next clone with exit code 0 and nothing inside.
  • A command that exists but is “not found”. The non-interactive SSH login may not see the git programs, so the clone fails with a message that sends you looking in the wrong place. Project4i configures absolute paths.
  • A password prompt that never ends. Git cannot pass a password non-interactively, so clone and push hang instead of failing. The SSH key is treated as a requirement, not a nicety.
  • “Group” that quietly means everyone. Sharing a repository with the user's primary group can mean the system group. The group is asked for, never assumed.

Your first change, step by step

A real example. Ticket CHG-1234 asks to add a discount to the order program ORD010R in QRPGLESRC. Every action below is a click: right-click the project in the Projects view and choose Git Mode — the window lists the actions and always highlights the next step.

  1. Start a change — name it CHG-1234. You now work on your own branch: nobody else is affected.
  2. Edit src/QRPGLESRC/ORD010R.RPGLE on your PC, with the full VS Code editor.
  3. Git Compile (Ctrl+Alt+C) — the source is uploaded to your Git library and compiled with the project templates. Errors appear in the Problems view, on your local file. Fix, compile again, test.
  4. Save your work into a version — a commit, with the ticket in the message: CHG-1234 add customer discount.
  5. Publish your work — the version reaches the central repository on your IBM i; colleagues can see it, and you can Ask for a code review if your project requires it.
  6. Finish the change — your branch is merged into the shared version. If a colleague touched the same lines, Git stops and shows the conflict: nothing is overwritten.
  7. Publish your change into the shared library, then Promote as you always have: DEV → UAT → PROD, with backups, authority policies and rollback.
  8. Verify production against Git — Project4i tags the exact version that is running in production, so the question “which source is in PROD?” has a provable answer.

Production incident? Start an urgent fix from production begins a change from the version that is actually in production, not from work still in progress.

Everything Inside

One Platform. Every DevOps Capability.

Click a topic to explore every capability.

How it works

From connection to a safe, governed release in five steps.

  1. 1

    Connect via Code for IBM i

    Use your existing Code for IBM i connection — Project4i never talks to the system directly, it builds on the connection you already trust.

  2. 2

    Organize members into project groups

    Add members from any library into logical projects and share the project metadata with your team on the IFS.

  3. 3

    Version the source Git Mode

    In a Git project you edit locally, commit and branch, so two developers can work on the same application at the same time. In a traditional project you lock the member while you work — both paths continue into the same pipeline.

  4. 4

    Promote through your environments

    Ship from a commit, or from the library, through DEV → … → PROD with CL templates, automatic pre-promote backups, authority policies and approvals.

  5. 5

    Analyze impact & roll back safely

    Explore the dependency graph to understand impact before you ship — and roll back cleanly from backups if you need to.

Documentation

A practical, English user manual for every Project4i feature. Pick a topic from the index, or expand a card to read how each function works.

Download the user guide Opens the complete guide in a new tab — read it offline, or use Save as PDF to keep a copy.

01 Getting started & requirements

Project4i is a companion to the Code for IBM i extension: it never talks to your system directly, it builds on the connection you already trust. You need VS Code or IBM BOB, the Code for IBM i extension, and an active IBM i connection.

  1. Install Project4i from the VS Code Marketplace or the Open VSX Registry.
  2. Connect to your IBM i system through Code for IBM i.
  3. Open the IBM Project4i view in the Activity Bar.
  4. On a fresh system, run the Setup Wizard to bootstrap your IFS root, environments, and promotion pipeline. If your organization is already configured, you simply join it.

A Home / Welcome view guides your first steps and links to the main actions.

02 Projects & members

A project group is a logical bundle of source members drawn from any library — you are no longer tied to physical library boundaries. You can mix native QSYS source members and IFS stream files in the same project.

  • Create a project from the Projects view (the + action).
  • Add a member by right-clicking it in the Object Browser → Add to Project; a physical checkout copy is placed in the project's dev library.
  • Collaborative lock — lock a member while you edit it. A lock icon shows who holds it; release your own lock, and project owners can force-unlock.
  • Conflicts — a member added to more than one project is flagged In Conflict, which blocks promotion until you resolve it.
  • Missing / orphaned members — a health check flags members that no longer exist on IBM i so you can remove them individually or in bulk.
03 Git Mode New in 1.0

In a Git project the source of truth is a Git repository hosted on the IFS of your own IBM i: you edit files locally, commit, branch and merge, and the promote engine then builds what reaches each environment from a commit. Nothing leaves your system, and nothing changes for projects that stay traditional.

Setting it up (administrator, once)

  1. Open the Control Panel → Git Mode. Step 1, Repository: the IFS root is derived for you; choose the owning group and the initial branch, click Check, then Enable Git Mode. The declared central repository is created on your IBM i.
  2. Step 2, Production source in Git: Load or update production source… puts the source currently in production into Git as the starting point, so history begins from what really runs.
  3. Step 3, Protect the central repository, so that it is only updated through Project4i.

Setting it up (each developer, once per project)

  1. Create a project and pick Git repository as its location, or convert an existing shared project.
  2. Right-click the project → Git Mode: Set up the SSH key (git cannot type a password, so without a key clone and push would hang), Create the repository (it attaches to the declared one) and Download a working copy. Only the files of the project come to your PC.
  3. Optionally, Create my own development library, so that you compile in your own library and never overwrite a colleague working on another branch.
  4. On a converted project, Put the members under version control (nothing to do for members already loaded from production).

A practical example: ticket CHG-1234 on ORD010R

  1. Get the latest shared version, then Start a change named CHG-1234.
  2. Edit src/QRPGLESRC/ORD010R.RPGLE on your PC.
  3. Git Compile (Ctrl+Alt+C, or right-click the file): errors appear in the Problems view. Test the program from your library.
  4. Save your work into a version with the message CHG-1234 add customer discount, then Publish your work.
  5. Finish the change (after code review, if the project requires it). If a colleague changed the same lines, Finish the merge opens the conflict; then Complete the merge — or Undo the merge to go back.
  6. Publish your change into the shared library, promote through the pipeline as usual, and finally Verify production against Git to tag the version that is in production.

Each action in the Git Mode window also shows the equivalent git command, so you learn Git while you use it. New to Git? How Git works — guide for IBM i developers is the first entry of the menu.

  • Urgent fix — Start an urgent fix from production starts from the version tagged in production, not from work in progress.
  • Chosen per project. A project with no explicit mode is traditional. An existing shared project can be moved with Convert this project to Git Mode; nothing changes until you confirm, and projects you do not convert keep working exactly as today.
  • Repository layout — one folder per source physical file (src/QRPGLESRC/PGM1.RPGLE), so members with the same name in different source files never collide.
  • A merge never writes to production — at most it triggers a deploy to DEV. Pre-promote backup, authority policy, data-safety gate on *FILE objects, deploy register and rollback all still apply.
  • Advisory lock — the member lock warns instead of blocking. There is deliberately no blocking level: on fixed-format sources (RPG III/IV, DDS) an automatic merge can move fields into the wrong columns, so the warning still earns its place.
  • Development libraries — one per project by default, or one per developer so that people on different branches stop overwriting each other. A name longer than 10 characters is refused, never truncated.
  • Environment checks — the Setup Health Check reports a missing git, a version that is too old, or a missing SSH client, with a severity that depends on whether you actually use Git Mode.
  • Line length is verified before a commit, with the line number: IBM i truncates an over-long line without failing the command.

Git Mode is available from version 1.0. Projects that do not use it are not affected.

04 Environments & pipeline

Each project defines its own promotion pipeline — an ordered chain of environments such as DEV → TEST → PROD (the built-in seed is a 7-tier chain you can rename, reorder, add to, or trim).

  • Every environment maps to a set of libraries: a source and object library (required), plus optional data, config, backup, journal libraries and an IFS path.
  • Libraries are exposed to your compile templates as generic, type-based variables (for example &DEV_SRC_LIB, &PROD_OBJ_LIB), so one template works across every project.
  • The environment definition also drives the JOBD library list used when commands run natively on IBM i.
05 Promote & rollback

Promote moves a member from one environment to the next, compiling it with the right command for its source type. Every promote takes an automatic pre-promote backup so you can roll back safely.

  • Compile Map — customizable CL templates per source type (RPGLE, CLLE, DDS, SQL…) with variable substitution; prefix a template with ? to open a visual prompt for its parameters.
  • Data-safe promote — when a target object already exists, CRTPF becomes CHGPF (data migrated by field name) and an existing SQL table is preserved, so production data is never lost.
  • Rollback — restore a member's pre-promote backup after a promote. When no backup exists, Project4i offers a confirmed cleanup instead.
  • Blocked cases — for data safety, rollback of physical/logical data files (PF/LF) is intentionally skipped.
  • Approval — promotion can require maker-checker sign-off: request approval, then a different user approves or rejects before deploy.
06 Deployment packages & batch

A deployment package bundles several members into one named release that you deploy together as a single governed operation. Each project has an always-visible Deployment Packages folder.

  • Create a package with a name, optional release notes, and an optional shared ticket ID; members are shown in build-dependency order.
  • Deploy promotes the members in build tiers (files → display/print → programs → CL → service programs) and stops on the first failure.
  • Promote All deploys the entire project sequentially, with Run / Skip / Run All / Cancel controls and auto-skipped conflicts.
  • Rollback restores every member's pre-deploy backup in reverse build order.
07 Multi-server

Project4i can promote across multiple IBM i systems, not just the one you are connected to. A server catalog holds the connection details of your remote systems.

  • Assign a remote server to a target environment to promote there over SSH / PASE, including the pre-promote backup and rollback.
  • Source transfer between systems — when enabled, the source member is copied to the remote system before it is compiled there.
  • Server passwords are stored encrypted and never kept in project files, on the IFS, or in logs.
08 Shared projects on IFS

Shared projects store their metadata and audit trail as files on the IBM i IFS, so a whole team can collaborate in real time. Set the IFS root once, then create or join shared projects and sync them at any time.

  • Roles & permissions — Owner, Contributor, and Viewer, with granular per-contributor permissions (add, promote, run action, document, and more).
  • Approval workflow — an optional maker-checker gate; the requester cannot approve their own change.
  • Global catalog — for enterprise setups, an organization centrally publishes default environments, servers, workflow commands, variables, and the source inventory, pulled automatically when you connect.
09 Dependency Graph & Impact Analysis

Understand the blast radius of a change before you release it. Project4i scans the relationships between your IBM i objects — programs, files, service programs, modules, logical→physical files, data areas, data queues, message files, triggers, and binding directories — into an interactive graph.

  • Scan in the foreground with a live monitor, or as a background batch job on the server that you can detach from and re-attach to later.
  • Impact Analysis 360 answers two mirror questions about any object: Used by (who depends on me) and Uses (what I depend on), at the first level or transitively with a configurable depth.
  • Navigate with an object finder, drill down through a breadcrumb trail, and switch to a Diagram view of the same sub-graph.
  • Open the source of a related object read-only, and while editing a source you can hover a referenced program, procedure, file, or table and click the link in the tooltip to jump to its source.
10 Inventories & search

Inventories tell Project4i where your source and objects live, and the search tools help you find members fast across libraries.

  • Source Inventory — an org-wide catalog of source containers (library/file) with descriptions, shared with the team and used by templates, AI, and the impact-analysis perimeter picker.
  • Object Inventory — the object libraries that define the scope of a dependency scan.
  • Member Search — search by name, type, description, changed-after date, and even inside the source content, from a sidebar view or a full panel.
  • Source Collections — save a search as a reusable, named collection and re-run it later.
11 AI-assisted features

Project4i includes an optional AI suite that helps you document and analyze your code. AI features are entirely optional and run through a pluggable backend.

  • AI documentation — generate technical and functional documentation from your source members, previewed in VS Code and openable in Word.
  • Change-impact analysis — describe an intended change and let the AI judge which members are affected, with confidence and reasoning.
  • Bring Your Own LLM — run the AI on VS Code models (GitHub Copilot) by default, or point it at any external OpenAI-compatible endpoint. Your API key is stored securely and never written to project files, the IFS, or logs.
12 Productivity tools

Day-to-day helpers keep the whole team aligned and let you tailor Project4i to your standards.

  • Activity Log — a filterable, team-synced audit trail of every action (create, promote, package, approval, rename, error).
  • Kanban board — a Dev → Promoted → In Test lifecycle board with automatic state transitions on promote.
  • Workflow commands — customizable CL templates for promote, checkout, release, and IFS promote, seeded from your global defaults.
  • Run Action — run a reusable custom CL command on any member straight from its context menu.
13 Interface

Everything lives inside VS Code and IBM BOB, styled with the Deep Space design.

  • Projects TreeView — a sidebar that shows your projects, members, deployment packages, and documentation, grouped for a clear overview.
  • Control Panel — a two-column settings panel for global defaults (developer info, environments, workflow commands, variables, inventories, AI backend).
  • Project Properties — a per-project panel for environments, promote configuration, custom variables, and permissions.
  • Full Dark / Light theming with custom icons and color-coded nodes.

Need something this page does not cover? Ask us directly — questions, bug reports and feature requests all reach the team through the same form.

Get started

Install Project4i from your marketplace of choice and connect to your IBM i system. It is 100% free — no licence to buy, no subscription, and every future release included.

Requires the Code for IBM i extension and an active IBM i connection.

Meet the team

The people behind Project4i.

Giuseppe Di Bari

Giuseppe Di Bari

Tech Lead · Senior IBM i (AS/400) Software Engineer & System Integrator

Creator of Project4i and a senior IBM i (AS/400) engineer with 20 years in banking and fintech. He started Project4i from a simple belief: the IBM i world deserves a modern, delightful DevOps experience. Today he leads the project's vision, architecture, and hands-on development.

Giorgia Sfregola

Giorgia Sfregola

IBM i Developer

A young and remarkably talented IBM i developer who fell in love with the project from day one. Her passion and skill turned ambitious, dream-like ideas into real, dependable features — much of what makes Project4i special exists thanks to her.

Alice Sfregola

Alice Sfregola

Marketing & Social Media Manager

Marketing lead with a natural gift for communication. As social media manager she gives Project4i its voice — telling its story and connecting the project with the IBM i and AS/400 community.

Contact us

A question, a bug to report, an idea you would like implemented? Write to us — you can attach screenshots or log files, and we read every message.

Up to 5000 characters.

Up to 3 files, 5 MB in total — PNG, JPG, GIF, PDF, TXT, LOG, CSV or ZIP.

Loading the question…

Prefer your own mail client? Write to info@project4i.cloud