A non-transitory computer-readable medium storing instructions that upon execution by a processing device cause the processing device to perform operations, comprising:
- receiving a request for key-value metadata associated with a project at a first server, the first server implementing a management module, from a first client machine in response to a determination, by the first client machine, that a first user has not used the first client machine to connect or exchange data with a first virtual machine;
- sending, by the first server, key-value metadata to the first client machine, the key-value metadata including key-value information associated with the project and key-value information of a group of users associated with the project;
- receiving updated key-value metadata from the first client machine at the first server, the updated key-value metadata including a first public key associated with the first user from the first client machine, wherein the first public key and a first private key were generated on the first client machine by a first client tool at the first client machine in response to the determination that the first user has not used the first client machine to connect or exchange data with a first virtual machine, the updated key-value metadata updating the group of users associated with the project by including the key-value information of the first user using the first client machine;
- receiving a request for key-value metadata associated with the project at the first server from a second client machine in response to a determination, by the second client machine, that a second user has not used the second client machine to connect or exchange data with a second virtual machine, wherein the project includes at least the first virtual machine and the second virtual machine;
- sending, by the first server, key-value metadata to the second client machine, the key-value metadata including key-value information associated with the project and key-value information of the group of users associated with the project;
- receiving updated key-value metadata from the second client machine at the first server, the updated key-value metadata including a second public key associated with the second user from the second client machine, wherein the second public key and a second private key were generated on the second client machine by a second client tool at the second client machine in response to the determination that the second user has not used the second client machine to connect or exchange data with a second virtual, the updated key-value metadata updating the group of users associated with the project by including the key-value information of the second user using the second client machine;
- and
- providing the updated key-value metadata to a plurality of metadata servers, the plurality of metadata servers including one or more second servers and including a first metadata server and a second metadata server, wherein a first metadata server is dedicated to the first virtual machine and configured to provide the updated key-value metadata to the first virtual machine in response to a request for updated key-value metadata from the first virtual machine and wherein a second metadata server is dedicated to the second virtual machine and configured to provide the updated key-value metadata to the second virtual machine in response to a request for updated key-value metadata from the second virtual machine.