# README
Project Server Package
This package contains the code for the Inox Project Server. The Project Server is basically an LSP server with extra features:
- Custom methods for debugging (Debug Adapter Protocol)
- Custom methods for accessing filesystems
- Custom methods for accessing project secrets
- Custom methods for creating and opening projects
- Custom methods for production management
- Custom methods for retrieving learning data (e.g. tutorials)
Subpackages:
- jsonrpc
- logs
- lsp: language-agnostic logic & types
Architecture
Current (temporary)
graph TB
Spawner(inoxd or user) --> |$ inox project-server -config='...'| InoxBinary
subgraph InoxBinary[Inox Binary]
direction TB
ProjectServer
NodeAgent
ProjectServer --> |asks to deploy/stop apps| NodeAgent
NodeAgent --> InoxRuntime1
NodeAgent --> InoxRuntime2
end
ProjectServer[Project Server] --> |stores data in| ProjectsDir
InoxRuntime1[Inox Runtime - App 1] --> |stores data in| ProdDir
InoxRuntime2[Inox Runtime - App 2] --> |stores data in| ProdDir
ProjectsDir(/var/lib/inoxd/projects)
ProdDir(/var/lib/inoxd/prod)
The next version is way more secure and resilient.
Next
In this version every important component runs in a separate inox
process.
graph TB
Inoxd(inoxd) --> |$ inox project-server -config='...'| ProjectServer
Inoxd --> |spawns| NodeAgent
NodeAgent("Node Agent \n [uses cgroups]") --> |creates process| DeployedApp1(Deployed Application 1)
NodeAgent --> |creates process| DeployedApp2(Deployed Application 2)
DeployedApp1 --> |stores data in| ProdDir
DeployedApp2 --> |stores data in| ProdDir
ProjectServer[Project Server] --> |stores data in| ProjectsDir
ProjectServer --> |asks to deploy/stop apps| NodeAgent
ProjectsDir(/var/lib/inoxd/projects)
ProdDir(/var/lib/inoxd/prod)
The next version may be slightly different from what is planned here.