{"_id":"@anirudhsengar/agentify","_rev":"7-c2f29cbfa5a659f4641d5e2b3c89a19c","name":"@anirudhsengar/agentify","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@anirudhsengar/agentify","version":"1.0.0","keywords":["agentic-engineering","agents","codebase-audit","agentic-development"],"author":"Anirudh Sengar","license":"MIT","_id":"@anirudhsengar/agentify@1.0.0","maintainers":[{"name":"anirudhsengar","email":"anirudhsengar3@gmail.com"}],"homepage":"https://github.com/anirudhsengar/agentify#readme","bugs":{"url":"https://github.com/anirudhsengar/agentify/issues"},"bin":{"agentify":"./bin/agentify.js"},"dist":{"shasum":"9d9eda96792001de3825fbc8167b31d7b83da35a","tarball":"https://registry.npmjs.org/@anirudhsengar/agentify/-/agentify-1.0.0.tgz","fileCount":43,"integrity":"sha512-UwZK6baUYP2/b4EW3lm/9bo3npmWglvCOYkRl4guxTHowEa9LVhmZ6pukjXL6o9/BB+RrlL6OnrcX83znpvAaw==","signatures":[{"sig":"MEQCIFKsx+qCinyLXtF64TtLZNn7sLqshNRWS80jlGpm1uJ2AiBuwnzLPIOd2/NeZhscD7hE5OHQ0HW3WSNjbh6zvtRqig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44292172},"type":"module","engines":{"node":">=22.19.0"},"exports":{"./package.json":"./package.json"},"scripts":{"test":"npm run typecheck && npm run test:all","build":"node scripts/build.mjs","prepack":"npm run build","test:all":"npm run build && npm run test:unit && bash tests/run.sh","test:unit":"node tests/scripts/run-test-files.mjs","typecheck":"tsc --noEmit","inspect-log":"node src/core/audit/scripts/inspect-log.mjs","test:memory":"tsx tests/memory/memory-schema.test.ts && tsx tests/memory/memory-provenance.test.ts && tsx tests/memory/memory-store.test.ts && tsx tests/memory/memory-queries-compaction.test.ts","test:parity":"npm run build && npm run test:parity:cli","pack:release":"node scripts/pack-release.mjs","test:package":"node tests/package/exact-artifact-qualification.mjs","release:check":"npm run verify:release","test:fixtures":"npm run test:unit","test:learning":"tsx tests/learning/merge-learning.test.ts && tsx tests/learning/reconciliation.test.ts && tsx tests/learning/self-update.test.ts","verify:source":"npm run typecheck && npm run test:all","prepublishOnly":"npm run release:check","test:installer":"tsx tests/installer/one-time-installer.test.ts","test:lifecycle":"tsx tests/task-lifecycle/task-lifecycle.test.ts && tsx tests/task-lifecycle/builder-tools.test.ts && tsx tests/task-lifecycle/generative-invariants.test.ts && tsx tests/task-lifecycle/validation-runner.test.ts && tsx tests/task-lifecycle/github-runtime.test.ts","verify:package":"npm run test:package","verify:release":"npm run verify:source && npm run verify:scaffold && npm run verify:package && npm run verify:security","test:parity:cli":"tsx tests/parity/cli-contract.test.ts","verify:scaffold":"npm run test:scaffold-e2e","verify:security":"npm audit --omit=dev --audit-level=high","test:maintenance":"tsx tests/maintenance/documentation-invariants.test.ts && tsx tests/maintenance/cleanup-hygiene.test.ts && tsx tests/maintenance/action-pinning.test.ts && tsx tests/maintenance/schema-boundaries.test.ts && tsx tests/maintenance/reachability-invariants.test.ts && tsx tests/maintenance/module-boundaries.test.ts && tsx tests/release-safety.test.ts && tsx tests/maintenance/memory-boundary.test.ts && tsx tests/maintenance/specialist-boundary.test.ts && tsx tests/maintenance/learning-boundary.test.ts && tsx tests/maintenance/task-lifecycle-boundary.test.ts","test:specialists":"tsx tests/specialists/specialist-discovery.test.ts && tsx tests/specialists/specialist-persistence.test.ts && tsx tests/specialists/specialist-runtime.test.ts","test:scaffold-e2e":"bash scaffold/tests/run.sh","test:security-redteam":"tsx tests/audit/defense-hardening.test.ts && bash scaffold/tests/test-agentify-issue-lifecycle.sh && bash scaffold/tests/test-agentify-learn-lifecycle.sh","verify:pack-reproducibility":"node scripts/verify-pack-reproducibility.mjs"},"_npmUser":{"name":"anirudhsengar","email":"anirudhsengar3@gmail.com"},"overrides":{"undici":"8.9.0","@smithy/util-buffer-from":"4.4.7"},"repository":{"url":"https://github.com/anirudhsengar/agentify","type":"git"},"_npmVersion":"11.19.0","description":"Install-once persistent autonomous engineering team for existing GitHub repositories.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild":true,"protobufjs":true,"@google/genai":true},"dependencies":{"typebox":"^1.3.10","@clack/prompts":"^1.7.0","@earendil-works/pi-ai":"0.84.0","@earendil-works/pi-coding-agent":"0.84.0"},"_hasShrinkwrap":false,"packageManager":"npm@11.19.0","devDependencies":{"tsx":"^4.23.5","esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"^22.20.1"},"_npmOperationalInternal":{"tmp":"tmp/agentify_1.0.0_1786369463776_0.8440334148367392","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@anirudhsengar/agentify","version":"1.1.0","description":"Install-once persistent autonomous engineering team for existing GitHub repositories.","type":"module","keywords":["agentic-engineering","agents","codebase-audit","agentic-development"],"license":"MIT","author":{"name":"Anirudh Sengar"},"packageManager":"npm@11.19.0","repository":{"type":"git","url":"git+https://github.com/anirudhsengar/agentify.git"},"bugs":{"url":"https://github.com/anirudhsengar/agentify/issues"},"homepage":"https://github.com/anirudhsengar/agentify#readme","bin":{"agentify":"bin/agentify.js"},"engines":{"node":">=22.19.0"},"overrides":{"@smithy/util-buffer-from":"4.4.7","undici":"8.9.0"},"dependencies":{"@clack/prompts":"^1.7.0","@earendil-works/pi-ai":"0.84.0","@earendil-works/pi-coding-agent":"0.84.0","typebox":"^1.3.10"},"devDependencies":{"@types/node":"^22.20.1","esbuild":"^0.28.1","tsx":"^4.23.5","typescript":"^6.0.3"},"scripts":{"test:unit":"node tests/scripts/run-test-files.mjs","test:all":"npm run build && npm run test:unit && bash tests/run.sh","test":"npm run typecheck && npm run test:all","test:package":"node tests/package/exact-artifact-qualification.mjs","test:parity:cli":"tsx tests/parity/cli-contract.test.ts","test:parity":"npm run build && npm run test:parity:cli","test:maintenance":"tsx tests/maintenance/documentation-invariants.test.ts && tsx tests/maintenance/cleanup-hygiene.test.ts && tsx tests/maintenance/action-pinning.test.ts && tsx tests/maintenance/schema-boundaries.test.ts && tsx tests/maintenance/reachability-invariants.test.ts && tsx tests/maintenance/module-boundaries.test.ts && tsx tests/release-safety.test.ts && tsx tests/maintenance/memory-boundary.test.ts && tsx tests/maintenance/specialist-boundary.test.ts && tsx tests/maintenance/learning-boundary.test.ts && tsx tests/maintenance/task-lifecycle-boundary.test.ts","test:fixtures":"npm run test:unit","test:scaffold-e2e":"bash scaffold/tests/run.sh","test:security-redteam":"tsx tests/audit/defense-hardening.test.ts && bash scaffold/tests/test-agentify-issue-lifecycle.sh && bash scaffold/tests/test-agentify-learn-lifecycle.sh","test:specialists":"tsx tests/specialists/specialist-discovery.test.ts && tsx tests/specialists/specialist-persistence.test.ts && tsx tests/specialists/specialist-runtime.test.ts","test:learning":"tsx tests/learning/merge-learning.test.ts && tsx tests/learning/reconciliation.test.ts && tsx tests/learning/self-update.test.ts && tsx tests/learning/proposal.test.ts","test:lifecycle":"tsx tests/task-lifecycle/task-lifecycle.test.ts && tsx tests/task-lifecycle/builder-tools.test.ts && tsx tests/task-lifecycle/generative-invariants.test.ts && tsx tests/task-lifecycle/validation-runner.test.ts && tsx tests/task-lifecycle/github-runtime.test.ts","test:installer":"tsx tests/installer/one-time-installer.test.ts","verify:source":"npm run typecheck && npm run test:all","verify:scaffold":"npm run test:scaffold-e2e","verify:package":"npm run test:package","verify:security":"npm audit --omit=dev --audit-level=high","verify:release":"npm run verify:source && npm run verify:scaffold && npm run verify:package && npm run verify:security","release:check":"npm run verify:release","pack:release":"node scripts/pack-release.mjs","verify:pack-reproducibility":"node scripts/verify-pack-reproducibility.mjs","typecheck":"tsc --noEmit","prepublishOnly":"npm run release:check","inspect-log":"node src/core/audit/scripts/inspect-log.mjs","build":"node scripts/build.mjs","prepack":"npm run build","test:memory":"tsx tests/memory/memory-schema.test.ts && tsx tests/memory/memory-provenance.test.ts && tsx tests/memory/memory-store.test.ts && tsx tests/memory/memory-queries-compaction.test.ts"},"exports":{"./package.json":"./package.json"},"allowScripts":{"@google/genai":true,"protobufjs":true,"esbuild":true},"_id":"@anirudhsengar/agentify@1.1.0","_integrity":"sha512-GJ9JjnpeYX7SRjz3mG393w1oideU7SJOAuZ1dm3/othf6jkYPdo1Cc+AtR5yGkl0elUfJ2nfPnSR+gNkc+ta3Q==","_resolved":"/home/runner/work/agentify/agentify/release-artifact/anirudhsengar-agentify-1.1.0.tgz","_from":"file:release-artifact/anirudhsengar-agentify-1.1.0.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-GJ9JjnpeYX7SRjz3mG393w1oideU7SJOAuZ1dm3/othf6jkYPdo1Cc+AtR5yGkl0elUfJ2nfPnSR+gNkc+ta3Q==","shasum":"d9cbc177d1ad911e859c5e574b02b5b708797765","tarball":"https://registry.npmjs.org/@anirudhsengar/agentify/-/agentify-1.1.0.tgz","fileCount":44,"unpackedSize":44418483,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anirudhsengar%2fagentify@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCYW4SRsLtFaJYw4TSvqZWB9wOvV42fG7nS8UXxsy4yCAIhAO9YB+zo5xoGxeZfvduK+euh/2hDj+e4g4lpj7jUj9vp"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7b867d1-1d2d-4363-a0b0-77e011ebee88"}},"directories":{},"maintainers":[{"name":"anirudhsengar","email":"anirudhsengar3@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agentify_1.1.0_1787313581174_0.6683232722685102"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-10T13:44:23.491Z","modified":"2026-08-21T11:59:41.792Z","0.3.0":"2026-08-03T05:35:50.800Z","0.1.0":"2026-08-04T12:13:20.092Z","0.1.1":"2026-08-05T09:50:50.720Z","1.0.0":"2026-08-10T13:44:24.042Z","1.1.0":"2026-08-21T11:59:41.465Z"},"bugs":{"url":"https://github.com/anirudhsengar/agentify/issues"},"author":{"name":"Anirudh Sengar"},"license":"MIT","homepage":"https://github.com/anirudhsengar/agentify#readme","keywords":["agentic-engineering","agents","codebase-audit","agentic-development"],"repository":{"type":"git","url":"git+https://github.com/anirudhsengar/agentify.git"},"description":"Install-once persistent autonomous engineering team for existing GitHub repositories.","maintainers":[{"name":"anirudhsengar","email":"anirudhsengar3@gmail.com"}],"readme":"<div align=\"center\">\n\n# Agentify\n\n**Turn authorized GitHub issues into validated draft pull requests with a persistent, repository-specific engineering team.**\n\n[![CI](https://github.com/anirudhsengar/agentify/actions/workflows/ci.yml/badge.svg)](https://github.com/anirudhsengar/agentify/actions/workflows/ci.yml)\n[![Node.js](https://img.shields.io/badge/Node.js-%3E%3D22.19.0-339933?logo=nodedotjs&logoColor=white)](https://nodejs.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n[Getting started](#getting-started) · [How it works](#how-it-works) · [Security](#security-and-authority-boundaries) · [Documentation](#documentation)\n\n</div>\n\nAgentify is a Node.js CLI that installs a controlled multi-agent engineering workflow into an existing GitHub repository. You run the installer once; after that, authorized GitHub issues are the normal work interface.\n\nFor each queued task, Agentify plans with a persistent orchestrator, a read-only planner that refines the implementation steps, and evidence-backed read-only specialists, gives exactly one builder bounded write access on an isolated branch to inspect, edit, and self-check before its terminal submission, runs installer-attested unsandboxed validation, and obtains a role-separated automated read-only review before opening an **unmerged draft pull request**. A path-restricted knowledge maintainer refreshes learning after an accepted merge. The human retains merge authority; deployment is never automatic.\n\n> [!NOTE]\n> Agentify is an early public project. Its current evidence comes from maintainer-controlled qualification, security tests, and exact-artifact tests. This repository does not claim independent production adoption.\n\n## At a glance\n\n| Concern | Agentify's design |\n| --- | --- |\n| Installation | Run once in an existing repository |\n| Work intake | Authorized GitHub issues with explicit scope and acceptance criteria |\n| Planning | Persistent orchestrator, a read-only planner, plus evidence-backed read-only specialists |\n| Source changes | Exactly one builder, one isolated task branch, bounded writable paths |\n| Validation | Maintainer-approved repository commands run by trusted code |\n| Review | Separate automated reviewer with no application-source write tools |\n| Delivery | Unmerged draft pull request |\n| Merge and deployment | Human-controlled; never automatic |\n| Learning | Knowledge refresh from the exact accepted default-branch commit |\n\n## How it works\n\n```mermaid\nflowchart LR\n    A[Authorized GitHub issue] --> B[Orchestrator, planner, and read-only specialists]\n    B --> C[One bounded builder]\n    C --> D[Trusted repository validation]\n    D --> E[Separate read-only review]\n    E --> F[Unmerged draft pull request]\n    F --> G[Human merge decision]\n    G --> H[Accepted-merge knowledge refresh]\n```\n\n1. A maintainer creates or approves an issue with testable acceptance criteria and explicit candidate paths.\n2. Agentify verifies the actor, repository identity, issue state, and current default-branch commit.\n3. The orchestrator builds a typed, evidence-backed plan; a read-only planner refines its implementation steps before selected repository specialists are consulted.\n4. Exactly one builder receives bounded write authority on an isolated task branch and inspects, edits, and self-checks before its terminal submission.\n5. Trusted code captures the diff and runs the approved repository validation outside the model process.\n6. A role-separated, read-only reviewer evaluates the plan, diff, evidence, and acceptance criteria.\n7. Successful work is published as an unmerged draft pull request.\n8. After a human accepts and merges the change, Agentify refreshes only its allowlisted repository knowledge.\n\n## Current repository support\n\nAgentify targets repositories with this contract:\n\n- an existing Git repository with at least one commit;\n- a canonical `github.com` origin remote;\n- GitHub CLI authentication with repository write, maintain, or admin access;\n- a supported root build manifest with deterministic validation commands;\n- a committed lockfile when the ecosystem requires one for reproducible dependency validation;\n- tracked application source beneath a bounded repository path;\n- credentials for a supported model provider.\n\nSupported build manifests include:\n\n| Ecosystem | Manifest | Typical validation | Lockfile (when required) |\n| --- | --- | --- | --- |\n| Node.js | `package.json` | `npm run test`, `typecheck`, or `lint` scripts | `package-lock.json`, `npm-shrinkwrap.json`, `pnpm-lock.yaml`, `yarn.lock`, or `bun.lock` |\n| Python | `pyproject.toml`, `setup.py`, or `requirements.txt` | `pytest`, `ruff check`, or `mypy` (directly or via `Makefile`) | `uv.lock`, `poetry.lock`, or `Pipfile.lock` |\n| Rust | `Cargo.toml` | `cargo test`, `cargo check` | `Cargo.lock` |\n| Go | `go.mod` | `go test ./...`, `go vet ./...` | `go.sum` |\n| Java (Maven) | `pom.xml` | `mvn -B test` | — |\n| Java (Gradle) | `build.gradle` or `build.gradle.kts` | `./gradlew test` or `check` | `gradle.lockfile` (optional) |\n| Ruby | `Gemfile` | `bundle exec rspec`, `rubocop` | `Gemfile.lock` |\n| Make-based | `Makefile` | `make test`, `check`, `lint`, or `typecheck` targets | — |\n| Shell | `build.sh`, `compile.sh`, `test.sh`, `lint.sh`, `get.sh`, `setup.sh`, etc. | `bash build.sh`, `bash test.sh`, etc. Install scripts (`get.sh`, `setup.sh`) are identified but not executed as validation | — |\n\nAgentify may analyze a repository that is not ready for issue execution, but it keeps issue intake disabled until every readiness blocker is resolved.\n\n### Local requirements\n\n- Node.js 22.19.0 or newer\n- npm\n- Git\n- [GitHub CLI](https://cli.github.com/) (`gh`), authenticated to the target repository\n- Maintainer access to the target repository\n\n## Getting started\n\n### 1. Install and configure a model\n\n```bash\nnpm install --global @anirudhsengar/agentify\n\ncd /path/to/your/repository\n\n# Anthropic is an example; choose a provider supported by your environment.\nagentify login --provider anthropic\nagentify models list --provider anthropic\n# Replace <model-id> with a value returned by the previous command.\nagentify models set \"anthropic/<model-id>\"\n```\n\nProvider credentials are read from provider environment variables, supported OAuth instructions, or a masked interactive prompt. They are never accepted as command-line values or written to the repository.\n\n### 2. Run the one-time installer\n\n```bash\nagentify\n```\n\nThe installer:\n\n- verifies the repository root, GitHub identity, maintainer authority, and default-branch policy;\n- discovers validation commands, screens them for obvious production credentials and mutation, and records installer attestation for unsandboxed execution;\n- audits the repository and creates persistent specialists, procedures, and knowledge;\n- refines missing validation from the audited validation surface when discovery did not verify a required command;\n- installs the issue and accepted-merge learning workflows;\n- writes a repository-bound task policy containing validation and lockfile hashes;\n- configures required labels and non-secret repository variables;\n- copies a resolved local provider API key to the `PI_API_KEY` Actions secret when one is already present;\n- runs deterministic installation canaries and enables issue intake only when all checks pass.\n\nThe CLI is an installer and maintenance interface. Do not rerun it for ordinary tasks; use GitHub issues after installation.\n\n### 3. Configure workflow credentials\n\nThe installer can configure these GitHub Actions secrets:\n\n- **`PI_API_KEY`** — the model-provider credential used by the installed workflows. When a local provider key is already resolved from the environment or stored credentials, the installer copies it through `gh secret set` stdin. Otherwise it prompts interactively, or prints `gh secret set` guidance when no TTY is available.\n- **`AGENT_PAT`** — optional but recommended; used only by trusted workflow code to push the task branch and publish its draft pull request. A dedicated token allows the resulting pull request to trigger the repository's normal pull-request workflows. This secret is set only after interactive consent.\n\nA fine-grained `AGENT_PAT` needs access only to the target repository with:\n\n- **Contents:** read and write\n- **Pull requests:** read and write\n\nNeither credential is exposed to model processes.\n\n## Queue your first task\n\nCreate a GitHub issue using this minimum structure:\n\n```markdown\n## Goal\nDescribe the requested outcome.\n\n## Acceptance criteria\n- [ ] State one testable result per item.\n\n## Scope\n- `src/example.ts`\n\n## Out of scope\n- `.github/`\n- `package.json`\n```\n\nThen add the **`agentify:queue`** label.\n\n> [!IMPORTANT]\n> The paths in `## Scope` are an authority boundary, not just planning hints. Include every application path the builder may need to change.\n\nTrusted maintainers can control an active task with these exact issue comments:\n\n```text\n/agent approve\n/agent stop\n/agent retry\n/agent replan\n/agent explain\n```\n\n## What gets installed\n\nThe exact contents vary with repository analysis, but the managed footprint is approximately:\n\n```text\nAGENTS.md                              # Repository instructions for coding agents\nSETUP.md                               # Maintainer usage and credential guidance\n\n.agentify/\n├── manifest.json                      # Repository and state identity\n├── agents/                            # Persistent team and specialist definitions\n├── knowledge/                         # Provenance-bound repository knowledge\n├── policies/                          # Execution and protected-path policy\n└── runtime/                           # Audit/runtime state\n\n.github/\n├── agentify-task-policy.json          # Repository-bound task and validation policy\n├── agentify/\n│   ├── task-runtime.mjs               # Bundled trusted task runtime\n│   └── learning-runtime.mjs           # Bundled trusted learning runtime\n├── scripts/\n│   ├── complete-accepted-task-merge.mjs\n│   ├── publish-task-draft.mjs\n│   ├── run-task-lifecycle.mjs\n│   └── task-state-github.mjs\n└── workflows/\n    ├── agentify-issue.yml              # Authorized issue execution\n    └── agentify-learn.yml              # Accepted-merge learning\n```\n\nAgentify preserves user-owned files. If a required path is already occupied by unrecognized content, the installer leaves it untouched, writes or reports the managed alternative, and fails closed until the conflict is resolved.\n\n## Security and authority boundaries\n\n> [!WARNING]\n> Repository validation executes installer-attested, repository-owned code **without OS-level sandboxing or network isolation**. Agentify removes common credential variables, rejects visible deployment and publication commands, detects repository mutation, and binds attestation to the manifest, commands, and lockfile—but these controls are guardrails, not process isolation.\n\n| Boundary | Enforced behavior |\n| --- | --- |\n| GitHub credentials | Model processes never receive GitHub write credentials |\n| Read-only roles | Audit, specialist, orchestrator, planner, reviewer, and knowledge-maintainer sessions cannot edit application source |\n| Application writer | Exactly one builder may edit only approved paths on the isolated task branch |\n| Trusted mutations | Trusted code validates typed output, repository identity, commits, branches, paths, state transitions, validation, and review evidence |\n| Validation approval | The approved manifest, command set, and lockfile are hashed; drift disables issue intake until renewed consent |\n| Pull requests | Agentify publishes draft pull requests only |\n| Merge and deployment | Never performed automatically |\n| Learning | May update only validated Agentify knowledge paths after an exact accepted merge |\n\nAutomated review is role-separated and read-only, but it is not a substitute for human peer review. See [SECURITY.md](SECURITY.md) for the complete boundary and vulnerability-reporting process.\n\n## Verification\n\nThe release gate builds the executable bundles, runs source and scaffold tests, installs and exercises the exact npm tarball, checks CLI parity, and audits production dependencies.\n\n```bash\nnpm run verify:release\n```\n\nUseful evidence:\n\n- [CI workflow](https://github.com/anirudhsengar/agentify/blob/main/.github/workflows/ci.yml)\n- [Exact installed-artifact qualification](https://github.com/anirudhsengar/agentify/blob/main/tests/package/exact-artifact-qualification.mjs)\n- [Release process](docs/release-process.md)\n- [Product and trust contract](docs/architecture/install-once-repository-team.md)\n- [Security boundary](SECURITY.md)\n\n## CLI reference\n\n```text\nagentify\nagentify --help\nagentify --version\n\nagentify login [--provider <name>]\nagentify logout [--provider <name> | --all] [--yes]\n\nagentify models list [--provider <name>]\nagentify models show [--resolved]\nagentify models set <provider>/<model>\nagentify models set <primary|explorer|lite> <provider>/<model>\nagentify models unset [primary|explorer|lite]\n```\n\n`primary` is the default model assignment. `explorer` and `lite` inherit `primary` unless configured explicitly.\n\n## Development\n\n```bash\ngit clone https://github.com/anirudhsengar/agentify.git\ncd agentify\nnpm ci\n\nnpm run typecheck\nnpm run test:all\nnpm run verify:release\n```\n\nAgentify is an ESM-only, strict-TypeScript project. See [CONTRIBUTING.md](CONTRIBUTING.md) for the source layout, implementation rules, security requirements, and pull-request expectations.\n\n## Documentation\n\n| Topic | Document |\n| --- | --- |\n| Product and trust contract | [Install-once repository engineering team](docs/architecture/install-once-repository-team.md) |\n| System architecture | [Architecture](docs/architecture.md) |\n| Authorized issue lifecycle | [Issue lifecycle](docs/architecture/issue-lifecycle.md) |\n| Persistent memory | [Agent memory](docs/architecture/agent-memory.md) |\n| Repository specialists | [Repository specialists](docs/architecture/repository-specialists.md) |\n| Accepted-merge learning | [Continuous learning](docs/architecture/continuous-learning.md) |\n| Runtime state and recovery | [State lifecycle](docs/state-lifecycle.md) |\n| Build and packaging | [Build and package](docs/build-and-package.md) |\n| Release procedure | [Release process](docs/release-process.md) |\n| Security | [Security policy](SECURITY.md) |\n\nSee the complete [documentation index](docs/README.md).\n\n## Contributing\n\nContributions are welcome. Start with [CONTRIBUTING.md](CONTRIBUTING.md), keep changes small and reviewable, and include the verification you performed.\n\n## License\n\nAgentify is available under the [MIT License](LICENSE).\n","readmeFilename":"README.md"}