- Added
--workerfor blocking or long-running operations in Jupyter%%thereand CLIrun/getcommands, replacing--backgroundfor synchronous CLI worker execution while keeping it as a compatibility alias
- Added
--backgroundworker-thread execution tothere runandthere getfor blocking or long-running operations - Fixed successful standalone
therecommands returning a non-zero exit status - Removed application-level input size limits from
there runandthere get - Changed the default SSH host-key path from
./key.rsato./ssh_host_keyand now generate missing host keys as Ed25519 instead of RSA
This release adds a standalone there command-line client for users and
coding agents.
- Added
ping,run,get,logs,shell,upload, anddownloadcommands - Added structured JSON output with bounded capture and stable exit codes
- Added configurable operation timeouts
- Added support for CLI command plugins
- Added a bundled
there-cliagent skill
- Changed
%%there aiprompt resolution so configured prompt stacks use the exact prompt names provided byset_ai_prompts(...)andTHERE_AI_PROMPTS; includedefaultexplicitly when it should be part of the stack
This release adds AI-assisted local generation of %%there notebook cells.
- Added
%%there aito use a configured language model to generate a new%%therePython cell from a natural language request - Inserted generated cells into the notebook for inspection or editing before they are run on the connected target
- Added
%%there ai --fixto generate a corrected replacement after a%%therePython cell fails or needs adjustment - Added configurable AI prompts so notebooks and integrations can include project-, runtime-, or framework-specific context
- Added
%there getcommand for retrieving remote Python values - Added
%there downloadcommand for downloading remote files and directories - Made single-path
%there uploadand%there downloaddefault to.as the destination - Added default local connection settings for
hereandthere - Renamed
HERE_CHROOTtoHERE_SFTP_ROOTand keptHERE_CHROOTas a deprecated alias - Improved
%theremagic command parsing, including support for quoted paths and arguments - Replaced nested event loop handling in Jupyter magics with a dedicated background event loop
- Made
hereserver logs quieter - Fixed port reuse after server shutdown
- Fixed cleanup behavior for background commands and remote log streaming
This release adds support for Python 3.10 through 3.14, modernizes the project packaging, and fixes several SSH command execution and shutdown hangs.
- Added support for Python 3.10 through 3.14
- Removed support for Python versions older than 3.10
- Modernized project packaging by moving to
pyproject.toml- Replaced
nest_asynciowithnest-asyncio2for the optional IPython magic integration- Fixed SSH command execution hangs when running long-lived commands
- Fixed SSH server shutdown hangs with active clients, including on Python 3.12+
- Avoided relying on AsyncSSH private internals when configuring PTY terminal modes
- Fixed
%thereargument handling when arguments contain spaces- Fixed
.envlookup to start from the current working directory- Improved background SSH command handling by creating new SSH connections
- Fixed
sys.stderr.unregister()errors- Increased background task capacity for concurrent work
- Added documentation
- Added
%there --delayoption- Passed
stdoutandstderrthrough toruncode
- Added
%there logcommand- Added a wrapper for a running SSH server instance
- Fixed IO stream redirection to affect only the current thread
- Adjusted
%%therecode wrapping so error line numbers match notebook cell lines
- Added
server_factoryargument tostart_server- Updated IPython magic dependency handling
- Added
nest_asynciodependency for IPython magic support
- Initial tagged release