Bob Models, Security, and Self-Hosted on OpenShift: What Maximo Security Teams Must Know

๐ŸŽฏ Who this is for: Maximo security leads, platform and OpenShift administrators, architects, and the person who has to sign the vendor risk questionnaire. You do not need to like AI coding agents to read this. You need to be able to answer, in writing, where your Maximo code goes and what the tool can touch.

Series: IBM Bob for Maximo Teams | Part 2 of 5 | Read time: ~24 minutes
Previous: Part 1, What IBM Bob Is | Next: Part 3, Governance, Pricing, and Bobcoins

๐Ÿ”ฅ The Questionnaire Lands on Your Desk

A developer on your team has already tried Bob. They liked it. They pasted a chunk of an automation script into it, maybe two, and now someone in procurement has forwarded you a vendor risk form with a note that says, "Can you turn this around by Friday?"

The form has the usual questions. Which AI model processes our data? Is it retained? Is it used for training? Where is it stored? Who is liable if the output infringes someone's IP? What happens if the tool is tricked into doing something harmful? Can we run it inside our own network?

"Is it secure?"

>

That is not a question with a yes or a no. It is six questions wearing a trench coat.

Maximo customization code is not a toy. Your automation scripts encode business rules. Your integration code holds endpoint names, queue names, and sometimes credentials that someone forgot to externalize. Your application XML describes your security model. If you are in a regulated utility, a defense contractor, or a public-sector estate, some of that is the kind of material you are contractually forbidden to send to a third party.

This part answers the six questions with what IBM has actually published, who said it, and how strong the evidence is. We are not here to tell you Bob is safe or unsafe. We are here to give you a defensible, labeled set of facts so that your answer on Friday is one you can stand behind in an incident review.

๐Ÿ’ก Evidence labels, as in the rest of the series: [IBM] means vendor-stated in IBM documentation, FAQ, or press material and not independently audited. [IND] means independent press, analyst, researcher, or practitioner. Where IBM's own sources contradict each other, we show both readings. Every claim we could not verify is listed in the "Open Items" section, so you know what to ask IBM before you rely on it.

๐Ÿ“Œ The Short Version

If you only have a minute:

  • SaaS Bob picks the model for you. IBM's FAQ says you cannot choose or restrict it. IBM names Claude, Mistral, and Granite families but not versions or routing policy [IBM].
  • Self-hosted Bob runs exactly one core model. You choose it. Multi-model routing is on IBM's roadmap, not in the GA product [IBM].
  • IBM states payloads are "effectively zero-retention," customer data is not used for training, and telemetry excludes code and prompts [IBM]. None of that has been independently audited.
  • IP indemnity is Enterprise-only. Free Trial, Pro, Pro+, and Ultra carry none [IBM].
  • Three SaaS regions (US East, Frankfurt, Tokyo), but account, admin, policy, and billing metadata live in US East regardless [IBM].
  • There is no OS-level sandbox. The January 2026 PromptArmor finding showed auto-approve is the attack surface [IND].
  • Self-hosted Bob Core needs roughly 36.5 vCPU and 53.4 GiB with headroom on OpenShift 4.20 to 4.22, excluding GPUs [IBM]. Bobalytics, in-place upgrades, and Admin UI activity logs are not available at GA [IBM].

๐Ÿง  SaaS: You Cannot Choose the Model

IBM's FAQ includes the question "Can I choose which model Bob uses?" The answer is a single word: No. Bob "automatically selects the most appropriate language model for each task based on complexity, required capabilities, and cost-efficiency," and IBM lists task complexity, required capabilities, context size, and cost optimization as the inputs [IBM, FAQ]. A separate FAQ entry asks whether an organization can choose or restrict which models Bob routes to. We could not retrieve the full answer text from the FAQ page during this run (the page rendered question headings only), so the statement below rests on the "No" recorded in DOC16 and on the consistent IBM messaging that routing is automatic. Confirm the exact wording with your IBM representative if your policy depends on it.

The GA announcement on April 28, 2026 names "Anthropic Claude, Mistral open source models, and IBM Granite," plus fine-tuned models for code reasoning, security, and next-edit prediction [IBM]. The October 2025 preview also listed Llama [IBM]. IBM's tagline for the design is "Stop managing models. Start managing outcomes."

What IBM does not tell you

Question a security team asksWhat IBM publishesStatus
Which model families are in rotation?Claude, Mistral, Granite, fine-tuned IBM modelsPublished [IBM]
Which model versions?NothingNot disclosed
What is the routing policy?"Complexity, capabilities, context size, cost"Criteria only, no thresholds
Which model answered this task?No per-task visibility documentedNot disclosed
Can we exclude a provider?"No" per DOC16Confirm in writing
Tokens per Bobcoin?Not publishedNot disclosed (see Part 3)

Why a Maximo shop should care

Auto-routing is a feature for a developer and a problem for a change-control board. Consider what you cannot do:

  • You cannot reproduce a result. If Bob generated an automation script on Tuesday and a different script from the same prompt on Thursday, you cannot establish whether the model changed, because you cannot see which model ran.
  • You cannot attest to model provenance. If your data-handling policy says "customer data may only be processed by models hosted in region X by vendor Y," you cannot verify that on SaaS from the product surface.
  • You cannot freeze behavior across an audit period. Models in the rotation can change under you without a notice in your change calendar.

RedMonk's Kate Holterhoff called auto-selection "a double edged sword, as developers can be suspicious of black box tools," while noting it "eliminates the paralysis of choice" [IND, The Register and DevClass coverage, April 2026]. Techzine flagged the same black-box skepticism [IND].

๐Ÿ’ก Key insight: A model you cannot pin is a model you cannot put in a change record. If a Maximo customization needs a reproducible AI step, treat Bob as an assistant whose output you review and version like human-written code, not as a deterministic build tool. The artifact you control is the diff, not the model.

A practical compensating control

You cannot pin the model, but you can pin everything around it:

  1. Commit the output, not the prompt. The authoritative artifact is the reviewed script or XML in your repository.
  2. Record the Plan. Bob's Plan mode produces a reviewable plan before anything is written (covered in Part 1). Attach it to the change record so a reviewer sees the intent, not just the result.
  3. Keep your own regression tests for converted or refactored automation scripts, so a behavioral drift in the model shows up as a failed test and not as a production incident.
  4. Log the Bob client version you used (IDE 2.2.0 and Shell 2.0.5 are the versions IBM lists against the self-hosted 2.0.0 release) alongside the change.

๐Ÿ  Self-Hosted: One Core Model, a Gateway, and a Guardrail

Self-hosted Bob replaces automatic routing with a Model Gateway: an OpenAI-compatible inference service with an embedded router called Bifrost [IBM, solution architecture]. You define models in model-gateway.yaml and keep secrets in config.yaml under bob.modelGateway.secrets [IBM, configuration docs].

IBM's rule is blunt: "Configure only one core inference model in the model gateway at a time. Configuring multiple core models simultaneously is not supported and results in undefined behavior" [IBM].

The reserved model-name slots

The gateway requires three reserved model_name values. Bob's clients ask for these names, and your configuration maps each name to a real model [IBM, configuration docs]:

Reserved namePurposeNotes
premium-ideDefault model for interactive chatRecommended as the router's default model
securityGuardrail and security checksBacked by the guardrail model
backgroundBackground and autonomous agent tasksUsed by background tasks (Part 1)

The router is static at GA:

routers:
  - name: router
    strategy: static
    static:
      default_model: premium-ide

IBM's guidance is to leave default_model: premium-ide alone and change providers at the model-entry level instead. Installation and updates use the bobctl CLI [IBM, configuration docs]:

# Initial install with a model configuration
bobctl install --model-config path/to/model-gateway-config.yaml

# Later model changes, refreshing secrets
bobctl update-model-config --model-config <file> --update-secrets

Automatic multi-model routing is described as planned, not shipped [IBM via FACTBASE, and echoed by launch coverage].

Where the models run

IBM is explicit that Bob does not host the model for you: Bob "connects to deployed models โ€ฆ but does not provision, host, or manage model-serving infrastructure" [IBM]. You have three connection patterns:

PatternExamplesFits
On-cluster via Red Hat OpenShift AIOCI/ModelCar images, air-gapped mirroringAir-gapped and sovereign estates
Public-cloud endpoint in your own accountAWS Bedrock, Google Vertex AI, Azure OpenAIRegulated shops that already trust a hyperscaler
Private inference endpointvLLM and similarTeams with an existing GPU platform

Supported models, and the quality tier you are choosing

CategoryModels IBM lists (October 2026) [IBM]
Frontier (recommended)Claude Sonnet 5 and Claude Opus 4.8 (AWS Bedrock); Google Gemini 3.7 Flash (Vertex AI); OpenAI GPT 5.6 Sol (Azure OpenAI)
Air-gapped / open-weightMistral 3.5 (example config mistralai/mistral-medium-3-5-0); NVIDIA Nemotron 3 (nvidia/nemotron-3-ultra-550b); Poolside Laguna S2.1 (poolside/laguna-s-2.1)
Guardrailopenai/gpt-oss-20b, or provider-native guardrails (Bedrock Guardrails, Vertex AI safety filters, Azure OpenAI content filters)

IBM's own documentation draws the line: frontier models "deliver the highest level of reasoning, accuracy, and generation quality" for complex work, while the air-gapped models suit "strict air-gap compliance and standard coding assistance" [IBM]. In plain terms, a fully air-gapped Bob is a different quality tier from SaaS Bob. BERI's independent analysis made the same point under the headline "IBM's Air-Gapped Bob Drops Claude for Nemotron and Laguna" and noted IBM published no evaluations of Bob running on either local model [IND].

Independent hardware numbers, treat with caution [IND]. BERI reports that Nemotron needs on the order of "8x B200 or 8x H200, or 16x H100" at minimum, while Laguna can run on a single NVIDIA DGX Spark, and cites model-maker benchmark scores (Laguna S 2.1 at 70.2% and Nemotron at 56.4% on Terminal-Bench 2.1). Those scores come from the model makers, not from testing inside Bob's harness, and IBM itself publishes no GPU sizing. Use BERI's suggestion instead: run your own 20-ticket test before committing.

The decision matrix for a Maximo estate

Your situationLikely fitWhy
Commercial manufacturer, no residency mandateSaaSHighest model quality, no platform to run
EU or Japan estate with regional processing ruleSaaS in region, with metadata caveatInference stays in region; metadata does not
Contract says all data stays in region or inside your boundarySelf-hostedOnly option that removes the US East metadata store
Air-gapped utility, defense, or public sectorSelf-hosted with Nemotron, Laguna, or MistralOnly options that run fully disconnected
Regulated but cloud-permittedSelf-hosted pointing at a frontier model in your own cloud accountKeeps your cloud tenancy and a stronger model

Doc inconsistencies you should know about

IBM's supported-models page lists Gemini 3.7 Flash, while the gateway configuration examples use gemini-3.6-flash and also reference gemini-3.1-pro [IBM, per DOC16]. The page lists "Mistral 3.5" while the config example uses mistral-medium-3-5-0. IBM's October 1 press release names no models at all, and third-party coverage emphasizes Nemotron and Laguna as the air-gapped pair at launch [IND]. Verify model identifiers against the live docs on the day you write your configuration.

๐Ÿ” Data Handling: What IBM States, and How Strong Each Claim Is

This is the section your questionnaire cares about most. Every row is a vendor statement. We list the evidence level next to each so you know which ones to ask IBM to document.

ControlWhat IBM says [IBM, FAQ and docs]Evidence
Training"Customer data (payload and prompts) is not used to train AI models."Vendor statement
Retention"IBM Bob's default architecture is effectively zero-retention for payload data." Payloads sit in ephemeral in-memory storage, "generally on the order of minutes," and are "never written to persistent disk storage."Vendor statement; mechanism not independently verified
TelemetryFeature usage, performance, and errors. "IBM Bob does not collect your code or prompts as part of telemetry data."Vendor statement
Local task historyStored on the developer's machine; default retention 14 daysVendor statement
Network egressNot by default; internet access "depends entirely on which MCP servers you have configured and trusted." An experimental web_fetch tool was added in September 2026Vendor statement
Runtime guardrails"Prompt normalization, sensitive data scanning, real-time policy enforcement, and AI red-teaming"; also secrets detectionMechanisms not documented publicly
License filtering"No. License filtering is not a capability of IBM Bob."Vendor statement, and a notable gap
Compliance"IBM is ISO 27001 certified"; pen-test summaries and ISO certificates under NDANo public SOC 2, FedRAMP, or ISO 42001 statement for Bob
SandboxNone at OS level. .bobignore "does not create a system-level sandbox"; commands run as child processesVendor documentation

Two things deserve emphasis for a Maximo audience.

"Effectively zero-retention" is a careful phrase. It describes the payload store, not every system that touches your account. The same FAQ says task history is kept locally and that telemetry exists. Read the sentence for what it says (payloads are ephemeral) and what it does not say (that nothing about your usage is recorded). If your policy says "no vendor retention of source code, ever," ask IBM for the data-flow diagram and the contractual language, because a FAQ line is not a contract term.

No license filtering matters more than it sounds. Bob does not screen generated code for similarity to licensed material. That makes the indemnity position (next section) the only IBM-side protection against an IP claim, and the indemnity is not available on every plan.

Protect the inputs, because the tool will not

The practical way to reduce exposure on either deployment model is to control what the agent can read. A starting .bobignore for a Maximo repository, illustrative and unverified against current Bob syntax (we assume gitignore-style patterns, which DOC16 does not confirm), keeps credentials and environment files out of context:

# .bobignore (illustrative; confirm syntax in current Bob docs)
.env
.env.*
maximo.properties
*.keystore
*.jks
*.p12
**/secrets/**
**/exports/**/*.csv

Remember IBM's own caveat: this excludes files from the agent's context but "does not create a system-level sandbox." A command the agent runs can still read a file by path. .bobignore reduces accidental exposure; it is not an access control.

โš–๏ธ IP Indemnity: Enterprise Only

IBM's FAQ answers the indemnity question precisely: "Yes, for IBM Bob Enterprise only, including premium packages purchased for Bob Enterprise." The indemnity covers IP claims (patent and copyright) arising from output of both IBM-developed and third-party models. It "does not extend to non-IP claims," and "No output indemnity is provided for Bob Free Trial, Bob Pro, Bob Pro Plus, or Bob Ultra" [IBM, FAQ].

PlanIndemnityImplication for Maximo teams
Free Trial (30 days)NoEvaluation only; do not use on client or proprietary code
ProNoIndividual use; no IBM IP backstop
Pro+NoSame
UltraNoSame, despite the higher price
EnterpriseYes (IP claims only)The only tier that supports a contractual position

The consultancy trap

If you are a Maximo partner, this is the row to read twice. A developer who buys a $20 Pro seat on a personal card and uses it on a client's automation scripts has created a situation where the client contract may assume AI-output protections that do not exist. Three practical rules:

  1. Decide the seat type before the first client file is opened. Enterprise for client work, individual tiers for internal learning only.
  2. Check your client's AI clause. Many MSAs now prohibit unapproved AI tools outright.
  3. Have counsel read the Enterprise terms. This post quotes the FAQ summary. The contract governs.

๐ŸŒ Regions and Data Residency

SaaS Bob runs in three regions [IBM, data-residency documentation]:

RegionLocation
US EastWashington D.C., USA
EuropeFrankfurt, Germany
JapanTokyo, Japan

Inference, data processing, and conversation storage stay in the region you select. But account, admin, user and team, policy, and billing metadata are stored globally in US East regardless of region [IBM]. Authentication events in the activity log are stored globally for the same reason, while admin events are stored per region (Part 3 covers the log in detail).

Other connectivity facts from IBM's FAQ: Bob is not available in a list of sanctioned and restricted countries, including China, Hong Kong, Russia, and Iran, and SaaS connectivity is HTTPS on port 443 only, with no private-link option documented at the time of writing [IBM].

Sovereignty caveat for EU and Japan Maximo programs. Regional SaaS keeps your content in region. It does not keep your identity and billing metadata there. If your contract or regulator says all data, including user identifiers, must remain in region, regional SaaS does not satisfy it, and that points to self-hosted Bob.

IBM's own Institute for Business Value research, quoted in its October 1 announcement, found that 68% of surveyed executives say meeting data residency and sovereignty requirements across geographies is challenging [IBM research]. That is the market IBM built self-hosted Bob for.

๐Ÿšจ The PromptArmor Incident: What Happened and What Still Applies

On January 7, 2026, The Register reported that PromptArmor researchers had found two problems in the beta release of Bob [IND].

Bob Shell, malware execution. A malicious README.md told Bob to run a phishing-training exercise built from harmless echo commands. Once a user had chosen "always allow" for echo, later chained commands ran without approval. Bob did not check process substitution, and redirection with > let hidden commands ride along with an allow-listed one. The result was download and execution of a malicious script. PromptArmor's Shankar Krishnan said the approval function "only ends up validating an allow-listed safe command, when in reality more sensitive commands were being run." He also noted that "Bob can read webpages," so a prompt injection can arrive from a page the user asks Bob to review [IND].

Bob IDE, zero-click exfiltration. The IDE was reported to have data-exfiltration vectors through markdown image rendering, a permissive Content Security Policy, and possibly pre-fetched JSON schemas [IND].

IBM's response. IBM said it was unaware of the vulnerability and had not been notified directly, emphasized that Bob was in tech preview, and committed to "take any appropriate remediation steps prior to IBM Bob moving to general availability" [IND, The Register, quoting IBM]. We found no public confirmation from IBM or PromptArmor that each specific vector was closed before GA. A later Bob Shell changelog fix addressed a related gap in which a per-task MCP tool allowlist "could bypass the broader group approval gate" [IBM changelog, via search summary, not independently retrieved].

Why this matters to Maximo specifically

The attack needs three ingredients: untrusted text the agent reads, an auto-approved command class, and a shell. A Maximo developer's day provides all three. You clone vendor sample repositories. You open a customer's exported package. You paste a stack trace from a forum. You ask the agent to "review this page." Any of these can carry an instruction.

LessonControlWhere it lives
Auto-approve is the attack surfaceLock execute and mcp auto-approval for machines that touch client Maximo codeDisabledAutoApprovalGroups group policy
Untrusted repos can carry instructionsOpen unfamiliar repositories in untrusted modeWorkspace trust (~/.bob/trustedFolders.json, /permissions)
README and web content are input, not instructionsReview the agent's plan before approving commandsPlan mode, edit preview
The agent shell is not a sandboxRun on a workstation or container with no production credentialsYour environment
Config files can widen trustUntrusted folders disable project config and MCP serversWorkspace trust

DisabledAutoApprovalGroups accepts these groups: read, edit, execute, mcp, skill, todo, subtask, subagent, and mode [IBM, group policies]. An administrator can lock auto-approval off for any of them. Group policy is delivered as a macOS MDM profile (com.ibm.bob), a Windows policy (Software\Policies\IBM\Bob, ADMX/ADML via GPO or Intune), or a Linux /etc/bob/policy.json that is root-owned [IBM]. IBM documents group policies as Bob IDE only at the time of writing, so confirm Bob Shell coverage before you rely on it for CI runners.

An illustrative, unverified Linux policy file following that pattern (the exact JSON schema is not in our sources, so treat the key shape as an assumption and check IBM's group-policies page):

{
  "DisabledAutoApprovalGroups": ["edit", "execute", "mcp", "skill"],
  "UpdateMode": "manual"
}

The control IBM added after the incident, enforced hooks, is the one that lets you apply deterministic checks regardless of what the model decides. We cover it in Part 3.

๐Ÿ’ก Key insight: The PromptArmor finding was against a beta, and the specific bugs were reported fixed in intent before GA. The durable lesson is architectural: whenever an agent can execute commands and read untrusted text, "approve once, trust always" converts a human-in-the-loop control into a one-time check. Configure your policy as if the next bypass exists.

๐Ÿ—๏ธ Self-Hosted Bob on OpenShift: What You Are Actually Deploying

IBM describes self-hosted Bob as "a self-managed deployment of the Bob AI code assistant platform on Red Hat OpenShift Container Platform (OCP)โ€ฆ for organizations that require control over data residency, security boundaries, network access, or deployment in disconnected environments" [IBM, overview].

Deployment shape

  • A Kubebuilder-based Bob Operator with Helm charts and the `bobctl` admin CLI [IBM].
  • Two namespaces, one for the operator and one for the instance. A dedicated cluster is not required [IBM].
  • Two-stage install: a cluster administrator approves the cluster-wide footprint once, then the Bob-owning team installs and upgrades without cluster-admin rights [IBM].
  • A single-node OpenShift is enough for a proof of concept [IBM, September blog].
  • Three install modes: direct (outbound to the IBM registry), air-gapped direct mirroring, and air-gapped indirect mirroring [IBM].

SaaS versus self-hosted, side by side

SaaSSelf-hosted
InfrastructureIBM-hostedYour OpenShift, on-prem or in your cloud account
OperationsIBM handles upgrades and scaleYou own the lifecycle; in-place upgrades not supported at GA
ModelsAuto-routed multi-modelOne core model plus guardrail; bring your own license
IdentitySAML or OIDC SSO at bob.ibm.comBundled Keycloak, federated to LDAP or AD
BobalyticsYes (Enterprise)Not supported
Activity logs in Admin UIYesNo; read pod logs
Developer clientsBob IDE and Bob ShellSame clients; endpoint distributed via group policy

Supported versions and platform

ItemValue [IBM, system requirements]
Bob self-hosted / IDE / Shell2.0.0 / 2.2.0 / 2.0.5
Backend architectureamd64 only (mixed-architecture clusters are acceptable if Bob workloads are confined to amd64 nodes)
OpenShift4.20, 4.21, 4.22
Workstation toolsbobctl, oc (minimum OCP 4.20), helm 3.14.0 or later, bash 3.2 or later, openssl 3.5 or later
Dependenciescert-manager; an LLM endpoint provisioned before install
Image sourcesBundle from the IBM Bob GitHub repo; images from cp.icr.io; IDE extensions from Open VSX

That last row is a security-review item, not a footnote. In an air-gapped environment you must mirror the images and make the IDE extension available to developers without internet access, and the extension marketplace is Open VSX rather than the Microsoft marketplace. Your workstation hardening team needs to know that before rollout.

Sizing, with our arithmetic shown

IBM publishes aggregate Bob-tenant requirements, excluding platform overhead:

Stack configurationCPU (raw)Memory (raw)Storage (PVs)Status
Bob Core22.1 vCPU35.1 GiB~30 GiBBaseline available
Bob Core + RAG38.1 vCPU69.1 GiB~62 GiBBaseline available
Bob Core + Z Understand30.1 vCPU74.1 GiB~2,288 GiBBenchmarking in progress
Bob Core + RAG + Z Understand46.1 vCPU108.1 GiB~2,320 GiBBenchmarking in progress

The Z Understand rows belong to the IBM Z premium package and are irrelevant to a Maximo shop unless you also modernize mainframe code. The first two rows are yours.

IBM's Bob Core production footprint is 28.1 vCPU, 41.1 GiB memory, and about 50 GiB storage raw, or about 36.5 vCPU and 53.4 GiB with 25 to 30 percent headroom [IBM].

The minimum reference topology for a dedicated cluster:

Node roleCountPer nodeAggregate
Control plane34 vCPU / 16 GiB12 vCPU / 48 GiB
Infrastructure3~4 vCPU / ~16 GiB12 vCPU / 48 GiB
Worker320 vCPU / 24 GiB / 200 GiB disk60 vCPU / 72 GiB / 600 GiB
Total9~84 vCPU / ~168 GiB / 600 GiB

After OpenShift overhead, IBM says the worker pool yields about 57 vCPU and 63 GiB allocatable [IBM, per DOC16].

TMG arithmetic, not an IBM statement. Take the 63 GiB allocatable figure against the footprints above. Bob Core with headroom (53.4 GiB) fits. Bob Core + RAG at 69.1 GiB raw, or roughly 90 GiB with 30 percent headroom, does not fit on the minimum worker pool. If you want the RAG add-on (IBM's retrieval over its documentation), size the workers up, or plan separate workers for it. The reference topology is a floor for Bob Core, not a recommendation for everything.

What the numbers exclude: GPUs. IBM says model resource needs "depend on model quantization, context length, serving runtime (such as vLLM or TGI), and target throughput," and publishes no GPU sizing [IBM; BERI]. If you run an open-weight model on-cluster, your largest cost line is not in IBM's table.

Storage

IBM lists PostgreSQL (RWO, SSD block storage strongly recommended), OpenSearch (RWO), Redis (RWO), and shared config and certificates (RWX). Supported storage classes are managed NFS and OpenShift Data Foundation, and a separate backup target is required [IBM]. For a Maximo platform team, the point is that Bob brings its own stateful stack. Do not assume your existing MAS storage class and backup process cover it without checking.

Internals worth knowing for a security review

ComponentRole
KeycloakIdentity; LDAP or AD federation (SCIM sync described)
bob-authn, bob-authzAuthentication and authorization services
OpenRestyAPI gateway
Bob AdminAdministration UI and API
Metrics Collector / ForwarderTelemetry path
Inference Service with BifrostThe Model Gateway and router
PostgreSQL, RedisAuth, admin, and telemetry data; telemetry cache
Vector audit storeAudit event store
OpenSearch, Db2Only with the Z add-on (RAG corpus, Z Understand)

Premium packages use a two-layer entitlement: the cluster administrator enables workloads in config.yaml (for example rag.enabled and zProxy.enabled), and the Bob administrator assigns user entitlements in the Admin UI [IBM]. That separation is useful. Your platform team controls what runs, and your Bob admin controls who may use it.

Usage metering reports a single metric, the total number of active users, with no user identities. Air-gapped clusters download a payload manually and upload it to IBM Software Central [IBM].

โš ๏ธ What Self-Hosted Bob Costs You at GA

IBM is unusually direct about limitations. The known-limitations page lists these [IBM]:

#LimitationPractical consequence
1Activity Logs are not in the Admin UI. "The Activity Logs feature is not included in the Bob Admin UI for this release."Read service logs through the OpenShift console or CLI
2In-place upgrades not supported. "Controlled in-place upgrades are not supported in this release." Fresh installs are recommended; hotfixes can be applied with ./bobctl installPlan a migration path for every version change
3unknown model: zproxy error if the backend lacks the required Z componentsSet rag.enabled: true and zProxy.enabled: true in config.yaml before assigning Z entitlements
4Bobalytics not supported. It "is not available in the IBM Bob on-premises stack"No built-in adoption or Bob-factor analytics (Part 3)

Two more items come from other IBM pages and matter just as much:

  1. Audit Logs and Metering Services. The solution-architecture page says both are "Not included in the initial release; planned for a future release." This conflicts with IBM's September release blog (see the next section).
  2. Security event monitoring is yours. The overview says "Security event logging and monitoring for Bob self-hosted are managed at the OpenShift platform level and are not provided by Bob."

Put the SaaS and self-hosted pictures together and the trade is clear. You gain control: data residency, network boundary, model choice, air-gap capability. You lose: automatic routing, a frontier-grade default model, Bobalytics, in-place upgrades, and the convenience of IBM operating the platform. For a Maximo shop whose rule is "the code does not leave the building," that is a fair trade. For a shop whose rule is "we want the best output," it may not be.

Pod logs as an interim audit source

Because the Admin UI does not show activity logs, the practical interim control is to treat the three identity and admin services as log sources. A small sketch with oc, using placeholder names for your own instance namespace (the pod label selectors are assumptions to adapt):

# Illustrative: collect recent auth/authz/admin service logs for review
NS=bob-instance            # your instance namespace (placeholder)
for svc in bob-authn bob-authz bob-admin; do
  oc -n "$NS" logs deployment/"$svc" --since=24h > "audit-${svc}-$(date +%F).log"
done

Better: forward those namespaces' logs through your existing OpenShift logging stack to your SIEM, so that retention and alerting follow your normal rules rather than a script.

๐Ÿงพ The Audit-Logging Conflict, Stated Plainly

This is the single most important unresolved item for a self-hosted Maximo buyer.

IBM sourceWhat it says about audit logging and metering on self-hosted
September 2026 release blogThe backend "includes identity, the inference gateway, audit logging, and usage metering"
Solution-architecture pageAudit Logs service and Metering Service: "Not included in the initial release; planned for a future release"
Known-limitations pageActivity logs not in the Admin UI
Self-hosted overviewSecurity event logging "not provided by Bob"; managed at the OpenShift level
Usage-metrics pageDescribes Usage Metering Service active-user reporting

These cannot all be literally true of the same GA build. One possible reading is that an audit-log store (the Vector component) exists while the service and UI around it do not, but that is our inference, not IBM's statement. Do not tell a client that self-hosted Bob has an audit trail until IBM answers in writing, and ask specifically: which events are recorded, where, in what format, for how long, and whether they include agent actions (prompts, tool calls, file edits) or only identity and admin events.

The same question applies on SaaS. The CADF activity log covers authentication and admin events, and DOC16 could not confirm whether prompts, tool calls, and file edits reach the Splunk SIEM feed [IBM, per DOC16]. For agent-action audit you will likely rely on enforced hooks, which Part 3 covers.

โœ… A Security Review Checklist for Bob

Use this as the skeleton for your vendor review. Each line is a question to put to IBM or a control to verify yourself.

Model and data

#QuestionWhere to lookStatus after this post
1Which model versions process our data on SaaS?IBM account teamNot disclosed
2Is routing configurable per tenant?IBM account team"No" per FAQ; confirm
3Is payload retention contractual, not just FAQ?Enterprise terms and DPAVendor statement only
4Which sub-processors host the third-party models?DPANot covered in sources
5Which region will we select, and does the metadata caveat satisfy our policy?Data-residency docDocumented
6Do we hold Enterprise seats for IP indemnity?ContractEnterprise only
7Can we obtain the ISO 27001 certificate and pen-test summary?NDA requestAvailable under NDA

Agent behavior

#QuestionControl
8Is auto-approval for execute and mcp disabled by policy?DisabledAutoApprovalGroups
9Are unfamiliar repositories opened in untrusted mode?Workspace trust
10Do developer machines hold production credentials?Environment hardening
11Is the agent allowed to browse the web or use MCP servers that do?MCP configuration; web_fetch is experimental
12Are secrets files excluded from context?.bobignore, understanding it is not a sandbox

Self-hosted only

#QuestionControl
13Is the OpenShift version 4.20 to 4.22 on amd64?Platform inventory
14Is the model endpoint provisioned and reachable before install?Pre-install check
15Is a guardrail model deployed?security slot
16Are images mirrored, and is Open VSX reachable or mirrored?Air-gap plan
17Where do audit and security events go?OpenShift logging to SIEM
18What is the upgrade plan given no in-place upgrades?Runbook
19Who owns GPU capacity, and what is the budget?Platform team

๐Ÿงญ Connecting This to a Maximo Estate

All of the above is generic to any enterprise. Here is how it lands on Maximo specifically.

Maximo content is not all equal sensitivity. Sort it before you decide on a deployment model.

Maximo assetSensitivitySuggested handling
Public sample scripts, open-source templates (for example the MIT-licensed Max_autoscripts repository)LowAny tier, any deployment
Your automation scripts and application XMLMedium to highEnterprise seat, auto-approve locked
Integration code, endpoint and queue namesHighEnterprise, consider self-hosted
maximo.properties, keystores, API keysCriticalNever in agent context; .bobignore plus no production credentials on the workstation
Production dataCriticalAgent must never touch the database; use API-layer tools with a least-privilege key (Part 4)

The agent should reach Maximo through the API layer, never the database. This is the same boundary that governs Maximo development generally, and it carries over to agents. Part 4 covers connecting Bob to the MAS 9.2 native Maximo MCP server and to purpose-built MCP servers, using a dedicated read-only key first. The reason it belongs in a security post: an MCP tool call runs under Manage's REST and security layer, so the agent inherits Manage authorization, business rules, and validation. The inverse is also true. A key with broad permissions gives the agent broad permissions, and an agent tricked by a prompt injection will use whatever the key allows. That is why mcp belongs on your locked auto-approval list.

Self-hosted Bob is not the same as Maximo on-prem. Plenty of teams assume that because MAS runs on OpenShift, Bob will slot into the same cluster. It can run as an ordinary namespaced workload and a dedicated cluster is not required, but capacity planning, storage, and backups are separate from your MAS footprint. Treat it as another platform workload with its own owner.

โš ๏ธ Pitfalls and Troubleshooting

Symptom or mistakeLikely causeWhat to do
"We approved Bob because it is zero-retention"A FAQ line was treated as a contract termGet the DPA and data-flow diagram; keep the FAQ statement labeled vendor-stated
EU team assumes everything stays in FrankfurtAccount, admin, policy, and billing metadata are in US EastDocument the metadata caveat in the risk register; consider self-hosted
Output differs between two runs of the same promptSaaS routing may select a different model; versions undisclosedReview diffs like human code; keep regression tests
Consultancy developers use personal Pro seats on client codeNo IP indemnity outside EnterpriseEnforce Enterprise seats for client work
Developer chose "always allow" for a commandThe exact pattern PromptArmor exploitedLock execute and mcp auto-approval via policy
unknown model: zproxy on self-hostedZ entitlement assigned without Z components enabledSet rag.enabled and zProxy.enabled in config.yaml first
Bobalytics link goes nowhere on self-hostedBobalytics unsupported on-prem; link may redirect to SaaS or be unreachable when air-gappedDo not promise Bobalytics reporting to self-hosted users
Install fails pre-flightLLM endpoint not provisioned before installStand up and test the model endpoint first
Promised an audit trail, cannot find oneThe docs conflictUse pod logs and OpenShift logging; get IBM's answer in writing
Air-gapped output quality disappointsOpen-weight model tier below frontierRun your own 20-ticket test; consider a frontier model in your own cloud
Plan to upgrade in place failsNot supported at GAFresh install; use ./bobctl install for hotfixes only
RAG add-on pods pendingWorker pool sized to the Bob Core floorSize workers for the RAG footprint (about 90 GiB with headroom, our arithmetic)

๐Ÿ”Ž Open Items to Close With IBM

We verified what we could. These items we could not verify or where IBM's sources conflict. Put them on your vendor questionnaire.

  1. Self-hosted audit logging and metering. Conflict described above.
  2. SaaS audit scope. Whether prompts, tool calls, and file edits reach the Splunk SIEM feed.
  3. Model versions and routing policy on SaaS. Undisclosed.
  4. Self-hosted model identifiers. Gemini 3.7 Flash versus gemini-3.6-flash; Mistral 3.5 versus mistral-medium-3-5-0.
  5. Compliance artifacts. No public SOC 2, FedRAMP, or ISO 42001 statement; only ISO 27001 under NDA.
  6. Guardrail mechanisms. Named by IBM, not documented.
  7. Rollback and git. The V2 blog says rollback no longer depends on git, but the FAQ still says "The Rollback feature uses Git." Matters if your Maximo repositories live outside git.
  8. Group policies on Bob Shell. Documented as Bob IDE only; CI runners need confirmation.
  9. Self-hosted GPU sizing and price. Neither is published.
  10. Self-hosted GA date. Release notes say September 24, 2026; IBM's newsroom announcement is dated October 1; one fact base records September 30. Quote it as "GA per release notes September 24, 2026; announced October 1, 2026."
  11. PromptArmor remediation. We found IBM's pre-GA commitment but no public line-by-line confirmation of each fix.

๐Ÿงญ What to Take Away

The Ten Commandments of Reviewing an AI Agent for Maximo

  1. Label every vendor claim as vendor-stated until you hold the contract or the audit report.
  2. Ask which model, which version, and which region, and write down what you could not get answered.
  3. Treat a model you cannot pin as a reviewer-dependent tool, and put the diff, not the prompt, in the change record.
  4. Buy Enterprise seats for client work because indemnity is Enterprise-only.
  5. Document the metadata caveat if you pick regional SaaS for a sovereignty program.
  6. Lock auto-approval for execute and mcp before anyone opens a customer repository.
  7. Treat READMEs, web pages, and pasted logs as untrusted input to an agent that can run commands.
  8. Keep credentials off the workstation because .bobignore is not a sandbox.
  9. Size self-hosted for the add-ons you want, and budget GPUs as a separate line.
  10. Do not promise an audit trail until IBM tells you in writing where it lives.

Your next steps

This week:

  • Decide which Maximo assets (table above) may enter an agent's context, and write that down.
  • Put the eleven open items to your IBM account team.
  • If any developer already uses an individual Bob plan on client code, stop and resolve the seat type.

This month:

  • Draft the group policy: DisabledAutoApprovalGroups for edit, execute, mcp, and skill on machines that touch client code.
  • Decide SaaS versus self-hosted using the decision matrix, and capture the reasoning.
  • If self-hosted is in play, hand the sizing tables to your OpenShift team and ask for a GPU estimate for the model you intend to run.

Before any pilot:

  • Run your own 20-ticket test on the model tier you will actually deploy, and keep the results for Part 5.

References

Continue the Series

Next: Part 3, Governing Bob: Admin Controls, Bobalytics, Audit, Pricing, and Bobcoins. It covers enforced hooks, SSO, the CADF activity log and SIEM scope, Bobalytics' Bob factor, and what a Bobcoin costs.

Back to: Part 1, What IBM Bob Is | Series Index

About TheMaximoGuys: We help Maximo developers and teams navigate the move to MAS 9 with practical, no-hype guidance grounded in how the platform actually behaves.

Published by TheMaximoGuys | October 2026