Webterminal
The first and the most powerful web-based terminal for InterSystems IRIS®, InterSystems Caché®, Ensemble®, HealthShare®, TrakCare® and other products built on top of InterSystems Data Platforms.
Install / Use
/learn @intersystems-community/WebterminalREADME
Web Terminal
Web-based terminal for InterSystems products. Access your database from everywhere!
- Visit the project's page for more details.
- Download the latest version from here.
- Read more and discuss WebTerminal on InterSystems Developer Community.
- Read complete documentation about WebTerminal.
Preview
Syntax highlighting & intelligent autocomplete!

Embedded SQL mode!

Even more features!

Key Features
<table> <tr> <td class="info">Native browser application</td> <td>Allows to access Caché terminal both from desktop and mobile devices.</td> </tr> <tr> <td class="info">Autocompletion</td> <td>Type faster. Autocomplete is available for class names, variable and global names, methods, properties, etc.</td> </tr> <tr> <td class="info">Tracing</td> <td>Monitor any changes in globals or files.</td> </tr> <tr> <td class="info">SQL mode</td> <td>A convenient way to execute SQL queries.</td> </tr> <tr> <td class="info">Syntax highlighting</td> <td>Intelligently highlighted input both for ObjectScript and SQL.</td> </tr> <tr> <td class="info">Favorites</td> <td>Save commands you execute frequently.</td> </tr> <tr> <td class="info">Security</td> <td>All you need is to protect /terminal/ web application, and all sessions are guaranteed to be secure.</td> </tr> <tr> <td class="info">Self-updating</td> <td>WebTerminal of version 4 and higher prompts to update automatically when new version is available, so you will never miss the important update.</td> </tr> <tr> <td class="info">Explore!</td> <td>Enjoy using WebTerminal!</td> </tr> </table>Installation
Download the latest version from the <a href="http://intersystems-community.github.io/webterminal/#downloads">project page</a> and import downloaded XML file into any namespace. Compile imported items and the WebTerminal is ready!
Usage
After installation, you will be able to access application at http://[host]:[port]/terminal/ (slash at the end is required).
Type /help there to get more information.
Integration and WebTerminal's API
To embed WebTerminal to any other web application, you can use <iframe> tag. Example:
<iframe id="terminal" src="http://127.0.0.1:57772/terminal/?ns=SAMPLES&clean=1"></iframe>
Note that terminal URL may include optional GET parameters, which are the next:
ns=USERNamespace to open terminal in. If the logged user has no access to this namespace, the error message will appear and no namespace changes will occur.cleanStart the WebTerminal without any additional information printed. It is not recommended to use this option if you are using terminal as a stand-alone tool (for everyday use), as you can miss important updates.
To use WebTerminal's API, you need to get WebTerminal instance first. Use iframe's
onTerminalInit function to get it.
document.querySelector("#terminal").contentWindow.onTerminalInit(function (terminal) {
// now work with terminal object here!
});
This function is triggered after WebTerminal establish an authorized connection.
The next table demonstrates available API. Left column are terminal object properties.
The next example demonstrates a way to intercept terminal's input:
let iFrame = document.querySelector("#terminal");
function myInitHandler (terminal) {
terminal.execute("set hiddenVariable = 7", {
echo: false // the default is false, this is just a demo
});
terminal.onUserInput((text, mode) => {
if (mode !== terminal.MODE_PROMPT)
return;
terminal.print("\r\nYou've just entered the next command: " + text);
});
terminal.onOutput((chunks) => {
// If you "write 12", chunks are ["\r\n", "12", "\r\n"].
// If you "write 1, 2", chunks are ["\r\n", "1", "2", "\r\n"].
if (chunks.slice(1, -1).join("") === "duck") { // if the user enters: write "duck"
alert(`You've found a secret phrase!`);
}
});
}
// At first, handle iFrame load event. Note that the load handler won't work
// if this code is executed at the moment when iFrame is already initialized.
iFrame.addEventListener("load", function () {
iFrame.contentWindow.onTerminalInit(myInitHandler); // handle terminal initialization
});
WebTerminal Project Development
We are glad to see anyone who want to contribute to Web Terminal development! Check our developer's guide.
To be short, the "hot start" is extremely easy. Having latest Git and NodeJS installed (tested on NodeJS v4-8), execute the following:
git clone https://github.com/intersystems-community/webterminal
cd webterminal # enter repository directory
import # build & import the project. YOU NEED TO EDIT CONSTANTS IN THIS FILE FIRST
Now, in build folder you will find WebTerminal-v*.xml file. Every time your
changes are ready to be tested, just run import again.
Related Skills
node-connect
346.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
346.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
346.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
