Skip to content

Frequently Asked Questions

Why does lip provide a daemon (lipd)?

The daemon (lipd) is designed for external integrations. It allows IDEs, GUIs, and other tools to interact with lip programmatically using a standard JSON-RPC interface.

Note: The standard lip CLI runs independently and does not use the daemon. This ensures the CLI remains simple and has zero startup overhead for standard operations.

What is tooth.json?

tooth.json is the manifest file for a lip package. It defines the package's metadata (name, version, description), its dependencies, and how it should be installed on different platforms. Think of it like package.json for Node.js or Cargo.toml for Rust.

Does lip install update tooth.json?

No. Running lip install <package> installs the package into your workspace and updates the lockfile (tooth_lock.json) to track the state, but it does not modify your tooth.json manifest. You must manually add dependencies to tooth.json if you want them to be permanent parts of your project's requirements.

How do I upgrade lip itself?

You can download the latest release from the GitHub releases page or use the installation script provided in the documentation. There is no built-in lip self-update command yet.

Does lip support private repositories?

Yes, lip can install packages from private Git repositories using your system's Git credentials (e.g., SSH keys or Credential Manager). It relies on the local Git environment for authentication.

Where does lip store installed packages?

lip installs package files directly into your workspace based on the rules defined in tooth.json. Unlike some package managers, it does not isolate dependencies in a node_modules or vendor folder unless the package manifest explicitly specifies those locations.

The global cache is stored in your system's local application data directory (e.g., %LOCALAPPDATA%\lip\cache on Windows, or ~/.local/share/lip/cache on Linux).