Skip to content

Commit 5c35029

Browse files
committed
Add token generation for federated server; remove additional P2P setup for federated instance mode
1 parent aa7171d commit 5c35029

File tree

3 files changed

+24
-9
lines changed

3 files changed

+24
-9
lines changed

core/cli/federated.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ package cli
22

33
import (
44
"context"
5+
"fmt"
56

67
cliContext "github.com/mudler/LocalAI/core/cli/context"
78
cliP2P "github.com/mudler/LocalAI/core/cli/p2p"
89
"github.com/mudler/LocalAI/core/p2p"
10+
"github.com/rs/zerolog/log"
911
)
1012

1113
type FederatedCLI struct {
@@ -18,6 +20,24 @@ type FederatedCLI struct {
1820

1921
func (f *FederatedCLI) Run(ctx *cliContext.Context) error {
2022

23+
if f.Peer2PeerToken == "" {
24+
log.Info().Msg("No token provided, generating one")
25+
connectionData, err := p2p.GenerateNewConnectionData(
26+
f.Peer2PeerDHTInterval, f.Peer2PeerOTPInterval,
27+
f.Peer2PeerPrivkey, f.Peer2PeerUsePeerguard,
28+
)
29+
if err != nil {
30+
log.Warn().Msgf("Error generating token: %s", err.Error())
31+
}
32+
f.Peer2PeerToken = connectionData.Base64()
33+
34+
log.Info().Msg("Generated Token:")
35+
fmt.Println(f.Peer2PeerToken)
36+
37+
log.Info().Msg("To use the token, you can run the following command in another node or terminal:")
38+
fmt.Printf("export TOKEN=\"%s\"\nlocal-ai worker p2p-llama-cpp-rpc\n", f.Peer2PeerToken)
39+
}
40+
2141
fs := p2p.NewFederatedServer(f.Address, p2p.NetworkID(f.Peer2PeerNetworkID, p2p.FederatedID), f.Peer2PeerToken, !f.RandomWorker, f.TargetWorker)
2242

2343
return fs.Start(context.Background(), f.P2PCommonFlags)

core/cli/run.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,6 @@ func (r *RunCMD) Run(ctx *cliContext.Context) error {
138138
}
139139
opts = append(opts, config.WithP2PToken(token))
140140

141-
if r.Federated {
142-
p2pCfg.PeerGuard.Autocleanup = true
143-
p2pCfg.PeerGuard.PeerGate = true
144-
}
145-
146141
p2pCfg.NetworkToken = token
147142
}
148143

core/p2p/federated_server.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ import (
1515
"github.com/rs/zerolog/log"
1616
)
1717

18-
func (f *FederatedServer) Start(ctx context.Context, p2pCommonFlags cliP2P.P2PCommonFlags) error {
18+
func (fs *FederatedServer) Start(ctx context.Context, p2pCommonFlags cliP2P.P2PCommonFlags) error {
1919
p2pCfg := NewP2PConfig(p2pCommonFlags)
20-
p2pCfg.NetworkToken = f.p2ptoken
20+
p2pCfg.NetworkToken = fs.p2ptoken
2121
p2pCfg.PeerGuard.Autocleanup = true
2222
p2pCfg.PeerGuard.PeerGate = true
2323

@@ -30,13 +30,13 @@ func (f *FederatedServer) Start(ctx context.Context, p2pCommonFlags cliP2P.P2PCo
3030
return fmt.Errorf("creating a new node: %w", err)
3131
}
3232

33-
if err := ServiceDiscoverer(ctx, n, f.service, func(servicesID string, tunnel NodeData) {
33+
if err := ServiceDiscoverer(ctx, n, fs.service, func(servicesID string, tunnel NodeData) {
3434
log.Debug().Msgf("Discovered node: %s", tunnel.ID)
3535
}, false); err != nil {
3636
return err
3737
}
3838

39-
return f.proxy(ctx, n)
39+
return fs.proxy(ctx, n)
4040
}
4141

4242
func (fs *FederatedServer) proxy(ctx context.Context, node *node.Node) error {

0 commit comments

Comments
 (0)