[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-82960":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":15,"starSnapshotCount":15,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},82960,"gini-agent","Lilac-Labs\u002Fgini-agent","Lilac-Labs","The agent that remembers and learns.",null,"TypeScript",271,60,52,12,0,149,200,209,447,5.36,"MIT License",false,"main",[25,26,27,28,29,30,31,32,33,34],"agent","agent-runtime","ai-agent","bun","llm","local-first","mcp","nextjs","personal-agent","typescript","2026-06-12 02:04:29","# Gini Agent\n\nGini Agent is a personal agent that remembers, improves, and runs without forcing you to read a log line.\n\nGini is not just a chat box, CLI, messaging bot, or pile of tools. Chat is an interaction surface. The runtime is the system of record for conversations, runs, tasks, approvals, memory, skills, jobs, tools, traces, audit events, and runtime health.\n\n## Docs\n\n- [Whitepaper](docs\u002Fwhitepaper.md): the gaps this project is closing and the bar it's measured against\n- [Architecture Overview](docs\u002Farchitecture-overview.md): gateway\u002Fclient map\n- [Gateway And Control Plane](docs\u002Fgateway.md): runtime process, BFF, auth, instances, ports, disk layout\n- [Conversation And Runs](docs\u002Fconversation-runs.md): chat, runs, tasks, plan steps, traces, and audit handoff\n- [Memory](docs\u002Fmemory.md): retain, recall, embeddings, reranking, review, and storage\n- [Runtime Capabilities](docs\u002Fruntime-capabilities.md): current CLI\u002FAPI capability map and verification commands\n- [Operations](docs\u002Foperations.md): install, start, stop, smoke, diagnostics, and cleanup\n- [Releases](docs\u002Freleases.md): versioning, CHANGELOG conventions, and the release process\n- [Migrating from openclaw](docs\u002Fmigration-from-openclaw.md): import an existing openclaw install into gini\n- [Implementation Notes](docs\u002Fimplementation-notes.md): source layout and module boundary rules\n- [Roadmap](ROADMAP.md): shipped surfaces and what's planned, with design intent\n\n## Architecture decisions\n\n- [Architecture Decision Records](docs\u002Fadr\u002FREADME.md): index of all ADRs and how to add new ones\n\n## Architecture In One Sentence\n\nGini's **runtime is the gateway**: a single Bun process per instance owns state and performs work. The Next.js web app, CLI, future mobile app, MCP surfaces, and messaging bridges are clients of the same authenticated `\u002Fapi\u002F*` contract. See [Architecture Overview](docs\u002Farchitecture-overview.md) for the design.\n\n```text\n                 GATEWAY (Bun runtime, one per instance)\n                 state, agent loop, tools, memory, jobs\n                              ^\n          --------------------+--------------------\n          |                    |                   |\n      Next.js BFF          CLI \u002F scripts       future clients\n      browser UI           bearer token        mobile, MCP, messaging\n      no browser token\n```\n\n## What's in the box\n\n- Authenticated localhost gateway and a Next.js + Tailwind + shadcn\u002Fui control plane\n- Persistent chat, runs, tasks, approvals, traces, audit events, jobs, memories, and skills\n- Approval-gated file, terminal, and code tools\n- Provider support: Codex OAuth, OpenAI API key, OpenRouter, and any OpenAI-compatible local server\n- Local embeddings, reranking, and voice-message speech-to-text by default\n- Parallel instances with isolated state, ports, and logs\n\nSee the [Whitepaper](docs\u002Fwhitepaper.md) and [Architecture Overview](docs\u002Farchitecture-overview.md) for the design.\n\n## Quick Start\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FLilac-Labs\u002Fgini-agent\u002Fmain\u002Fscripts\u002Finstall.sh | bash\n```\n\nOn macOS the installer enables autostart (per-user LaunchAgents for the runtime and webapp), waits for the webapp to come up, and opens the `\u002Fsetup` page in your browser. Pick a provider in the browser form (OpenAI API key or existing `codex --login` auth) and you land on the running app. The runtime stays alive across reboots and crashes until you explicitly run `gini stop` or `gini autostart disable`.\n\nIf the browser doesn't open automatically (or you want to navigate manually), run `gini status` to print the actual web URL. The installed `default` instance always lives at `:7777`; other instances get hash-derived ports, so check `gini status` rather than guessing. The installer also prints the URL right before opening the browser.\n\nCaveat on macOS 26 (Tahoe): after a SIGKILL, launchd sometimes refuses to auto-respawn (`pended nondemand spawn = inefficient`). Run `gini autostart kick` to force a respawn when that happens; RunAtLoad still fires at login.\n\nIf you opted out of autostart (`--no-autostart`) or you're on Linux (autostart is currently macOS-only), run `gini setup` then `gini start` to launch the runtime by hand.\n\nAfter install, the URLs are stable:\n\n- web: `http:\u002F\u002F127.0.0.1:7777`\n- runtime: `http:\u002F\u002F127.0.0.1:7778`\n\n### Update\n\n```bash\ngini update\n```\n\nUpdates the installer-managed runtime at `~\u002F.gini\u002Fruntime` and restarts it. Per-instance state under `~\u002F.gini\u002Finstances\u002F` and the model cache at `~\u002F.gini\u002Fmodels\u002F` are preserved.\n\n### From source\n\n```bash\nbun install\nbun run gini install\nbun run gini start\n```\n\nFrom a repo clone, the instance is derived from the directory basename, so each worktree gets isolated state and ports automatically. See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup including `.\u002Fscripts\u002Finstall.sh --local` for testing the install flow against a local checkout.\n\n## CLI\n\nThe CLI covers chat, runs, tasks, approvals, memory, jobs, connectors, providers, snapshots, imports, and more. Discover commands with:\n\n```bash\ngini --help\n```\n\nUseful starting points:\n\n```bash\ngini status        # runtime health and URLs\ngini chat new      # start a chat session\ngini approvals     # review pending tool approvals\n```\n\n(From a repo clone, prefix with `bun run`.)\n\n## Providers\n\nRun `gini setup` for an interactive picker, or configure directly:\n\n```bash\ngini provider set codex gpt-5.5            # Codex OAuth (reads ~\u002F.codex\u002Fauth.json)\ngini provider set openai gpt-5.4-mini      # uses $OPENAI_API_KEY\ngini provider set openrouter \u003Cmodel>       # uses $OPENROUTER_API_KEY\ngini provider set local \u003Cmodel> --base-url http:\u002F\u002F127.0.0.1:8000\u002Fv1\n```\n\nThe `local` provider works with any OpenAI-compatible server (oMLX, vLLM, LM Studio, llama.cpp). API keys are read from environment variables, and Codex OAuth is read from `~\u002F.codex\u002Fauth.json` (or `CODEX_AUTH_JSON`) — nothing is written to Gini config. Run `gini --help` for the full flag set, or see [provider-extra-body.md](docs\u002Fadr\u002Fprovider-extra-body.md) for the `--extra-body` contract. When a credential fails mid-chat, see [Codex re-authentication](docs\u002Fproviders\u002Fcodex.md#re-authentication) and [Provider Re-Authentication Guidance](docs\u002Fadr\u002Fprovider-reauth-guidance.md).\n\n## Parallel Instances\n\nEach instance has isolated state, ports, and logs:\n\n```bash\ngini --instance sandbox run\ngini smoke                  # ephemeral instance under \u002Ftmp\n```\n\nMultiple agents can run smoke tests concurrently without colliding.\n\n## Messaging channels\n\nGini can bridge to messaging channels such as Telegram and Discord. These bridges were added to exercise the gateway's messaging contract and are **not** being actively worked on. We highly recommend interacting with Gini through the native web app and iOS app. Those are the primary, actively developed surfaces. See [telegram-bridge.md](docs\u002Fadr\u002Ftelegram-bridge.md) and [discord-bridge.md](docs\u002Fadr\u002Fdiscord-bridge.md) for the bridge contracts.\n\n## Migrating from openclaw\n\nAlready running [openclaw](https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw)? Import your agents, chat history, memory, skills, workspace files, and messaging bridges into a gini instance. The import is two steps — `plan` prints a redacted summary, `apply` writes the state:\n\n```bash\ngini import plan openclaw    # dry-run: summarize what would be imported\ngini import apply openclaw   # import the openclaw state into gini\n```\n\n`apply` mutates state in-process, so stop the target instance first (`gini stop --instance \u003Cname>`), apply, then start it again. Every applied import first archives your full openclaw state to `\u003Cinstance>\u002Fimports\u002Fopenclaw-\u003Ctimestamp>.zip`, so nothing is lost. See [Migrating from openclaw](docs\u002Fmigration-from-openclaw.md) for the field-by-field mapping, idempotency rules, and verification steps.\n\n## Local State\n\n```text\n~\u002F.gini\u002Finstances\u002F\u003Cinstance>\u002F   # config, state.json, memory.db, traces, snapshots, workspace, logs\n~\u002F.gini\u002Fmodels\u002F                 # shared embedding\u002Freranker\u002Fspeech-to-text model cache\n```\n\nUse `gini uninstall` to remove an instance or the whole install. See [Operations](docs\u002Foperations.md) for diagnostics and cleanup.\n\n## Roadmap\n\nSee [ROADMAP.md](ROADMAP.md) for shipped surfaces and what's planned.\n\n## Contributing\n\nContributions are welcome. Start with [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, verification commands, and PR conventions. For architecture conventions and module boundaries, see [AGENTS.md](AGENTS.md). Report security issues privately per [SECURITY.md](SECURITY.md).\n\n## Star History\n\n\u003Ca href=\"https:\u002F\u002Fstar-history.com\u002F#Lilac-Labs\u002Fgini-agent&Date\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=Lilac-Labs\u002Fgini-agent&type=Date&theme=dark\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=Lilac-Labs\u002Fgini-agent&type=Date\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=Lilac-Labs\u002Fgini-agent&type=Date\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n## License\n\n[MIT](LICENSE)\n","Gini Agent 是一个能够记忆、学习并持续运行的个人代理。它通过单个Bun进程管理状态和执行任务，支持持久化的聊天记录、任务、审批、追踪事件、工作、记忆和技能等功能，并且具备本地嵌入、重新排序及语音消息转文字的能力。该代理采用TypeScript编写，利用Next.js作为控制平面，提供CLI、Web界面等多种交互方式，适用于需要个性化助手以提高工作效率或日常管理的场景，如开发者工具集成、个人事务管理和基于AI的学习系统等。",2,"2026-06-11 04:09:45","CREATED_QUERY"]