One binary, two interfaces
Use the interactive TUI for daily navigation or the same pa binary as a
scriptable one-shot CLI. There is no Portagenty daemon or GUI to keep running.
Portagenty is a portable, terminal-native workspace and session launcher. It adds committable organization, navigation, and lifecycle controls on top of real filesystem paths and persistent tmux or Zellij sessions—without replacing either.
One binary, two interfaces
Use the interactive TUI for daily navigation or the same pa binary as a
scriptable one-shot CLI. There is no Portagenty daemon or GUI to keep running.
Portable by design
Workspace definitions are TOML files. Machine-local recency, registration, and ownership state stay outside the files you commit.
Alternative hierarchies
Build named workspace views across projects that live under different parent directories. A project can appear in multiple workspaces without anything moving on disk.
Workspace picker
Browse registered workspaces from a home screen with recency ordering, live-session counts, fuzzy filtering, tag chips and tag views, plus reversible archive/unarchive controls.
Stable workspace identity
New workspaces receive a UUID. Auto-registration and previous_paths preserve
a stable anchor when folders move or the same workspace is used from another
environment.
Three-tier configuration
Merge global defaults, a committable *.portagenty.toml workspace, and
per-project portagenty.toml session declarations with deterministic
precedence.
From the picker you can also rename a workspace, edit its tags, reveal or open its path, unregister it without deleting the file, or explicitly delete it with confirmation. See the workspace-picker command reference and TOML schema.
tmux and Zellij
Both multiplexers are first-class adapters. Portagenty creates, lists, attaches to, and exports sessions while the multiplexer remains responsible for terminal persistence.
Tracked and untracked sessions
Workspace-declared sessions show as live or idle. Sessions started manually outside Portagenty appear as untracked rows and remain attachable without adoption or configuration changes.
Human lifecycle feedback
Rows show state, kind, command or description, path, recency, and available
client counts. After a client returns, Portagenty prints the human
workspace / session identity before any abnormal-exit diagnostic.
Takeover or shared attach
pa claim makes the current device the primary tmux client. --shared
preserves other clients, while Zellij’s separately explicit --fresh path
handles the multiplexer’s lack of per-client takeover.
Sessions live in tmux or Zellij, not in a Portagenty background process. Closing an SSH connection or leaving the TUI does not stop the session. Learn the exact state and attach semantics in Concepts.
Phone, laptop, or remote shell
SSH into the host from any terminal, run pa, and attach to the same session.
The workflow is terminal-native and does not depend on a browser or desktop
application.
Termux-friendly UI
Narrow terminals receive two-line rows, shortened footer hints, arrow-key navigation, Android-style back behavior, and no-editor setup and management flows.
Resume-aware agent sessions
For sessions marked kind = "claude-code", pa launch --resume and
pa claim --resume append --continue at launch time without mutating the
committed workspace command.
The Termux guide covers the complete phone-over-SSH setup.
Open from anywhere
Bare pa walks upward for a workspace or opens the global picker. Pass a
directory or TOML path to jump directly to a specific workspace.
Layered folder search
The picker combines recency, zoxide, indexed search, fd, and a bounded
filesystem walker, then fuzzy-ranks the results. Existing absolute and ~/
paths pin an exact result.
Scoped and global navigation
Drill into or widen the current search scope, toggle local/global search
without losing the query, use Ctrl+G for an exact absolute-path jump, or
switch to the filesystem tree browser.
Scaffold in place
Confirm a folder with no workspace and Portagenty can create and register one
immediately. pa init, the first-run wizard, and in-TUI add/edit flows avoid
hand-authoring TOML when you do not want to.
Start with the Quickstart or use the full command reference for every key and flag.
No-editor session management
Add, rename, edit, and remove sessions from either the TUI or CLI. Manage commands, working directories, kind hints, descriptions, and per-session environment variables with comment-preserving TOML updates.
Open a plain shell
Drop out of Portagenty into a normal shell at a workspace or highlighted tree path—no multiplexer and no session state—when direct terminal work is the simpler choice.
Committable exports
pa export renders a tmux starter script or Zellij KDL layout that teammates
can launch without installing Portagenty.
Shell ergonomics
Generate completions and install opt-in, idempotent bash snippets for shorter commands and Termux-friendly behavior.
pa:// deep links
Register pa:// with the operating system, then open a path, workspace UUID,
named session, or plain shell from a browser, note, chat, or other link-aware
application.
Portaconv companion
pa convos scopes conversation discovery and export to the current workspace.
Stable IDs and previous paths let the companion bridge histories across folder
moves and WSL/Windows path changes.
See Portaconv integration, snippets, and completion setup for the optional integration workflows.
On supported Linux hosts, Portagenty includes a first-party, capability-aware supervision backend. It launches an eligible session as a transient systemd user service and records a machine-local receipt for its private tmux or Zellij target. Whole-workload ownership is claimed only when v2 evidence proves the exact workload root and every bounded descendant remains in the service cgroup.
Explicit Claude policy
Only kind = "claude-code" selects Claude placement and defaults: 3G
MemoryHigh, 5G MemoryMax, 512MiB MemorySwapMax, 800% CPU, and 1200
tasks. Names and command strings never imply Claude policy; custom Claude
values may only be equal or stricter.
Explicit scriptable controls
CLI launches remain ordinary unless --supervise or a resource-limit flag is
supplied. Generic sessions receive no Claude defaults and stay in normal
user-manager placement.
Soft and hard limits
MemoryHigh asks the kernel to reclaim memory. MemoryMax and
MemorySwapMax are hard ceilings. CPU quota limits aggregate CPU time, and
TasksMax bounds processes and threads.
Structural Claude placement
Claude services request claude-code.slice, ManagedOOMPreference=omit, and
finite per-service TasksMax. Portagenty requires finite aggregate memory and
CPU controls, while aggregate TasksMax is optional and may be infinity. It
reads back service placement and limits but never creates or modifies the slice.
Workload-anchor proof
The shared tmux/Zellij anchor records a nonce, exact PID, and process start
time, then binds proof to the exact tmux pane or Zellij session/runtime target.
Portagenty checks the exact cgroup and walks every thread’s bounded /proc
children edges before metrics or control are allowed.
Safe transitions and escapes
Live v1 services are legacy/restart-required exact-target attach-only. Current
v2 incomplete-policy services may stop non-force but withhold metrics/force-kill.
Escaped descendants produce split containment; external build-contained
children in agent-work.slice stay externally bounded. Row-scoped and
workspace-wide actions may stop the exact target and verified service non-force,
but never signal external scopes.
Partial unit/target presence remains ambiguous and fail-closed.
If routine TUI Enter reaches an ownership-safe, non-creating preflight failure, it
announces the reason and may fall back to an ordinary unsupervised launch. Explicit
S, stale replacement, CLI supervision, receipt ambiguity, and failures after
backend creation may have begun do not silently fall back. A pending-launch journal
protects the creation-to-receipt gap. Stale cleanup removes only an exactly
confirmed dead receipt and marker and sends no signal; partial presence never
stale-cleans.
Use pa resources for capability,
status, graceful-stop, and force-kill details. The schema reference
explains why stable workspace identity is required.
Install Portagenty
Follow the installation guide and
verify pa --version.
Launch a first session
The Quickstart walks through a workspace file, the TUI, and cross-device attach behavior.
Look up a command
The command reference documents every subcommand, flag, picker key, and session-list action.