import json,subprocess,pathlib names=['canvas-h3-prompt-normalizer-healthy-20261026','huobao-vdn-normalizer','comfyui-manju','comfyui','h3-caption-gpu3-canary-8a5f','huobao-comfy-gpu1'] for name in names: p=subprocess.run(['docker','inspect',name],capture_output=True,text=True) if p.returncode:print(json.dumps({'container':name,'exists':False}));continue item=json.loads(p.stdout)[0] print(json.dumps({'container':name,'workdir':item['Config']['WorkingDir'],'running':item['State']['Running'],'mounts':[{'source':m['Source'],'destination':m['Destination'],'rw':m['RW']} for m in item['Mounts']]})) code='''import app,json,asyncio,httpx async def main(): for p in app.providers().values(): async with httpx.AsyncClient(timeout=8) as c: r=await c.get(p.base_url+'/queue',headers=app.provider_headers(p));r.raise_for_status();q=r.json() print(json.dumps({'provider':p.id,'base':p.base_url,'running':len(q.get('queue_running',[])),'pending':len(q.get('queue_pending',[]))})) asyncio.run(main())''' p=subprocess.run(['docker','exec','canvas-h3-prompt-normalizer-healthy-20261026','python','-c',code],capture_output=True,text=True) print(p.stdout) if p.returncode:print('provider inventory failed; inspect locally on server') print('services',subprocess.check_output(['systemctl','--user','is-system-running'],text=True).strip() if subprocess.run(['systemctl','--user','is-system-running'],capture_output=True).returncode==0 else 'user manager not running or degraded')