Files
lobehub/packages/electron-client-ipc
Innei 84674b1e10 feat(builtin-tool-local-system): skip intervention for safe paths like /tmp (#13232)
*  feat(builtin-tool-local-system): skip intervention for safe paths like /tmp

Add SAFE_PATH_PREFIXES whitelist to bypass user confirmation for
file operations targeting ephemeral directories (/tmp, /var/tmp).

* Fix intervention audit tests

* Move fs checks into Electron
2026-03-26 01:38:36 +08:00
..

@lobechat/electron-client-ipc

This package is a client-side toolkit for handling IPC (Inter-Process Communication) in LobeHub's Electron environment.

Introduction

In Electron applications, IPC (Inter-Process Communication) serves as a bridge connecting the Main Process, Renderer Process, and NextJS Process. To better organize and manage these communications, we have split the IPC-related code into two packages:

  • @lobechat/electron-client-ipc: Client-side IPC package
  • @lobechat/electron-server-ipc: Server-side IPC package

Key Differences

electron-client-ipc (This Package)

  • Runtime Environment: Runs in the Renderer Process
  • Main Responsibilities:
    • Provides interface definitions for renderer process to call main process methods
    • Encapsulates ipcRenderer.invoke related methods
    • Handles communication requests with the main process

electron-server-ipc

  • Runtime Environment: Runs in both Electron main process and Next.js server process
  • Main Responsibilities:
    • Provides Socket-based IPC communication mechanism
    • Implements server-side (ElectronIPCServer) and client-side (ElectronIpcClient) communication components
    • Handles cross-process requests and responses
    • Provides automatic reconnection and error handling mechanisms
    • Ensures type-safe API calls

Use Cases

When the renderer process needs to:

  • Access system APIs
  • Perform file operations
  • Call main process specific functions

All such operations need to be initiated through the methods provided by the electron-client-ipc package.

Technical Notes

This separated package design follows the principle of separation of concerns, ensuring that:

  • IPC communication interfaces are clear and maintainable
  • Client-side and server-side code are decoupled
  • TypeScript type definitions are shared, ensuring type safety

🤝 Contribution

IPC communication needs vary across different use cases and platforms. We welcome community contributions to improve and extend the IPC functionality. You can participate in improvements through:

How to Contribute

  1. Bug Reports: Report issues with IPC communication or type definitions
  2. Feature Requests: Suggest new IPC methods or improvements to existing interfaces
  3. Code Contributions: Submit pull requests for bug fixes or new features

Contribution Process

  1. Fork the LobeHub repository
  2. Make your changes to the IPC client package
  3. Submit a Pull Request describing:
  • The problem being solved
  • Implementation details
  • Test cases or usage examples
  • Impact on existing functionality

📌 Note

This is an internal module of LobeHub ("private": true), designed specifically for LobeHub and not published as a standalone package.