{"_id":"@4o3f/lapis","_rev":"2-a6d7919c979af4c8f7a6b3802cf86b10","name":"@4o3f/lapis","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@4o3f/lapis","version":"0.1.0","license":"AGPL-3.0-only","_id":"@4o3f/lapis@0.1.0","maintainers":[{"name":"4o3f","email":"4o3f@proton.me"}],"contributors":[{"name":"4o3F"},{"name":"Heye"}],"homepage":"https://github.com/4o3F/Lapis","bugs":{"url":"https://github.com/4o3F/Lapis/issues"},"bin":{"lapis":"run-lapis.js"},"dist":{"shasum":"90d5dd90e6db574805ce0e1877c9eb7ab37b4d9a","tarball":"https://registry.npmjs.org/@4o3f/lapis/-/lapis-0.1.0.tgz","fileCount":10,"integrity":"sha512-ZFvae6t23gUIqf3TqgUyVGbRHbheKOVz93K7//4hxO/BdbUVpffog773Xfe96u74yYpGYDExa1jALtPiLfGXdw==","signatures":[{"sig":"MEQCIGj6iFLzP7YZK5P+E/U0PB7ZpNF8OK/Gs0t3kjhR4tkWAiA8w93Dx8+qbcdFt3R9a5qrnX8gHFp7n2sbMnH75sZk7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57184},"_from":"file:npm/lapis-cli-npm-package.tar.gz","volta":{"npm":"9.5.0","node":"18.14.1"},"engines":{"npm":">=6","node":">=14.14"},"scripts":{"fmt":"prettier --write **/*.js","fmt:check":"prettier --check **/*.js","postinstall":"node ./install.js"},"_npmUser":{"name":"4o3f","email":"4o3f@proton.me"},"_resolved":"/home/runner/work/Lapis/Lapis/npm/lapis-cli-npm-package.tar.gz","_integrity":"sha512-ZFvae6t23gUIqf3TqgUyVGbRHbheKOVz93K7//4hxO/BdbUVpffog773Xfe96u74yYpGYDExa1jALtPiLfGXdw==","repository":{"url":"git+https://github.com/4o3F/Lapis.git","type":"git"},"_npmVersion":"10.8.2","description":"Rust-based deep research MCP core service","directories":{},"_nodeVersion":"20.20.2","dependencies":{"detect-libc":"^2.1.2"},"glibcMinimum":{"major":2,"series":35},"_hasShrinkwrap":true,"devDependencies":{"prettier":"^3.8.3"},"preferUnplugged":true,"supportedPlatforms":{"x86_64-apple-darwin":{"bins":{"lapis":"lapis"},"zipExt":".tar.xz","artifactName":"lapis-cli-x86_64-apple-darwin.tar.xz"},"aarch64-apple-darwin":{"bins":{"lapis":"lapis"},"zipExt":".tar.xz","artifactName":"lapis-cli-aarch64-apple-darwin.tar.xz"},"x86_64-pc-windows-gnu":{"bins":{"lapis":"lapis.exe"},"zipExt":".zip","artifactName":"lapis-cli-x86_64-pc-windows-msvc.zip"},"x86_64-pc-windows-msvc":{"bins":{"lapis":"lapis.exe"},"zipExt":".zip","artifactName":"lapis-cli-x86_64-pc-windows-msvc.zip"},"aarch64-pc-windows-msvc":{"bins":{"lapis":"lapis.exe"},"zipExt":".zip","artifactName":"lapis-cli-x86_64-pc-windows-msvc.zip"},"x86_64-unknown-linux-gnu":{"bins":{"lapis":"lapis"},"zipExt":".tar.xz","artifactName":"lapis-cli-x86_64-unknown-linux-gnu.tar.xz"}},"artifactDownloadUrls":["https://github.com/4o3F/Lapis/releases/download/v0.1.0"],"_npmOperationalInternal":{"tmp":"tmp/lapis_0.1.0_1781538116758_0.6815251396841122","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"artifactDownloadUrls":["https://github.com/4o3F/Lapis/releases/download/v0.2.0"],"bin":{"lapis":"run-lapis.js"},"contributors":[{"name":"4o3F"},{"name":"Heye"}],"dependencies":{"detect-libc":"^2.1.2"},"description":"Rust-based deep research MCP core service","devDependencies":{"prettier":"^3.8.3"},"engines":{"node":">=14.14","npm":">=6"},"glibcMinimum":{"major":2,"series":35},"homepage":"https://github.com/4o3F/Lapis","license":"AGPL-3.0-only","name":"@4o3f/lapis","preferUnplugged":true,"repository":{"type":"git","url":"git+https://github.com/4o3F/Lapis.git"},"scripts":{"fmt":"prettier --write **/*.js","fmt:check":"prettier --check **/*.js","postinstall":"node ./install.js"},"supportedPlatforms":{"aarch64-apple-darwin":{"artifactName":"lapis-cli-aarch64-apple-darwin.tar.xz","bins":{"lapis":"lapis"},"zipExt":".tar.xz"},"aarch64-pc-windows-msvc":{"artifactName":"lapis-cli-x86_64-pc-windows-msvc.zip","bins":{"lapis":"lapis.exe"},"zipExt":".zip"},"x86_64-apple-darwin":{"artifactName":"lapis-cli-x86_64-apple-darwin.tar.xz","bins":{"lapis":"lapis"},"zipExt":".tar.xz"},"x86_64-pc-windows-gnu":{"artifactName":"lapis-cli-x86_64-pc-windows-msvc.zip","bins":{"lapis":"lapis.exe"},"zipExt":".zip"},"x86_64-pc-windows-msvc":{"artifactName":"lapis-cli-x86_64-pc-windows-msvc.zip","bins":{"lapis":"lapis.exe"},"zipExt":".zip"},"x86_64-unknown-linux-gnu":{"artifactName":"lapis-cli-x86_64-unknown-linux-gnu.tar.xz","bins":{"lapis":"lapis"},"zipExt":".tar.xz"}},"version":"0.2.0","volta":{"node":"18.14.1","npm":"9.5.0"},"_id":"@4o3f/lapis@0.2.0","bugs":{"url":"https://github.com/4o3F/Lapis/issues"},"_integrity":"sha512-A28IQuHUcAfffqWAj9/MU5BcPiFVsH5Hl0gb2ub2qFl4uGJg2ca077iLJNZN4TpkhkuLFZ7tcANUBwA36XfU/A==","_resolved":"/home/runner/work/Lapis/Lapis/npm/lapis-cli-npm-package.tar.gz","_from":"file:npm/lapis-cli-npm-package.tar.gz","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-A28IQuHUcAfffqWAj9/MU5BcPiFVsH5Hl0gb2ub2qFl4uGJg2ca077iLJNZN4TpkhkuLFZ7tcANUBwA36XfU/A==","shasum":"44e96632072efd3bf996568bcb71d5af71b164ac","tarball":"https://registry.npmjs.org/@4o3f/lapis/-/lapis-0.2.0.tgz","fileCount":10,"unpackedSize":57212,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@4o3f%2flapis@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC/E8QRZItjbK79TzQ+NJYAF/2mEYItFgRc5QWnBjGKzgIhAOYbxrWd7c0B8K++8fliZUzyJgWWIRvIDORDayV3Wyc8"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5a2efefc-9484-4d67-8633-1c0aaf0975fe"}},"directories":{},"maintainers":[{"name":"4o3f","email":"4o3f@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lapis_0.2.0_1781583501698_0.6039880466469452"},"_hasShrinkwrap":true}},"time":{"created":"2026-06-15T15:41:56.512Z","modified":"2026-06-16T04:18:22.082Z","0.1.0":"2026-06-15T15:41:56.887Z","0.2.0":"2026-06-16T04:18:21.831Z"},"bugs":{"url":"https://github.com/4o3F/Lapis/issues"},"license":"AGPL-3.0-only","homepage":"https://github.com/4o3F/Lapis","repository":{"type":"git","url":"git+https://github.com/4o3F/Lapis.git"},"description":"Rust-based deep research MCP core service","contributors":[{"name":"4o3F"},{"name":"Heye"}],"maintainers":[{"name":"4o3f","email":"4o3f@proton.me"}],"readme":"# Lapis\n\nLapis is a Rust-based deep research MCP core service. It exposes structured research tools over MCP stdio for Claude Code Skills and other MCP clients.\n\nLapis is not a general-purpose chatbot and does not provide a Web UI. Its role is to act as a local, configurable research backend with structured request and response schemas.\n\n## Features\n\n- **MCP stdio server**: starts with `lapis serve` and exposes research tools to MCP clients.\n- **Structured research tools**: supports single-aspect and multi-aspect research workflows.\n- **Config-driven providers**: model and search providers are enabled through `lapis.toml`.\n- **No secrets in config**: API keys are read from environment variables referenced by config.\n- **Budget enforcement**: supports research-level and per-aspect limits.\n- **Stable envelopes**: tool outputs use public-safe `ToolEnvelope<T>` responses.\n\n## Quick Start\n\nInstall Lapis from a tagged release first. `cargo-dist` is configured to generate GitHub Release installers, Homebrew and npm publishing metadata, MSI packages, and updater support.\n\n### Install\n\n- **GitHub Releases, macOS/Linux**: download the generated shell installer from the tagged release assets, then run it locally:\n\n  ```bash\n  sh ./<downloaded-installer>.sh\n  ```\n\n- **GitHub Releases, Windows**: run the generated PowerShell installer from the release assets, or download and run the generated `.msi` package.\n- **Homebrew**: download the generated `lapis.rb` formula from the tagged release assets, then install it locally:\n\n  ```bash\n  brew install ./lapis.rb\n  ```\n\n  Automatic Homebrew tap publishing is not configured, so no separate tap repository is required.\n\n- **npm**: once the package is published, install the configured CLI package globally:\n\n  ```bash\n  npm install -g @4o3f/lapis\n  ```\n\n  `cargo-dist` also prints a version-pinned npm install hint in release notes for project-local installs.\n\n- **Source fallback**: build locally when release artifacts are not available or when developing:\n\n  ```bash\n  cargo build --release\n  ./target/release/lapis --help\n  ```\n\nIf you built from source, replace `lapis` in the commands below with `./target/release/lapis`.\n\nCreate a starter configuration and follow the provider prompts:\n\n```bash\nlapis init --config ~/.config/lapis/lapis.toml\n```\n\nFor scripted setup, pass provider flags such as `--enable-openai` with `--non-interactive`. Lapis keeps secrets out of config; provider entries use `api_key_env`.\n\n```bash\nexport OPENAI_API_KEY=\"...\"\nexport XAI_API_KEY=\"...\"\nexport EXA_API_KEY=\"...\"\nexport TAVILY_API_KEY=\"...\"\n```\n\nCheck local readiness:\n\n```bash\nlapis check --config ~/.config/lapis/lapis.toml\n```\n\n`lapis check --live` reports provider reachability probes as deferred in v1; it does not validate real API key correctness.\n\nRegister Lapis with Claude Code:\n\n```bash\nlapis mcp register --scope local --config ~/.config/lapis/lapis.toml\n```\n\nBy default, registration records the current `lapis` executable path. Pass `--lapis-bin` only when Claude Code should launch a different binary. Registration validates enabled-provider environment variables before invoking `claude` and forwards their current values into Claude Code registration with redacted dry-run output.\n\nStart the MCP server manually when needed:\n\n```bash\nlapis serve --config ~/.config/lapis/lapis.toml\n```\n\nOr run through Cargo during development:\n\n```bash\ncargo run -- onboard --config ~/.config/lapis/lapis.toml --dry-run\ncargo run -- serve --config ~/.config/lapis/lapis.toml\n```\n\nLogs are written to stderr. MCP protocol messages are exchanged over stdin and stdout.\n\n### Maintainer release prerequisites\n\nBefore creating a release tag:\n\n- Ensure the npm scope/package for `@4o3f/lapis` is available to publish.\n- Configure `NPM_TOKEN` as a GitHub secret with publish access to `@4o3f/lapis`.\n- Homebrew formula generation is enabled, but automatic tap publishing is intentionally disabled to avoid requiring a separate tap repository.\n- `cargo-dist` generates the MSI package with a license sidecar. Windows code signing is a later hardening step unless configured separately.\n\n## MCP Tools\n\nThe server exposes two MCP tools:\n\n| Tool | Purpose |\n| --- | --- |\n| `aspect_research` | Runs one research aspect and returns an `AspectResearchResult`. |\n| `deep_research` | Runs multiple research aspects and returns a `DeepResearchResult`. |\n\nSupported MCP request `schema_version`:\n\n```text\n0.1\n```\n\nSee [`docs/mcp-usage.md`](docs/mcp-usage.md) for the full MCP client interface, including JSON-RPC lifecycle messages, request payloads, response envelopes, and error formats.\n\n## Documentation\n\n| Document | Purpose |\n| --- | --- |\n| [`docs/mcp-usage.md`](docs/mcp-usage.md) | MCP-only client interface and tool schemas. |\n| [`docs/configuration.md`](docs/configuration.md) | Runtime configuration, providers, budgets, logging, and troubleshooting. |\n| [`docs/development.md`](docs/development.md) | Repository layout and contributor commands. |\n| [`docs/research-agent-product.md`](docs/research-agent-product.md) | Product and architecture background. |\n\n## Requirements\n\n- An MCP client that can run stdio MCP servers.\n- At least one enabled model provider.\n- A search provider for aspects that allow search.\n- Rust toolchain with Rust 2024 edition support when building from source or developing.\n\n## Common Development Checks\n\n```bash\ncargo fmt --all -- --check\ncargo test --workspace\ncargo clippy --workspace --all-targets -- -D warnings\n```\n\n## License\n\nThis project is licensed under the GNU Affero General Public License v3.0. See `LICENSE` for details.\n","readmeFilename":"README.md"}