mirror of
https://github.com/mudler/LocalAI.git
synced 2025-05-25 13:04:59 +00:00

feat(p2p): allow to run multiple clusters in the same network Allow to specify a network ID via CLI which allows to run multiple clusters, logically separated within the same network (by using the same shared token). Note: This segregation is not "secure" by any means, anyone having the network token can see the services available in all the network, however, this provides a way to separate the inference endpoints. This allows for instance to have a node which is both federated and having attached a set of llama.cpp workers. Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
30 lines
1,019 B
Go
30 lines
1,019 B
Go
package localai
|
|
|
|
import (
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/mudler/LocalAI/core/config"
|
|
"github.com/mudler/LocalAI/core/p2p"
|
|
"github.com/mudler/LocalAI/core/schema"
|
|
)
|
|
|
|
// ShowP2PNodes returns the P2P Nodes
|
|
// @Summary Returns available P2P nodes
|
|
// @Success 200 {object} []schema.P2PNodesResponse "Response"
|
|
// @Router /api/p2p [get]
|
|
func ShowP2PNodes(appConfig *config.ApplicationConfig) func(*fiber.Ctx) error {
|
|
// Render index
|
|
return func(c *fiber.Ctx) error {
|
|
return c.JSON(schema.P2PNodesResponse{
|
|
Nodes: p2p.GetAvailableNodes(p2p.NetworkID(appConfig.P2PNetworkID, "")),
|
|
FederatedNodes: p2p.GetAvailableNodes(p2p.NetworkID(appConfig.P2PNetworkID, p2p.FederatedID)),
|
|
})
|
|
}
|
|
}
|
|
|
|
// ShowP2PToken returns the P2P token
|
|
// @Summary Show the P2P token
|
|
// @Success 200 {string} string "Response"
|
|
// @Router /api/p2p/token [get]
|
|
func ShowP2PToken(appConfig *config.ApplicationConfig) func(*fiber.Ctx) error {
|
|
return func(c *fiber.Ctx) error { return c.Send([]byte(appConfig.P2PToken)) }
|
|
}
|