Traditional terminals are excellent command environments, but they are a poor substitute for rich application UI. Text flow, highlighting, animation, media, layout, and direct manipulation all become awkward when everything must be squeezed through terminal cells.
Chimera keeps the power of the TTY and pairs it with the modern web stack. A command can run like any other terminal process, then use HTTY to attach local browser surfaces for richer interaction when terminal rendering is no longer enough.
Warning
Chimera and the surrounding HTTY stack are experimental. Expect protocol, configuration, and application behavior to evolve. In addition, feel free to contribute feedback, bug reports, and code to help shape the future of this project.
Install the latest packaged build from GitHub Releases:
Packaged builds can check for updates from the Chimera application menu.
Open Chimera and start a shell with File > New Tab or Cmd/Ctrl+T. You can use it like a regular terminal.
To see an HTTY surface, run one of the included examples from a development checkout:
node examples/browser-demo.mjsChimera will keep the terminal session open and create a browser tab for the attached HTTY application.
Bookmarks are command shortcuts shown in the Bookmarks menu. They are useful for SSH sessions, project shells, and small HTTY tools.
Use Bookmarks > Edit Bookmarks... to edit them interactively. The default file is:
~/.local/state/chimera/bookmarks.json
A minimal bookmark looks like this:
[
{
"title": "My Server",
"command": "ssh",
"args": ["my-server"]
}
]Bookmarks can also contain separators and nested groups. See Help > Bookmarks inside Chimera for the full format.
Use Chimera > Edit Configuration... to edit settings interactively. The default configuration file is:
~/.local/state/chimera/configuration.json
You can override the path with CHIMERA_CONFIG_PATH and select a profile with CHIMERA_CONFIG_PROFILE.
Common options include terminal font settings, theme stylesheet, and update checks:
{
"terminal": {
"fontFamily": "\"JetBrains Mono\", \"SFMono-Regular\", monospace",
"fontSize": 14,
"lineHeight": 1.0,
"scrollback": 1000
},
"theme": {
"stylesheet": "theme.css"
},
"updates": {
"enabled": true,
"autoCheck": true,
"recheckIntervalHours": 24
}
}Relative stylesheet paths are resolved from the directory containing the configuration file. Terminal and theme changes are applied to existing windows when the configuration editor saves.
Chimera is the desktop client in the HTTY ecosystem:
protocol-httydefines the DCS bootstrap used to negotiate an attached session.protocol-http2provides the HTTP/2 wire semantics carried as plaintexth2cafter bootstrap.async-httyintegrates HTTY with Ruby Async applications.htty-jsprovides the JavaScript@socketry/httypackage used by Chimera and the examples.
- Chimera runs command processes in the Electron main process using a PTY by default.
@socketry/httydetects the HTTY bootstrap and provides client/session primitives.- After bootstrap, Chimera forwards requests and responses between the attached HTTP/2 session and Electron browser surfaces.
- One command process maps to one Chimera session, and a session can expose multiple browser surface tabs.
We welcome contributions to this project.
- Fork it.
- Create your feature branch (
git checkout -b my-new-feature). - Commit your changes (
git commit -am 'Add some feature'). - Push to the branch (
git push origin my-new-feature). - Create new Pull Request.
Install dependencies:
npm installStart the app:
npm startRun the unit tests:
npm testRun the Electron end-to-end tests:
npm run test:e2eBuild release artifacts locally:
npm run distIn order to protect users of this project, we require all contributors to comply with the Developer Certificate of Origin. This ensures that all contributions are properly licensed and attributed.
This project is best served by a collaborative and respectful environment. Treat each other professionally, respect differing viewpoints, and engage constructively. Harassment, discrimination, or harmful behavior is not tolerated. Communicate clearly, listen actively, and support one another. If any issues arise, please inform the project maintainers.