TM1 IDE — The Complete IDE for IBM Planning Analytics / TM1
Author: flameY3T1
TM1 IDE turns VS Code into a full development environment for IBM Planning Analytics / TM1. Write TI processes and rules with real autocomplete and a server-backed compile check, browse and edit cubes and dimensions visually, run MDX, trace process call graphs, test processes without touching your data, and mirror everything to Git — all from one tree, across as many servers as you like.
If you've been switching between Architect, PAW, and a text editor, TM1 IDE replaces all three with a single, modern, keyboard-driven workflow. No prior VS Code experience required — this guide gets you running.
Why TM1 IDE
Most TM1 editors stop at "edit a process, push it back." TM1 IDE goes further:
- Visual cube & dimension editing — pivot cubes, write back values, spread, and restructure hierarchies by drag-and-drop. Not just code.
- Server compile-check on save — bad code never reaches the server. The save is blocked, not silently broken.
- Configurable linter + formatter — per-server rule sets and severities: strict on Prod, relaxed on Sandbox.
- Call-graph & references — see the blast radius of a process before you change it.
- Git mirror — materialize processes and rules as files, with drift detection and diff.
- Fully localized — complete English and German UI.
Getting Started
What you need
- VS Code — free from code.visualstudio.com
- TM1 IDE — install from the VS Code Marketplace (search "TM1 IDE")
- Network access to your TM1 server(s) — the REST API port must be reachable
- Optional: Git for version control and team workflows (git-scm.com)
Step 1 — Install
- Open VS Code.
- Click the Extensions icon in the left sidebar (or press
Ctrl+Shift+X).
- Search for "TM1 IDE".
- Click Install.
- Fully restart VS Code — a window reload is not enough.
A new TM1 Explorer icon appears in the activity bar — your main entry point.
Step 2 — Add a server
Click the TM1 Explorer icon in the activity bar (left side). On first start the tree is empty and shows an "Add Server" prompt.
Click that prompt — or run Ctrl+Shift+P → TM1: Add Server. A guided quick-pick opens and walks you through every field, one step at a time. No JSON, no config files to hand-edit:
| Step |
Field |
Notes |
| 1 |
Name |
a label like DEV, PROD, Sandbox — this is what shows in the tree |
| 2 |
URL |
full REST API URL, e.g. https://localhost:8010 |
| 3 |
Auth |
Basic (native TM1) or CAM / IBM Security |
| 4 |
Namespace |
CAM only — ask your admin (e.g. LDAP) |
| 5 |
User |
login name |
| 6 |
Password |
stored in VS Code SecretStorage (OS keychain), never in plain text |
| 7 |
SSL |
verify the certificate (prod) or allow self-signed (local/dev) |
After the last step the profile is saved and connected automatically — the server appears in the tree with a green icon.
Repeat for every environment you work with. All profiles stay listed side by side, and you can hold multiple parallel connections open at once (e.g. DEV and PROD together).
Manage & edit servers from the tree
Everything is reachable from the TM1 Explorer — no settings file:
- Connect / disconnect — click a server in the tree, or right-click → Connect / Disconnect. The icon turns green when connected.
TM1: Select Server — reopens the server manager: a list of all profiles where one click connects or disconnects, plus buttons to add, edit, or remove.
- Edit a server — right-click the server → Edit Server (or Edit in the manager). The same guided quick-pick reopens with the current values pre-filled; step through and change only what you need. Changing the URL, auth, or SSL takes effect on the next connect.
- Change the password — re-run Edit Server and step to the password field; the new value replaces the one in SecretStorage.
- Remove a server — right-click → Remove (or the manager's remove action). This drops the profile and its stored password.
Step 3 — Browse
Once connected, the TM1 Explorer shows Cubes, Dimensions, Processes, Chores, Views, plus per-server Files, Threads, Message Log, and the MDX Runner. The server icon turns green when connected.
Your First Steps
Open a process or rule
Click any process in the tree → TM1 IDE downloads the code and opens a Monaco editor with:
- all four procedure sections (Prolog, Metadata, Data, Epilog) plus Parameters, DataSource, Variables as tabs;
- TM1 syntax highlighting and autocomplete;
- a toolbar with Save · Save As… · Format · Run · Debug.
Edit & save
Make your changes and press Ctrl+S. On save, TM1 IDE:
- writes the file (and, with Git mirror on, the local mirror file);
- sends it to the TM1 server for a real compile check;
- if TM1 rejects the code, nothing is saved — you get a red banner and a line marker. Green on success.
Bad code never silently lands on the server.
Run a process
Two ways:
- Toolbar — click Run in the editor.
- Tree — right-click a process → Execute.
If the process has parameters, a form appears — your last values are remembered.
Debug a process
- Click Debug in the editor toolbar.
- Set parameter values if prompted.
- The debugger starts and pauses at the first line. Use breakpoints, step over / into / out, and live variable hover.
Requires EnableTIDebugging=T on the server.
The TM1 Explorer
Right-click any node for its actions:
| Category |
Actions |
| Cubes |
Cube Viewer · Edit Rules · RAM stats · Save Data · Load / Unload |
| Dimensions |
Dimension Editor · browse hierarchies + subsets |
| Processes |
Edit · Run · Debug · Deploy to another server · Find references · Call-Graph |
| Chores |
Activate / Deactivate · Run · Edit |
| Views |
open Cube Viewer with a saved view |
| Subsets |
Subset Editor |
Header buttons filter the tree and toggle system objects (}* prefix). A Recently Used section gives one-click re-access to the objects you touch most.
Key Features
IntelliSense & autocomplete
As you type, TM1 IDE suggests TI and rule functions with signature tooltips, plus cube, dimension, subset, and element names pulled live from your server, and variables from the current file. CamelCase and infix matching included.
TI process editor
Two lint layers — a built-in linter (live: syntax, cube/dim existence, dead code, performance hints, V12-deprecated calls) and the server compile-check on save. Plus Rename Symbol (F2, across all four sections), Find References (Shift+F12), and a Resolver tab showing how TM1 resolves each ExecuteProcess() argument.
A per-server ⚙ lint menu toggles individual rules (Naming / Dead-code / Style families) and sets severity — strict on Prod, relaxed on Sandbox. The editor's Format button (or Ctrl+Shift+I) auto-formats TI code with consistent indentation, casing, and spacing.
Rule editor
Monaco editor with TM1 highlighting and context-aware autocomplete ([ → dimensions · ' inside DB(...) → cubes/elements · !Dim → dimension variables · function signatures). Lint + CheckRules compile-check on save (save blocks on error). Qualify Elements rewrites [Element] → [Dim:Element] for legacy rules.
Call-graph & references
Right-click a process → an interactive graph of process→process ExecuteProcess chains and chore→process links. Click a node to jump. Know the blast radius before you change anything.
Cube Viewer
Drag-and-drop pivot across Row / Column / Title axes.
- Write-back — double-click an N cell, type, Enter.
Ctrl+Z undo. Rule-derived / locked cells are read-only.
- Spreading — Proportional / Repeat / Percentage / Clear, plus inline
~, ~N, %N, !N syntax.
- Suppress zero/empty, Save View… (public or private), and local drill/focus.
- Paged loading keeps huge cubes and dimensions responsive.
Dimension Editor
Tree editor with drag-and-drop parent/child and multi-edit attributes. Commit backend adapts automatically — few edits go via individual REST calls, many edits via an on-the-fly TI process. A usage check before delete scans the element across all cubes and subsets and warns if it's in use.
MDX Runner
A Monaco MDX editor (F5 to run) with autocomplete, live validation, pivoted results, TSV copy, a query history, and a cell-limit guard for very large results.
Subset builder
The Dimension Browser builds subsets visually — wildcard pattern (* / ?), level, and attribute-value filters — and generates the matching MDX for you.
Threads & Message Log
A live Thread Viewer (user, status, function, object, runtime) with a Pause that freezes auto-refresh so you can kill a long thread without the table re-sorting. The Message Log streams the latest server entries with level filter and full-text search.
Chore Manager
View and manage scheduled chores in a table — activate/deactivate, run on demand, create/edit/delete, and inspect run history.
Security Manager
Manage security groups and user assignments through a visual matrix — toggle memberships by clicking cells.
Git mirror (optional)
Materialize processes and rules as local files (*.ti / *.pro.json / *.rux) so you version them with plain Git. The model: TM1 server = source of truth; Git mirror = audit log + backup + undo path. Webview saves write both the server and the local file; tree actions Pull / Push / Diff Local ↔ Server; an editor banner warns when the server has diverged. The extension never commits or pushes for you.
Deployment
Transport a process or rule to another server straight from the tree (Deploy to another server), or use the local .pro deploy shortcuts below.
Keyboard Shortcuts
| Action |
Windows / Linux |
Deploy local .pro to server |
Ctrl+Shift+U |
Run local .pro |
Ctrl+Shift+R |
| Deploy and run |
Ctrl+Shift+E |
| Debug (editor) · Run query (MDX) |
F5 |
| Save / Save As (process) |
Ctrl+S / Ctrl+Shift+S |
| Format code (process editor) |
Ctrl+Shift+I |
| Rename symbol (TI variables) |
F2 |
| Find references |
Shift+F12 |
Working with Git (optional)
TM1 IDE works perfectly without Git — connect, edit, save. Turn on the Git mirror (tm1.git.enabled) and you also get history, branching, code review, and CI/CD-friendly file layout.
# Create a branch for your task
git checkout -b feature/new-calculation
# After editing in TM1 IDE (server + local file are written on save):
git add .
git commit -m "Add margin calculation to Finance cube"
git push
Then open a Pull/Merge Request in your Git platform to promote to the next environment.
Security & privacy
Built for corporate environments:
- No telemetry — no usage data leaves your machine.
- Credentials in the OS keychain — passwords live in VS Code SecretStorage, never in plain text or config files.
- Direct connection only — all traffic goes from your machine straight to the TM1 servers you configure. No third-party endpoints.
- Per-profile SSL —
rejectUnauthorized is set per server; disable self-signed verification only on trusted networks.
- Untrusted workspaces — because TM1 IDE can deploy and run TI code, it is disabled in Restricted Mode. Mark the folder Trusted to use it.
- Remote-ready — runs as a
workspace extension (Remote-SSH / WSL: on the host that can reach TM1).
Troubleshooting
| Problem |
Cause / fix |
| Can't connect to server |
Check the REST API port is reachable; verify SSL matches the server. Test with curl https://<host>:<port>/api/v1/Server. |
HTTP 401 |
Wrong user/password — Edit Server. |
HTTP 401 with CAM |
Wrong namespace — ask your admin. |
| Save fails / not saved |
Compile-check failed (read the red banner) or the server is unreachable / the object was renamed. |
| Tree empty though connected |
TM1: Refresh Server (header icon). |
| Debugger won't start |
Ensure EnableTIDebugging=T is set on the server. |
| Autocomplete missing server objects |
Needs an active connection — disconnect and reconnect. |
TM1: Test Connection (Diagnostics) does a single roundtrip against /api/v1/Server and reports the HTTP status.
Where data is stored
| Data |
Location |
| Server profiles (name, URL, user, auth, SSL flag) |
VS Code globalState (tm1.servers) |
| Passwords |
VS Code SecretStorage (OS keychain, encrypted) |
| Per-server lint config, active server IDs, snippets |
globalState |
| Git mirror |
filesystem under tm1.git.repoPath |
Profiles are publisher-bound — they survive uninstall and are reused on reinstall.
Support
Questions, bug reports, or feature requests — open an issue on the project repository or contact the author.
License
Proprietary. Copyright (c) 2026 flameY3T1. All rights reserved. See the LICENSE file included in this package.
The source code is private and confidential. Access granted to selected
individuals does not include any right to redistribute, publish, or disclose it
to third parties. The right to publish compiled builds (e.g. the VS Code
Marketplace) is reserved exclusively to the copyright holder.