{"id":48657126,"url":"https://github.com/canhta/gistclaw","last_synced_at":"2026-04-10T09:20:09.548Z","repository":{"id":347342851,"uuid":"1189759683","full_name":"canhta/gistclaw","owner":"canhta","description":"A focused follow-through on OpenClaw: a calm repo-work agent team for reviewed changes, clearer handoffs, and less babysitting.","archived":false,"fork":false,"pushed_at":"2026-03-27T16:02:02.000Z","size":1597,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-28T00:25:50.972Z","etag":null,"topics":["agents","ai","golang","local-first","runtime","sqlite"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/canhta.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-23T16:32:29.000Z","updated_at":"2026-03-27T16:02:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/canhta/gistclaw","commit_stats":null,"previous_names":["canhta/gistclaw"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/canhta/gistclaw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canhta%2Fgistclaw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canhta%2Fgistclaw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canhta%2Fgistclaw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canhta%2Fgistclaw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/canhta","download_url":"https://codeload.github.com/canhta/gistclaw/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canhta%2Fgistclaw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31636312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T07:40:12.752Z","status":"ssl_error","status_checked_at":"2026-04-10T07:40:11.664Z","response_time":98,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["agents","ai","golang","local-first","runtime","sqlite"],"created_at":"2026-04-10T09:20:08.775Z","updated_at":"2026-04-10T09:20:09.533Z","avatar_url":"https://github.com/canhta.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp\u003e\n  \u003cimg src=\"docs/assets/readme-banner.svg\" alt=\"GistClaw banner\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\nGistClaw is a local-first multi-agent runtime for software repo tasks.\n\nIt gives you one assistant surface, lets that assistant coordinate specialist workers behind the scenes, asks for approval before risky repo changes, and keeps a replayable record of what happened.\n\nToday the repo already ships a working daemon, CLI, local web control plane, replay model, memory store, provider adapters, tool registry, scheduled local tasks, and live Telegram DM, WhatsApp, and optional Zalo Personal DM paths.\n\n## Why It Exists\n\n- Keep state, approvals, and replay on your own machine.\n- Start with one assistant surface, but let the runtime manage real worker sessions underneath.\n- Recover and debug from facts in the journal, not from guesswork.\n- Move between CLI and local web controls without switching systems.\n\n## What Ships Today\n\n- `gistclaw serve` starts the daemon and local web host.\n- `gistclaw version` prints the installed release identity.\n- `gistclaw auth set-password` bootstraps or rotates the built-in browser login for VPS operators.\n- `gistclaw auth zalo-personal login`, `logout`, `contacts`, `groups`, `send-text`, `send-image`, and `send-file` manage optional Zalo Personal auth, target lookup, and operator sends through the CLI.\n- `gistclaw run`, `inspect`, `security audit`, `schedule`, `doctor`, `backup`, and `export` cover the operator CLI.\n- `gistclaw inspect systemd-unit` prints the canonical service file used by the Ubuntu installer.\n- `gistclaw inspect token` prints the admin token stored in the runtime settings table.\n- The web UI includes a built-in login gate plus onboarding and operator-job pages for `Operate`, `Configure`, and `Recover`.\n- GitHub Releases now carry the self-contained Ubuntu installer assets, Apple Silicon archive, and the Homebrew formula input used for the macOS tap.\n- The Ubuntu installer supports either a quick-start provider key path or an exact `--config-file` reinstall path for VPS operators, plus optional `--public-domain` Caddy bootstrap.\n- Providers: Anthropic and OpenAI-compatible endpoints.\n- Tools: built-in web fetch, optional Tavily search, optional MCP stdio tools.\n- Live external surfaces: Telegram DM, WhatsApp, and optional unofficial Zalo Personal messaging.\n- The repo includes a default team definition in [teams/default/team.yaml](teams/default/team.yaml).\n- The Team page supports named per-project team profiles under `storage_root/projects/\u003cproject-id\u003e/teams/\u003cprofile\u003e/`, with the machine default under `storage_root/teams/default/`.\n\n## Quick Start\n\n### Public OSS Quick Start\n\nStart from [GitHub Releases](https://github.com/canhta/gistclaw/releases).\n\n- Ubuntu 24 VPS: [docs/install-ubuntu.md](docs/install-ubuntu.md)\n- macOS Apple Silicon: [docs/install-macos.md](docs/install-macos.md)\n- Recovery and rollback: [docs/recovery.md](docs/recovery.md)\n\nThe Ubuntu path installs a `systemd` service. The macOS path is Homebrew-first with `brew install canhta/gistclaw/gistclaw` plus `brew services start gistclaw`. The binary itself can show the canonical unit:\n\n```bash\ngistclaw version\ngistclaw auth set-password\ngistclaw inspect systemd-unit\ngistclaw inspect token\n```\n\n### Contributor Quick Start\n\nIf you are developing from source, use [CONTRIBUTING.md](CONTRIBUTING.md) for the full setup. The shortest local loop is:\n\n```bash\nmake dev-tools \u0026\u0026 make hooks-install\nmake dev\n```\n\nCreate `~/.config/gistclaw/config.yaml` using the minimal example in [CONTRIBUTING.md](CONTRIBUTING.md), then open `http://127.0.0.1:5173`. `make dev` starts Air for the Go daemon on `127.0.0.1:8080` and Vite on `127.0.0.1:5173`, with Vite proxying `/api/*` back to Go.\n\n## Common Commands\n\n```bash\ngistclaw serve\ngistclaw auth set-password\ngistclaw auth zalo-personal login\ngistclaw auth zalo-personal contacts\ngistclaw auth zalo-personal groups\ngistclaw auth zalo-personal send-text user-1 \"xin chao\"\ngistclaw run \"fix the failing tests\"\ngistclaw inspect status\ngistclaw inspect replay \u003crun_id\u003e\ngistclaw inspect systemd-unit\ngistclaw inspect token\ngistclaw security audit\ngistclaw schedule --help\ngistclaw doctor\ngistclaw backup --db ~/.local/share/gistclaw/runtime.db\ngistclaw export --db ~/.local/share/gistclaw/runtime.db --out export.json\n```\n\nUse `gistclaw help`, `gistclaw inspect --help`, and `gistclaw schedule --help` for the full command surface. `gistclaw inspect status` includes storage-health details, `gistclaw doctor` summarizes connector and storage health, and `gistclaw security audit` reports deployment-risk findings with distinct exit codes for warnings vs failures. Zalo Personal remains an unofficial connector with CLI-driven authentication, safe-by-default group controls, and operator send commands.\n\n## Build And Test\n\n```bash\ngo build -o bin/gistclaw ./cmd/gistclaw\ngo test ./...\ngo test -cover ./...\ngo vet ./...\n```\n\nFor repo-local tooling and contributor workflows:\n\n```bash\nmake dev-tools\nmake dev\nmake hooks-install\nmake fmt\nmake lint\nmake test\nmake coverage\n```\n\nThe coverage floor remains `70%`.\n\n## Documentation Guide\n\n- Start with [docs/system.md](docs/system.md) if you want the shipped surface and package ownership.\n- Use [docs/install-ubuntu.md](docs/install-ubuntu.md), [docs/install-macos.md](docs/install-macos.md), and [docs/recovery.md](docs/recovery.md) if you want to run a release build.\n- Use [docs/vision.md](docs/vision.md), [docs/kernel.md](docs/kernel.md), [docs/roadmap.md](docs/roadmap.md), and [docs/extensions.md](docs/extensions.md) if you want product direction and runtime rules.\n- Use [AGENTS.md](AGENTS.md) (`CLAUDE.md` is a symlink) and [CONTRIBUTING.md](CONTRIBUTING.md) if you want to work in the repo.\n- Use [CHANGELOG.md](CHANGELOG.md) for release history.\n\n## Related Project\n\nGistClaw grows out of lessons from [OpenClaw](https://github.com/openclaw/openclaw), but the current implementation is intentionally narrower, more local-first, and more explicit about runtime boundaries.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanhta%2Fgistclaw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcanhta%2Fgistclaw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanhta%2Fgistclaw/lists"}