{"id":51710059,"url":"https://github.com/ngocthanh06/thaloca","last_synced_at":"2026-07-16T20:00:43.310Z","repository":{"id":371020771,"uuid":"1297659611","full_name":"ngocthanh06/thaloca","owner":"ngocthanh06","description":"Local-first developer control center for macOS — auto-discovers Docker, processes, ports, jobs, Git repos, and SSH servers with zero setup.","archived":false,"fork":false,"pushed_at":"2026-07-12T18:56:17.000Z","size":1105,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-12T20:10:56.271Z","etag":null,"topics":["desktop-app","developer-tools","docker","git","golang","macos","ssh","wails"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ngocthanh06.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-11T17:43:28.000Z","updated_at":"2026-07-12T18:56:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ngocthanh06/thaloca","commit_stats":null,"previous_names":["ngocthanh06/thaloca"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ngocthanh06/thaloca","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngocthanh06%2Fthaloca","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngocthanh06%2Fthaloca/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngocthanh06%2Fthaloca/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngocthanh06%2Fthaloca/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ngocthanh06","download_url":"https://codeload.github.com/ngocthanh06/thaloca/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngocthanh06%2Fthaloca/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35557060,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-16T02:00:06.687Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["desktop-app","developer-tools","docker","git","golang","macos","ssh","wails"],"created_at":"2026-07-16T20:00:16.820Z","updated_at":"2026-07-16T20:00:43.298Z","avatar_url":"https://github.com/ngocthanh06.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"docs/brand/wordmark.png\" alt=\"Thaloca — Developer Control Center\" width=\"480\"\u003e\u003c/p\u003e\n\nThaloca is a local-first developer control center for macOS. Open it and it\nauto-discovers your local dev environment — Docker containers, processes,\nports, background jobs, Git repos, and remote servers — no manifest or setup\nstep required.\n\n## Screenshots\n\n| Overview | Runtime | Servers |\n| --- | --- | --- |\n| ![Overview](docs/screenshots/overview.png) | ![Runtime](docs/screenshots/runtime.png) | ![Servers](docs/screenshots/servers.png) |\n\n## Features\n\n**Runtime discovery**\n- Docker containers (grouped by Compose project), local processes, listening\n  ports, and background jobs (cron/launchd/PM2/Docker), each with Start/Stop/\n  Restart/Logs actions and confirmation on anything destructive.\n- HTTP/TCP/TLS health checks against common endpoints (`/health`, `/healthz`,\n  `/ready`, `/live`, `/actuator/health`, `/ping`, `/`).\n- Overview groups everything into per-project cards (via Docker Compose's own\n  project label) and surfaces an anomaly strip for restart loops, degraded\n  health, PM2 `errored` jobs, and log-pattern errors (panics/OOM/repeated\n  failures) scanned from container logs.\n\n**Source Control** — works like SourceTree: stage/unstage, per-file colored\ndiffs, commit, conflict resolution (\"ours\"/\"theirs\"), commit graph across\nbranches, Fetch/Pull/Push/Stash. GitHub login via OAuth device flow (or reuses\nan active `gh auth` session) powers a full Pull Requests tab: list with\nfilters/search, Conversation/Commits/Checks/Files-changed detail, inline\nreview comments on a GitHub-style split diff, merge/squash/rebase.\n\n**Resources** — live CPU/memory/disk/network/GPU usage, a full process list\n(sortable, killable), installed-apps scan with CPU/Mem and open/quit actions,\nand a 24h sampled history (sparkline charts + a memory-leak heuristic).\n\n**Tools** — detects installed package managers/CLIs and their versions, flags\na project's manifest asking for a tool that isn't installed, and offers\none-click Install/Update through Homebrew (with the exact command shown\nbefore running).\n\n**Documents** — manages folders of existing PDF, DOCX, TXT, and Markdown\nfiles without uploading or copying them. Thaloca scans the folders at startup\nand every minute, indexes changed files into its own `thaloca_documents`\ncollection, and returns semantic matches with page/line/paragraph citations.\nSearch and Ask AI use a separately installed\n[LongBrain (Hermes Agent)](https://longbrain.cc.cd) runtime. Thaloca only\nindexes with embedding providers verified as local, and only enables Ask AI\nfor an explicit allowlist of local LLM providers; external or unknown\nproviders remain blocked. When LongBrain is unavailable, Thaloca shows the\ninstallation guide and command and leaves dependent actions disabled. Thaloca\nnever installs or modifies the Hermes Agent repository.\n\n**Servers** — SSH-managed remote hosts: structured health checks (polled\nautomatically in the background, with a notification if a server drops\noffline or its CPU/memory/disk stays under pressure), key permission\nwarnings, remote Docker container management, a real interactive terminal\n(PTY over SSH, xterm.js), remote crontab viewing/enable/disable/remove, a\nfile browser with upload/download (`scp`), running one command across\nseveral selected servers at once, importing hosts from `~/.ssh/config`, and\nProxyJump/bastion host support. Only a key file *path* is ever stored, never\nits contents.\n\n**Cross-cutting** — native notifications (with quiet hours) for problems that\nneed attention, a port-conflict assistant, clipboard copy history (in-app and\nsystem-wide, auto-expiring after 24h), a global command palette (`Cmd+K`),\nconfig export/import, and a check-for-update notice (see Packaging).\n\nClosing the window hides Thaloca rather than quitting it — background\nscanning keeps running; Cmd+Q or the Dock icon's Quit exits fully.\n\n## Packaging\n\n```bash\ncd desktop\nwails build\n./build/package-dmg.sh\n```\n\nProduces `desktop/build/bin/Thaloca.dmg`, `Thaloca.app.zip`, and\n`Thaloca.app.zip.sha256` via macOS system tools (no extra packaging tooling).\nUpload both ZIP assets together so users can verify the download manually.\nBuilds target Apple Silicon (arm64) only. Code-signing is ad-hoc only (no\nApple Developer ID/notarization), so a downloaded copy shows Gatekeeper's\n\"unidentified developer\" warning — right-click → Open once, or\n`xattr -cr /Applications/Thaloca.app`. Checking for updates only opens the\nlatest GitHub release; installation remains manual until releases are signed\nwith an independent key or Apple Developer ID.\n\n## Development\n\n```bash\ncd desktop\nwails dev    # live dev\nwails build  # production build\n```\n\n## VPN security model\n\nBesides WireGuard and OpenVPN, a server can be linked to a **System VPN** —\nany VPN already configured in macOS System Settings (L2TP/IPsec, Cisco\nIPSec, IKEv2, …). That engine drives the built-in `scutil --nc` as the\nnormal user: no administrator prompt, no Homebrew, and credentials stay in\nmacOS's own Keychain. Note the tunnel is system-wide — connecting or\ndisconnecting it affects the whole Mac, not just the linked server.\n\nConnecting a per-server VPN runs the user-installed WireGuard/OpenVPN\nprograms with administrator privileges (macOS's native password prompt —\nThaloca never stores the password). Before anything runs as root, each\nprogram is resolved into its exact Homebrew keg (symlinks fully resolved,\nwrong locations rejected), hashed, copied into a root-owned staging\ndirectory, and hash-verified there — so a same-user process swapping a\nfile while the password dialog is open can only make the connect fail.\n\nAccepted residual risk: the dynamic libraries those programs load still\ncome from the admin-writable Homebrew prefix by absolute path. This is the\nsame trust running `sudo wg-quick`/`sudo openvpn` against a Homebrew\ninstall gives them; closing it would require bundling relocated binaries\n(rejected for license reasons) or a signed privileged helper.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\nThaloca does not bundle any VPN binaries — WireGuard and OpenVPN are\nuser-installed via Homebrew (the app offers a one-click `brew install` when\nthey're missing). Notices for the Go modules and npm packages compiled into\nthe app are in\n[desktop/THIRD_PARTY_NOTICES.md](desktop/THIRD_PARTY_NOTICES.md), also\nincluded in every distributed app bundle.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fngocthanh06%2Fthaloca","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fngocthanh06%2Fthaloca","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fngocthanh06%2Fthaloca/lists"}