
Research
/Security News
737 Chrome VPN Extensions Linked to Brand Impersonation and Browser Traffic Redirection
The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.
@omniterm/plugin-types
Advanced tools
Type-only contract between omniterm and its tab-type plugins: TabTypePlugin, HostContext, PluginInstance, and the workspace shapes they carry. No runtime code.
The type-only contract between omniterm and
its tab-type plugins. Every export is a TypeScript interface or type — there is
no runtime code, and every import of this package is erased at build time.
Install it as a dev dependency, keep it external in your bundler, and install Express as a runtime dependency:
npm install --save-dev @omniterm/plugin-types
npm install express
import { Router } from 'express';
import type { TabTypePlugin } from '@omniterm/plugin-types';
export default function createMyPlugin(): TabTypePlugin {
let nextId = 1;
return {
type: 'my-plugin',
label: 'My Plugin',
proxyPrefix: '',
manifest: {
type: 'my-plugin',
label: 'My Plugin',
ephemeral: true,
tabTypeChoice: { label: 'My Plugin' },
endpoints: { create: '/api/my-plugin/instances' },
iframe: { urlTemplate: '/my-plugin/{id}' },
},
createRouter() {
const router = Router();
router.post('/api/my-plugin/instances', (_req, res) => {
res.json({ id: `my-plugin-${nextId++}`, name: 'My Plugin' });
});
router.get('/my-plugin/:id', (_req, res) => {
res.type('html').send('<!doctype html><h1>My Plugin</h1>');
});
return router;
},
};
}
Load it into a running host with omniterm --plugin <package-or-path>.
| Export | Purpose |
|---|---|
TabTypePlugin | The plugin object itself: routes, spawn, render mode, manifest. |
HostContext | Services the host hands a plugin: confinePath, broadcast, settings, repos, worktrees. |
TabInstance | Handle to one running tab, returned by spawn(). |
PluginInstance | The row shape the client reads from create / list. |
PluginManifestEntry | Data-only descriptor served at GET /api/plugins. |
SpawnArgs | What spawn() receives. |
Repo, Worktree, Settings | Workspace shapes reachable through HostContext. |
@omniterm/core re-exports all of these, so host-internal code can keep importing
from its own modules. This package is the single source of truth for the shapes.
This package follows the plugin contract, not the host version. A breaking change here is a major bump; a plugin pinned to a major stays compatible with every host release in that range.
MIT
FAQs
Type-only contract between omniterm and its tab-type plugins: TabTypePlugin, HostContext, PluginInstance, and the workspace shapes they carry. No runtime code.
We found that @omniterm/plugin-types demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.