Starting the app
See Installing if you haven't installed Janissary yet.
Run
> janusfrom the project directory.

By default each launch starts fresh: a single janus tab, with any state from the previous session cleared. To pick up where you left off instead, use --relaunch (below).
Arguments
| Argument | What it does |
|---|---|
<project-dir> | Target directory to work against (default: current directory). |
Flags
| Flag | What it does |
|---|---|
--port=<n> | Listen on port n (1–65535). Without it, a free port is picked automatically. |
--no-open | Start the server without opening the app window. |
--relaunch | Restore the previous session instead of starting fresh. |
--help | Print usage and exit. |
--version | Print the name and version and exit. |
A mistyped flag, a bare --port with no value, or a port outside 1–65535 stops the launch with an error and a pointer to --help — nothing is started and no state is touched.
Resuming a session with --relaunch
janus --relaunch
--relaunch rebuilds your tabs as you left them: every agent tab comes back in its saved order with its dot color, group, transcript, command history, and working directory. Tab aliases and scheduled commands are restored too. What doesn't come back: view tabs (images, Markdown, editors, web pages), harness tabs, and workspace clones — those are live views and processes, not saved state.
Troubleshooting
If startup fails, the error names the app and version, says what went wrong, and suggests what to do next. The two you're most likely to see:
- The port is already in use — something else is listening on the port you asked for. Pick another with
--port=<n>, or drop--portentirely and let the app choose a free one. - Another instance is already running here — a second
januslaunched against the same directory as a still-running instance is rejected with the live process's ID. Runjanus <dir>to start a second instance against a different directory.
Configuration
Settings live in .janissary/config.json inside the directory you launch from; a default file is created on first launch. All three settings are editable:
| Setting | Default | What it does |
|---|---|---|
transcriptMaxLines | 25000 | How many transcript entries each tab keeps. Past the cap, the oldest entries are dropped. |
tabNameMaxLength | 16 | The longest tab name shown in the strip when a tab is created; the strip truncates to fit. Renaming via rename or double-click accepts up to 50 characters regardless of this setting. |
syntaxTheme | "github-dark" | The syntax-highlighting theme for editor tabs. Change it at runtime with syntax theme <name>. |
If the file isn't valid JSON, the app warns on startup and falls back to defaults for that session — your file is left untouched so you can fix it.