Skip to content
ca33uPublic

About

A native macOS command workspace with chat-style output, interactive SSH, ports, and key management.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

teasy

teasy

A native macOS workspace for commands, SSH, and the things around them.

Tests MIT license macOS Development preview

teasy keeps each local command next to its output in a conversation-style history. Choose a folder, run a command, inspect its result, and return to it later. Connect to a server when you need a real interactive terminal. Ports, SSH keys, and saved tokens have dedicated views, so routine development work takes fewer shell commands.

Built with SwiftUI, AppKit, system OpenSSH, and SwiftTerm. No AI service, account, cloud sync, or built-in telemetry is required.

What you can do

  • Run local commands. Stream stdout/stderr, inspect exit codes, edit and rerun in the original folder, stop owned process groups, copy or export output.
  • Keep work organized. Named chats, recent and favorite folders, saved command presets, SQLite history, and an option to run without saving command history.
  • Inspect local servers. Real TCP listeners with available process details; explicit HTTP checks and browser links; stop only runs owned by teasy.
  • Use interactive SSH. Saved hosts and config aliases, normal OpenSSH host-key checks, passphrase input, resize, and Control-C in an embedded PTY terminal.
  • Browse a Linux host. Remote folders, saved starting directories, a fresh Bash terminal in the selected folder, and read-only TCP listener inspection.
  • Manage access. Reference existing SSH keys, generate ED25519 keys without overwriting files, copy public keys/fingerprints, and store tokens in macOS Keychain.
  • Understand the environment. zsh/bash selection, shell startup timeout, on-demand PATH diagnostics, and guidance for macOS privacy permissions.

The interface uses English and native system typography. The speech-bubble >_ mark is also the editable native app icon.

Current status

0.2.0 is a development preview. The source and automated checks cover the local workspace and SSH/access features. GUI accessibility, real Keychain dialogs, Finder permissions, and behavior on other Macs still need manual validation. There is no notarized public app download yet; build from source.

Local command cards are independent runs and do not accept interactive input. cd, export, functions, and virtual-environment activation do not carry over to the next card. Use the folder picker or a compound command. SSH terminals are interactive sessions and remain separate from local chats.

Build from source

The current Xcode project is developed with Xcode 27.2 and Swift 6.4.2 on Apple Silicon. Use Xcode 27.2 for this project format and native icon document. The deployment target is macOS 14.0; runtime compatibility on macOS 14 and Intel has not been verified.

git clone https://github.com/ca33u/teasy.git
cd teasy

Open teasy.xcodeproj, choose the shared teasy scheme and My Mac, then select your own development team under Signing & Capabilities and run. The repository does not include signing certificates or a development team.

SwiftTerm is pinned to 1.99.2 in both package lockfiles. Xcode may ask you to trust SwiftTermBuildInfoPlugin, a build-time metadata/terminfo generator from that pinned dependency. Review it before allowing it.

To compile without a signing identity:

xcodebuild -project teasy.xcodeproj -scheme teasy -configuration Debug \
  -destination 'platform=macOS,arch=arm64' \
  -derivedDataPath build/DerivedData \
  -clonedSourcePackagesDirPath build/SourcePackages \
  -onlyUsePackageVersionsFromResolvedFile CODE_SIGNING_ALLOWED=NO build

The output is build/DerivedData/Build/Products/Debug/teasy.app. An unsigned build is for development and CI; signing and notarization are separate distribution steps. If command-line builds require plugin validation, review and approve the plugin in Xcode first. The CI configuration explicitly skips that interactive approval for the pinned dependency.

Test

swift test --scratch-path build/CoreTests --disable-automatic-resolution
sh scripts/typecheck-app.sh
sh scripts/test-workspace.sh

Tests use temporary files, synthetic secrets, loopback servers, and a temporary sshd. They do not use personal SSH configuration or enable Remote Login. Node/npm are needed for the npm process-tree test; that test skips if they are unavailable. Additional metadata tests use scripts/test-ssh-store.sh and scripts/test-access-store.sh; see testing for dependency paths, Linux integration tests, and manual checks.

CI runs macOS tests, an unsigned app build, and a disposable Ubuntu helper fixture. It does not sign or publish app binaries.

Data and permissions

App Sandbox is disabled because teasy runs commands in folders you choose. Those commands run with your user permissions. macOS privacy controls still apply; use Settings → Permissions to understand and manage access in System Settings. teasy cannot grant itself Full Disk Access or access to other apps' data.

History and settings stay under ~/Library/Application Support/app.essazanov.teasy/. History is not encrypted. Turn off Save history before a run to keep its command and output in memory; secrets typed into an ordinary command are not automatically redacted.

Token values use login Keychain; key metadata stores paths rather than private-key contents. SSH and key-generation passphrases go directly through the PTY, without being put in process arguments or saved history. SSH terminal output stays in memory. Commands and remote shells may have their own logging behavior.

See usage and behavior for process ownership, remote dependencies, storage limits, SSH trust, and other operational details.

Contributing

Bug reports and focused pull requests are welcome. Please read CONTRIBUTING.md and use synthetic data in reproductions. Full SFTP, persistent local shells, SSH tunnels, and cloud synchronization are outside the current preview.

License

MIT. Dependency and bundled resource licenses are listed in THIRD_PARTY_NOTICES.md.

About

A native macOS command workspace with chat-style output, interactive SSH, ports, and key management.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages