using System.Runtime.InteropServices; using marlin.agents.shell; using marlin.core.models; DotNetEnv.Env.NoClobber().TraversePath().Load(); var client = MarlinApiClient.FromEnvironment(); var capabilities = new CapabilitySet(); capabilities.Items.Add(KnownCapabilities.Architecture, RuntimeInformation.OSArchitecture.ToString()); capabilities.Items.Add(KnownCapabilities.CoreCount, Environment.ProcessorCount.ToString()); capabilities.Items.Add(KnownCapabilities.Memory, (GC.GetGCMemoryInfo().TotalAvailableMemoryBytes / (1024 * 1024)).ToString()); var status = new AgentStatus(capabilities); AgentConfiguration config = await client.Handshake(status); Console.WriteLine($"IAM: {config.Name}"); Console.WriteLine($"MCJ: {config.MaxConcurrentJobs}"); var job = await client.QueueNextJob(); Console.WriteLine(job == null ? "No pending jobs." : $"Claimed job {job.Id}: {job.Recipe}");