[{"data":1,"prerenderedAt":2098},["ShallowReactive",2],{"docs-navigation":3,"-docs-guides-repositories":410,"-docs-guides-repositories-surround":2093},[4,19,166,319,333,397],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":18},"Overview","i-lucide-compass","\u002Fdocs\u002Foverview","docs\u002F1.overview",[10,14],{"title":11,"path":12,"stem":13},"Introduction","\u002Fdocs\u002Foverview\u002Fintroduction","docs\u002F1.overview\u002F1.introduction",{"title":15,"path":16,"stem":17},"JFrog compatibility","\u002Fdocs\u002Foverview\u002Fjfrog-compatibility","docs\u002F1.overview\u002F2.jfrog-compatibility",false,{"title":20,"icon":21,"path":22,"stem":23,"children":24,"page":18},"Installation","i-lucide-download","\u002Fdocs\u002Finstallation","docs\u002F2.installation",[25,29,43,68,108,112,116,162],{"title":26,"path":27,"stem":28},"Choosing a method","\u002Fdocs\u002Finstallation\u002Foverview","docs\u002F2.installation\u002F1.overview",{"title":30,"icon":31,"path":32,"stem":33,"children":34,"page":18},"Single binary","i-lucide-terminal","\u002Fdocs\u002Finstallation\u002Fsingle-binary","docs\u002F2.installation\u002F2.single-binary",[35,39],{"title":36,"path":37,"stem":38},"Quick start","\u002Fdocs\u002Finstallation\u002Fsingle-binary\u002Fquick-start","docs\u002F2.installation\u002F2.single-binary\u002F1.quick-start",{"title":40,"path":41,"stem":42},"Limits and backups","\u002Fdocs\u002Finstallation\u002Fsingle-binary\u002Foperations","docs\u002F2.installation\u002F2.single-binary\u002F2.operations",{"title":44,"icon":45,"path":46,"stem":47,"children":48,"page":18},"Docker","i-simple-icons-docker","\u002Fdocs\u002Finstallation\u002Fdocker","docs\u002F2.installation\u002F3.docker",[49,52,56,60,64],{"title":36,"path":50,"stem":51},"\u002Fdocs\u002Finstallation\u002Fdocker\u002Fquick-start","docs\u002F2.installation\u002F3.docker\u002F1.quick-start",{"title":53,"path":54,"stem":55},"PostgreSQL and S3","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fpostgresql-and-s3","docs\u002F2.installation\u002F3.docker\u002F2.postgresql-and-s3",{"title":57,"path":58,"stem":59},"Docker Compose","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose","docs\u002F2.installation\u002F3.docker\u002F3.compose",{"title":61,"path":62,"stem":63},"Compose settings","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose-settings","docs\u002F2.installation\u002F3.docker\u002F4.compose-settings",{"title":65,"path":66,"stem":67},"Compose with another object store","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose-other-object-storage","docs\u002F2.installation\u002F3.docker\u002F5.compose-other-object-storage",{"title":69,"icon":70,"path":71,"stem":72,"children":73,"page":18},"Kubernetes","i-simple-icons-kubernetes","\u002Fdocs\u002Finstallation\u002Fkubernetes","docs\u002F2.installation\u002F4.kubernetes",[74,77,80,84,88,92,96,100,104],{"title":5,"path":75,"stem":76},"\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Foverview","docs\u002F2.installation\u002F4.kubernetes\u002F1.overview",{"title":36,"path":78,"stem":79},"\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fquick-start","docs\u002F2.installation\u002F4.kubernetes\u002F2.quick-start",{"title":81,"path":82,"stem":83},"External PostgreSQL","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexternal-postgresql","docs\u002F2.installation\u002F4.kubernetes\u002F3.external-postgresql",{"title":85,"path":86,"stem":87},"External object storage","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexternal-object-storage","docs\u002F2.installation\u002F4.kubernetes\u002F4.external-object-storage",{"title":89,"path":90,"stem":91},"Exposing Relic","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexposing","docs\u002F2.installation\u002F4.kubernetes\u002F5.exposing",{"title":93,"path":94,"stem":95},"Values","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fvalues","docs\u002F2.installation\u002F4.kubernetes\u002F6.values",{"title":97,"path":98,"stem":99},"Upgrades and removal","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fupgrades","docs\u002F2.installation\u002F4.kubernetes\u002F7.upgrades",{"title":101,"path":102,"stem":103},"Hardening and probes","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fhardening","docs\u002F2.installation\u002F4.kubernetes\u002F8.hardening",{"title":105,"path":106,"stem":107},"Monitoring","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fmonitoring","docs\u002F2.installation\u002F4.kubernetes\u002F9.monitoring",{"title":109,"path":110,"stem":111},"Cloudflare","\u002Fdocs\u002Finstallation\u002Fcloudflare","docs\u002F2.installation\u002F5.cloudflare",{"title":113,"path":114,"stem":115},"Configuration reference","\u002Fdocs\u002Finstallation\u002Fconfiguration","docs\u002F2.installation\u002F6.configuration",{"title":117,"icon":118,"path":119,"stem":120,"children":121,"page":18},"Storage","i-lucide-hard-drive","\u002Fdocs\u002Finstallation\u002Fstorage","docs\u002F2.installation\u002F7.storage",[122,126,130,134,138,142,146,150,154,158],{"title":123,"path":124,"stem":125},"Storage overview","\u002Fdocs\u002Finstallation\u002Fstorage\u002Foverview","docs\u002F2.installation\u002F7.storage\u002F1.overview",{"title":127,"path":128,"stem":129},"Azure Blob Storage","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fazure-blob-storage","docs\u002F2.installation\u002F7.storage\u002F10.azure-blob-storage",{"title":131,"path":132,"stem":133},"SeaweedFS","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fseaweedfs","docs\u002F2.installation\u002F7.storage\u002F2.seaweedfs",{"title":135,"path":136,"stem":137},"Amazon S3","\u002Fdocs\u002Finstallation\u002Fstorage\u002Famazon-s3","docs\u002F2.installation\u002F7.storage\u002F3.amazon-s3",{"title":139,"path":140,"stem":141},"Cloudflare R2","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fcloudflare-r2","docs\u002F2.installation\u002F7.storage\u002F4.cloudflare-r2",{"title":143,"path":144,"stem":145},"MinIO","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fminio","docs\u002F2.installation\u002F7.storage\u002F5.minio",{"title":147,"path":148,"stem":149},"Google Cloud Storage","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fgoogle-cloud-storage","docs\u002F2.installation\u002F7.storage\u002F6.google-cloud-storage",{"title":151,"path":152,"stem":153},"Backblaze B2","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fbackblaze-b2","docs\u002F2.installation\u002F7.storage\u002F7.backblaze-b2",{"title":155,"path":156,"stem":157},"Other S3-compatible services","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fother","docs\u002F2.installation\u002F7.storage\u002F8.other",{"title":159,"path":160,"stem":161},"Filesystem","\u002Fdocs\u002Finstallation\u002Fstorage\u002Ffilesystem","docs\u002F2.installation\u002F7.storage\u002F9.filesystem",{"title":163,"path":164,"stem":165},"Development","\u002Fdocs\u002Finstallation\u002Fdevelopment","docs\u002F2.installation\u002F8.development",{"title":167,"icon":168,"path":169,"stem":170,"children":171,"page":18},"Guides","i-lucide-book-open","\u002Fdocs\u002Fguides","docs\u002F3.guides",[172,176,180,254,296,300,303,307,311,315],{"title":173,"path":174,"stem":175},"Repositories","\u002Fdocs\u002Fguides\u002Frepositories","docs\u002F3.guides\u002F1.repositories",{"title":177,"path":178,"stem":179},"Replication","\u002Fdocs\u002Fguides\u002Freplication","docs\u002F3.guides\u002F10.replication",{"title":181,"icon":182,"path":183,"stem":184,"children":185,"page":18},"Package types","i-lucide-package","\u002Fdocs\u002Fguides\u002Fpackage-types","docs\u002F3.guides\u002F2.package-types",[186,190,194,198,202,206,210,214,218,222,226,230,234,238,242,246,250],{"title":187,"path":188,"stem":189},"npm, yarn and pnpm","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnpm","docs\u002F3.guides\u002F2.package-types\u002F01.npm",{"title":191,"path":192,"stem":193},"Maven and Gradle","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fmaven-gradle","docs\u002F3.guides\u002F2.package-types\u002F02.maven-gradle",{"title":195,"path":196,"stem":197},"Docker and OCI","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fdocker","docs\u002F3.guides\u002F2.package-types\u002F03.docker",{"title":199,"path":200,"stem":201},"Go","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fgo","docs\u002F3.guides\u002F2.package-types\u002F04.go",{"title":203,"path":204,"stem":205},"PyPI","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fpypi","docs\u002F3.guides\u002F2.package-types\u002F05.pypi",{"title":207,"path":208,"stem":209},"Helm","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fhelm","docs\u002F3.guides\u002F2.package-types\u002F06.helm",{"title":211,"path":212,"stem":213},"NuGet","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnuget","docs\u002F3.guides\u002F2.package-types\u002F07.nuget",{"title":215,"path":216,"stem":217},"RubyGems","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Frubygems","docs\u002F3.guides\u002F2.package-types\u002F08.rubygems",{"title":219,"path":220,"stem":221},"Cargo","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fcargo","docs\u002F3.guides\u002F2.package-types\u002F09.cargo",{"title":223,"path":224,"stem":225},"Conan","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fconan","docs\u002F3.guides\u002F2.package-types\u002F10.conan",{"title":227,"path":228,"stem":229},"Terraform and OpenTofu","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fterraform","docs\u002F3.guides\u002F2.package-types\u002F11.terraform",{"title":231,"path":232,"stem":233},"Hugging Face","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fhugging-face","docs\u002F3.guides\u002F2.package-types\u002F12.hugging-face",{"title":235,"path":236,"stem":237},"Generic files","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fgeneric","docs\u002F3.guides\u002F2.package-types\u002F13.generic",{"title":239,"path":240,"stem":241},"RPM","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Frpm","docs\u002F3.guides\u002F2.package-types\u002F14.rpm",{"title":243,"path":244,"stem":245},"Debian","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fdebian","docs\u002F3.guides\u002F2.package-types\u002F15.debian",{"title":247,"path":248,"stem":249},"Alpine","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Falpine","docs\u002F3.guides\u002F2.package-types\u002F16.alpine",{"title":251,"path":252,"stem":253},"Nix","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnix","docs\u002F3.guides\u002F2.package-types\u002F17.nix",{"title":255,"icon":256,"path":257,"stem":258,"children":259,"page":18},"Security","i-lucide-shield","\u002Fdocs\u002Fguides\u002Fsecurity","docs\u002F3.guides\u002F3.security",[260,264,268,272,276,280,284,288,292],{"title":261,"path":262,"stem":263},"Permissions","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fpermissions","docs\u002F3.guides\u002F3.security\u002F1.permissions",{"title":265,"path":266,"stem":267},"LDAP","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fldap","docs\u002F3.guides\u002F3.security\u002F2.ldap",{"title":269,"path":270,"stem":271},"Access tokens","\u002Fdocs\u002Fguides\u002Fsecurity\u002Ftokens","docs\u002F3.guides\u002F3.security\u002F3.tokens",{"title":273,"path":274,"stem":275},"Relic Scan","\u002Fdocs\u002Fguides\u002Fsecurity\u002Frelic-scan","docs\u002F3.guides\u002F3.security\u002F4.relic-scan",{"title":277,"path":278,"stem":279},"CVE intelligence","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fcve-intelligence","docs\u002F3.guides\u002F3.security\u002F5.cve-intelligence",{"title":281,"path":282,"stem":283},"Audit log","\u002Fdocs\u002Fguides\u002Fsecurity\u002Faudit-log","docs\u002F3.guides\u002F3.security\u002F6.audit-log",{"title":285,"path":286,"stem":287},"Single sign-on","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fsingle-sign-on","docs\u002F3.guides\u002F3.security\u002F7.single-sign-on",{"title":289,"path":290,"stem":291},"SCIM provisioning","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fscim","docs\u002F3.guides\u002F3.security\u002F8.scim",{"title":293,"path":294,"stem":295},"Workload identities","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fworkload-identities","docs\u002F3.guides\u002F3.security\u002F9.workload-identities",{"title":297,"path":298,"stem":299},"Operations","\u002Fdocs\u002Fguides\u002Foperations","docs\u002F3.guides\u002F4.operations",{"title":105,"path":301,"stem":302},"\u002Fdocs\u002Fguides\u002Fmonitoring","docs\u002F3.guides\u002F5.monitoring",{"title":304,"path":305,"stem":306},"Metrics reference","\u002Fdocs\u002Fguides\u002Fmetrics-reference","docs\u002F3.guides\u002F6.metrics-reference",{"title":308,"path":309,"stem":310},"Webhooks","\u002Fdocs\u002Fguides\u002Fwebhooks","docs\u002F3.guides\u002F7.webhooks",{"title":312,"path":313,"stem":314},"Projects","\u002Fdocs\u002Fguides\u002Fprojects","docs\u002F3.guides\u002F8.projects",{"title":316,"path":317,"stem":318},"AI agents","\u002Fdocs\u002Fguides\u002Fai-agents","docs\u002F3.guides\u002F9.ai-agents",{"title":320,"icon":321,"path":322,"stem":323,"children":324,"page":18},"API","i-lucide-braces","\u002Fdocs\u002Fapi","docs\u002F4.api",[325,329],{"title":326,"path":327,"stem":328},"API usage","\u002Fdocs\u002Fapi\u002Foverview","docs\u002F4.api\u002F1.overview",{"title":330,"path":331,"stem":332},"Relic API","\u002Fdocs\u002Fapi\u002Frelic-api","docs\u002F4.api\u002F2.relic-api",{"title":334,"icon":31,"path":335,"stem":336,"children":337,"page":18},"CLI","\u002Fdocs\u002Fcli","docs\u002F5.cli",[338,341,345,349,353,357,361,365,369,373,377,381,385,389,393],{"title":5,"path":339,"stem":340},"\u002Fdocs\u002Fcli\u002Foverview","docs\u002F5.cli\u002F01.overview",{"title":342,"path":343,"stem":344},"Sign in and contexts","\u002Fdocs\u002Fcli\u002Fsign-in","docs\u002F5.cli\u002F02.sign-in",{"title":346,"path":347,"stem":348},"Resources","\u002Fdocs\u002Fcli\u002Fresources","docs\u002F5.cli\u002F03.resources",{"title":350,"path":351,"stem":352},"apply, diff and delete","\u002Fdocs\u002Fcli\u002Fapply","docs\u002F5.cli\u002F04.apply",{"title":354,"path":355,"stem":356},"Artifacts","\u002Fdocs\u002Fcli\u002Ffiles","docs\u002F5.cli\u002F05.files",{"title":358,"path":359,"stem":360},"Server, API and tokens","\u002Fdocs\u002Fcli\u002Fplatform","docs\u002F5.cli\u002F06.platform",{"title":362,"path":363,"stem":364},"Builds and images","\u002Fdocs\u002Fcli\u002Fbuilds","docs\u002F5.cli\u002F07.builds",{"title":366,"path":367,"stem":368},"Scanning and auditing","\u002Fdocs\u002Fcli\u002Fsecurity","docs\u002F5.cli\u002F08.security",{"title":370,"path":371,"stem":372},"Releases","\u002Fdocs\u002Fcli\u002Freleases","docs\u002F5.cli\u002F09.releases",{"title":374,"path":375,"stem":376},"Evidence","\u002Fdocs\u002Fcli\u002Fevidence","docs\u002F5.cli\u002F10.evidence",{"title":378,"path":379,"stem":380},"Package managers","\u002Fdocs\u002Fcli\u002Fpackage-managers","docs\u002F5.cli\u002F11.package-managers",{"title":382,"path":383,"stem":384},"Scan reports and VEX","\u002Fdocs\u002Fcli\u002Freports-and-vex","docs\u002F5.cli\u002F12.reports-and-vex",{"title":386,"path":387,"stem":388},"Migrating from Artifactory","\u002Fdocs\u002Fcli\u002Fimport","docs\u002F5.cli\u002F13.import",{"title":390,"path":391,"stem":392},"Database","\u002Fdocs\u002Fcli\u002Fdatabase","docs\u002F5.cli\u002F14.database",{"title":394,"path":395,"stem":396},"Machine setup","\u002Fdocs\u002Fcli\u002Fsetup","docs\u002F5.cli\u002F15.setup",{"title":398,"icon":399,"path":400,"stem":401,"children":402,"page":18},"SDK","i-lucide-boxes","\u002Fdocs\u002Fsdk","docs\u002F6.sdk",[403,406],{"title":5,"path":404,"stem":405},"\u002Fdocs\u002Fsdk\u002Foverview","docs\u002F6.sdk\u002F1.overview",{"title":407,"path":408,"stem":409},"Relic API clients","\u002Fdocs\u002Fsdk\u002Frelic-api-clients","docs\u002F6.sdk\u002F2.relic-api-clients",{"id":411,"title":173,"body":412,"description":2086,"extension":2087,"links":2088,"meta":2089,"navigation":2090,"path":174,"seo":2091,"stem":175,"__hash__":2092},"docs\u002Fdocs\u002F3.guides\u002F1.repositories.md",{"type":413,"value":414,"toc":2073},"minimark",[415,420,464,482,486,493,622,629,758,939,943,949,1066,1130,1133,1163,1167,1181,1360,1364,1370,1456,1460,1463,1550,1611,1615,1624,1720,1797,1803,1806,1827,1830,1846,1850,1853,1856,1887,1890,1904,1907,1924,1928,1943,1946,1949,1964,1967,1987,1990,2014,2024,2027,2050,2053,2069],[416,417,419],"h2",{"id":418},"classes","Classes",[421,422,423,436],"table",{},[424,425,426],"thead",{},[427,428,429,433],"tr",{},[430,431,432],"th",{},"Class",[430,434,435],{},"What it does",[437,438,439,448,456],"tbody",{},[427,440,441,445],{},[442,443,444],"td",{},"Local",[442,446,447],{},"Stores what you deploy.",[427,449,450,453],{},[442,451,452],{},"Remote",[442,454,455],{},"Proxies an upstream registry and caches what it fetches.",[427,457,458,461],{},[442,459,460],{},"Virtual",[442,462,463],{},"Serves several repositories at one URL, resolving from its members in order.",[465,466,467,468,472,473,477,478,481],"p",{},"Create a repository in ",[469,470,471],"strong",{},"Repositories → New repository",", or in YAML with ",[474,475,476],"code",{},"relic apply -f","\n(see ",[479,480,346],"a",{"href":347},"). Relic stores each content once per SHA-256, so copies\nand moves take no extra storage.",[416,483,485],{"id":484},"remote-repositories","Remote repositories",[465,487,488,489,492],{},"A remote repository fetches a file from its upstream on first request and then serves it\nfrom the cache. Metadata (npm packuments, PyPI pages, ",[474,490,491],{},"maven-metadata.xml",") is fetched again\nafter the metadata cache period.",[494,495,496,535,557,593,606,616],"ul",{},[497,498,499,502,503,506,507,510,511,514,515,518,519,522,523,526,527,530,531,534],"li",{},[469,500,501],{},"Checksums."," A fetched file must match the checksum its upstream publishes\n(",[474,504,505],{},"X-Checksum-*"," headers, a Maven ",[474,508,509],{},".sha1",", npm's ",[474,512,513],{},"dist.shasum",", a PyPI ",[474,516,517],{},"#sha256=",").\nA mismatch is not stored. Package managers get ",[474,520,521],{},"502","; the Relic API answers\n",[474,524,525],{},"unavailable"," (",[474,528,529],{},"503"," over REST and on ",[474,532,533],{},"\u002Fapi\u002Fv1\u002Ffiles\u002F",").",[497,536,537,540,541,544,545,548,549,552,553,556],{},[469,538,539],{},"Missing files."," An upstream ",[474,542,543],{},"404"," or ",[474,546,547],{},"410"," is remembered for 30 minutes\n(",[469,550,551],{},"Remember upstream misses","; ",[474,554,555],{},"missedRetrievalCachePeriodSecs"," in the JFrog®\nArtifactory®-compatible API). 0 asks every time.",[497,558,559,562,563,566,567,566,569,566,571,574,575,578,579,581,582,584,585,588,589,592],{},[469,560,561],{},"Failures."," ",[474,564,565],{},"429",", ",[474,568,521],{},[474,570,529],{},[474,572,573],{},"504"," and dropped connections are tried three times,\nhonouring ",[474,576,577],{},"Retry-After",". DNS and certificate errors are not retried. Package managers\nget ",[474,580,521],{}," and the Relic API ",[474,583,525],{},"; the failure is not remembered. Relic's own failures answer ",[474,586,587],{},"500"," with\n",[474,590,591],{},"Cache-Control: no-store",".",[497,594,595,562,598,601,602,605],{},[469,596,597],{},"Cooldown.",[469,599,600],{},"Cooldown (days)"," hides npm and PyPI versions published upstream more\nrecently than that, and refuses their files with ",[474,603,604],{},"403",". Other formats ignore it.",[497,607,608,611,612,615],{},[469,609,610],{},"Version selection."," npm packuments and PyPI pages leave out versions that are cooling\ndown, in the malicious package catalog, quarantined or blocked by a watch. npm's ",[474,613,614],{},"latest","\ntag moves to the newest version left.",[497,617,618,621],{},[469,619,620],{},"One fetch."," Concurrent requests for the same file fetch it once per replica.",[465,623,624,625,628],{},"In YAML, a remote repository's settings go under ",[474,626,627],{},"remote",":",[630,631,636],"pre",{"className":632,"code":633,"language":634,"meta":635,"style":635},"language-yaml shiki shiki-themes material-theme-lighter github-light-default github-dark-default","apiVersion: relic.build\u002Fv1\nkind: Repository\nmetadata:\n  name: npm-remote\nspec:\n  class: remote\n  format: npm\n  remote:\n    url: https:\u002F\u002Fregistry.npmjs.org\n    cooldownDays: 7\n    quarantine: true\n","yaml","",[474,637,638,654,665,674,685,693,704,715,723,734,746],{"__ignoreMap":635},[639,640,643,647,650],"span",{"class":641,"line":642},"line",1,[639,644,646],{"class":645},"smKOL","apiVersion",[639,648,628],{"class":649},"sWneD",[639,651,653],{"class":652},"sasMN"," relic.build\u002Fv1\n",[639,655,657,660,662],{"class":641,"line":656},2,[639,658,659],{"class":645},"kind",[639,661,628],{"class":649},[639,663,664],{"class":652}," Repository\n",[639,666,668,671],{"class":641,"line":667},3,[639,669,670],{"class":645},"metadata",[639,672,673],{"class":649},":\n",[639,675,677,680,682],{"class":641,"line":676},4,[639,678,679],{"class":645},"  name",[639,681,628],{"class":649},[639,683,684],{"class":652}," npm-remote\n",[639,686,688,691],{"class":641,"line":687},5,[639,689,690],{"class":645},"spec",[639,692,673],{"class":649},[639,694,696,699,701],{"class":641,"line":695},6,[639,697,698],{"class":645},"  class",[639,700,628],{"class":649},[639,702,703],{"class":652}," remote\n",[639,705,707,710,712],{"class":641,"line":706},7,[639,708,709],{"class":645},"  format",[639,711,628],{"class":649},[639,713,714],{"class":652}," npm\n",[639,716,718,721],{"class":641,"line":717},8,[639,719,720],{"class":645},"  remote",[639,722,673],{"class":649},[639,724,726,729,731],{"class":641,"line":725},9,[639,727,728],{"class":645},"    url",[639,730,628],{"class":649},[639,732,733],{"class":652}," https:\u002F\u002Fregistry.npmjs.org\n",[639,735,737,740,742],{"class":641,"line":736},10,[639,738,739],{"class":645},"    cooldownDays",[639,741,628],{"class":649},[639,743,745],{"class":744},"sIO_5"," 7\n",[639,747,749,752,754],{"class":641,"line":748},11,[639,750,751],{"class":645},"    quarantine",[639,753,628],{"class":649},[639,755,757],{"class":756},"sH4kE"," true\n",[421,759,760,775],{},[424,761,762],{},[427,763,764,767,772],{},[430,765,766],{},"Form field",[430,768,769,771],{},[474,770,627],{}," field",[430,773,774],{},"Effect",[437,776,777,792,813,831,846,861,876,894,909,924],{},[427,778,779,784,789],{},[442,780,781],{},[469,782,783],{},"Upstream URL",[442,785,786],{},[474,787,788],{},"url",[442,790,791],{},"The upstream registry.",[427,793,794,802,810],{},[442,795,796,566,799],{},[469,797,798],{},"Upstream username",[469,800,801],{},"Upstream password or token",[442,803,804,566,807],{},[474,805,806],{},"username",[474,808,809],{},"password",[442,811,812],{},"Upstream credentials, never in the URL. The password is never shown again; an update without one keeps it while the URL's scheme, host and port stay the same.",[427,814,815,820,825],{},[442,816,817],{},[469,818,819],{},"Package index URL",[442,821,822],{},[474,823,824],{},"indexUrl",[442,826,827,828,830],{},"The upstream's index when it is not at ",[474,829,788],{}," (PyPI, a NuGet v3 feed).",[427,832,833,838,843],{},[442,834,835],{},[469,836,837],{},"Metadata cache (seconds)",[442,839,840],{},[474,841,842],{},"cachePeriodSeconds",[442,844,845],{},"Default (0): 2 hours.",[427,847,848,853,858],{},[442,849,850],{},[469,851,852],{},"Upstream timeout (ms)",[442,854,855],{},[474,856,857],{},"timeoutMilliseconds",[442,859,860],{},"Default (0): 15 seconds.",[427,862,863,868,873],{},[442,864,865],{},[469,866,867],{},"Remember upstream misses (seconds)",[442,869,870],{},[474,871,872],{},"missedRetrievalCachePeriodSeconds",[442,874,875],{},"Default: 1800.",[427,877,878,882,887],{},[442,879,880],{},[469,881,600],{},[442,883,884],{},[474,885,886],{},"cooldownDays",[442,888,889,890,592],{},"See ",[891,892,893],"em",{},"Cooldown",[427,895,896,901,906],{},[442,897,898],{},[469,899,900],{},"Quarantine",[442,902,903],{},[474,904,905],{},"quarantine",[442,907,908],{},"Hold cached files until Relic Scan finds them not malicious or an administrator releases them.",[427,910,911,916,921],{},[442,912,913],{},[469,914,915],{},"Offline",[442,917,918],{},[474,919,920],{},"offline",[442,922,923],{},"Serve only the cache; never contact the upstream.",[427,925,926,931,936],{},[442,927,928],{},[469,929,930],{},"Do not cache",[442,932,933],{},[474,934,935],{},"disableCache",[442,937,938],{},"Fetch every download from the upstream and keep nothing.",[416,940,942],{"id":941},"virtual-repositories","Virtual repositories",[465,944,945,946,628],{},"In YAML, a virtual repository's settings go under ",[474,947,948],{},"virtual",[630,950,952],{"className":632,"code":951,"language":634,"meta":635,"style":635},"apiVersion: relic.build\u002Fv1\nkind: Repository\nmetadata:\n  name: npm\nspec:\n  class: virtual\n  format: npm\n  virtual:\n    members: [npm-local, npm-remote]\n    deployTo: npm-local\n    localOnlyPatterns: [\"@acme\u002F*\"]\n",[474,953,954,962,970,976,984,990,999,1007,1014,1036,1046],{"__ignoreMap":635},[639,955,956,958,960],{"class":641,"line":642},[639,957,646],{"class":645},[639,959,628],{"class":649},[639,961,653],{"class":652},[639,963,964,966,968],{"class":641,"line":656},[639,965,659],{"class":645},[639,967,628],{"class":649},[639,969,664],{"class":652},[639,971,972,974],{"class":641,"line":667},[639,973,670],{"class":645},[639,975,673],{"class":649},[639,977,978,980,982],{"class":641,"line":676},[639,979,679],{"class":645},[639,981,628],{"class":649},[639,983,714],{"class":652},[639,985,986,988],{"class":641,"line":687},[639,987,690],{"class":645},[639,989,673],{"class":649},[639,991,992,994,996],{"class":641,"line":695},[639,993,698],{"class":645},[639,995,628],{"class":649},[639,997,998],{"class":652}," virtual\n",[639,1000,1001,1003,1005],{"class":641,"line":706},[639,1002,709],{"class":645},[639,1004,628],{"class":649},[639,1006,714],{"class":652},[639,1008,1009,1012],{"class":641,"line":717},[639,1010,1011],{"class":645},"  virtual",[639,1013,673],{"class":649},[639,1015,1016,1019,1021,1024,1027,1030,1033],{"class":641,"line":725},[639,1017,1018],{"class":645},"    members",[639,1020,628],{"class":649},[639,1022,1023],{"class":649}," [",[639,1025,1026],{"class":652},"npm-local",[639,1028,1029],{"class":649},",",[639,1031,1032],{"class":652}," npm-remote",[639,1034,1035],{"class":649},"]\n",[639,1037,1038,1041,1043],{"class":641,"line":736},[639,1039,1040],{"class":645},"    deployTo",[639,1042,628],{"class":649},[639,1044,1045],{"class":652}," npm-local\n",[639,1047,1048,1051,1053,1055,1059,1062,1064],{"class":641,"line":748},[639,1049,1050],{"class":645},"    localOnlyPatterns",[639,1052,628],{"class":649},[639,1054,1023],{"class":649},[639,1056,1058],{"class":1057},"sX5mu","\"",[639,1060,1061],{"class":652},"@acme\u002F*",[639,1063,1058],{"class":1057},[639,1065,1035],{"class":649},[421,1067,1068,1080],{},[424,1069,1070],{},[427,1071,1072,1074,1078],{},[430,1073,766],{},[430,1075,1076,771],{},[474,1077,948],{},[430,1079,774],{},[437,1081,1082,1097,1112],{},[427,1083,1084,1089,1094],{},[442,1085,1086],{},[469,1087,1088],{},"Members, in resolution order",[442,1090,1091],{},[474,1092,1093],{},"members",[442,1095,1096],{},"Repositories of the same format; Maven, Gradle, Ivy and sbt mix. A deleted repository leaves the virtual repositories it was in.",[427,1098,1099,1104,1109],{},[442,1100,1101],{},[469,1102,1103],{},"Default deployment repository",[442,1105,1106],{},[474,1107,1108],{},"deployTo",[442,1110,1111],{},"The local member that receives uploads. Without one, uploads are refused.",[427,1113,1114,1119,1124],{},[442,1115,1116],{},[469,1117,1118],{},"Local-only names",[442,1120,1121],{},[474,1122,1123],{},"localOnlyPatterns",[442,1125,889,1126,592],{},[479,1127,1129],{"href":1128},"#dependency-confusion","Dependency confusion",[416,1131,1129],{"id":1132},"dependency-confusion",[465,1134,1135,1136,526,1139,1141,1142,1144,1145,1148,1149,1152,1153,1156,1157,1160,1161,534],{},"A public package named like an internal one can be installed through a virtual repository\nthat proxies the public registry. List internal names as Ant patterns under ",[469,1137,1138],{},"Local-only\nnames",[474,1140,1123],{},"): ",[474,1143,1061],{}," (npm scope), ",[474,1146,1147],{},"com\u002Facme"," (Maven group), ",[474,1150,1151],{},"acme-*"," (PyPI),\n",[474,1154,1155],{},"github.com\u002Facme\u002F**"," (Go). Matching names resolve only from local members, never from a remote,\neven in a nested virtual repository. Patterns are case-sensitive, except for PyPI, which\nnormalizes names (",[474,1158,1159],{},"Acme_*"," equals ",[474,1162,1151],{},[416,1164,1166],{"id":1165},"client-urls","Client URLs",[465,1168,1169,1172,1173,1176,1177,1180],{},[474,1170,1171],{},"relic package setup \u003Cclient> \u003Crepository>"," writes these URLs into a client's configuration.\n",[469,1174,1175],{},"Set me up"," in the UI shows the configuration for the common clients and ",[474,1178,1179],{},"curl"," commands.",[421,1182,1183,1193],{},[424,1184,1185],{},[427,1186,1187,1190],{},[430,1188,1189],{},"Format",[430,1191,1192],{},"URL",[437,1194,1195,1205,1214,1227,1236,1250,1259,1268,1277,1286,1300,1309,1318,1328,1341,1350],{},[427,1196,1197,1200],{},[442,1198,1199],{},"npm, yarn, pnpm",[442,1201,1202],{},[474,1203,1204],{},"https:\u002F\u002Frelic.example.com\u002Fnpm\u002F\u003Crepo>\u002F",[427,1206,1207,1209],{},[442,1208,203],{},[442,1210,1211],{},[474,1212,1213],{},"https:\u002F\u002Frelic.example.com\u002Fpypi\u002F\u003Crepo>\u002Fsimple",[427,1215,1216,1219],{},[442,1217,1218],{},"Maven, Gradle",[442,1220,1221,566,1224],{},[474,1222,1223],{},"https:\u002F\u002Frelic.example.com\u002Fmaven\u002F\u003Crepo>",[474,1225,1226],{},"https:\u002F\u002Frelic.example.com\u002Fgradle\u002F\u003Crepo>",[427,1228,1229,1231],{},[442,1230,199],{},[442,1232,1233],{},[474,1234,1235],{},"https:\u002F\u002Frelic.example.com\u002Fgo\u002F\u003Crepo>",[427,1237,1238,1240],{},[442,1239,211],{},[442,1241,1242,1245,1246,1249],{},[474,1243,1244],{},"https:\u002F\u002Frelic.example.com\u002Fnuget\u002F\u003Crepo>\u002Findex.json"," (V2: ",[474,1247,1248],{},"https:\u002F\u002Frelic.example.com\u002Fnuget\u002F\u003Crepo>",")",[427,1251,1252,1254],{},[442,1253,215],{},[442,1255,1256],{},[474,1257,1258],{},"https:\u002F\u002Frelic.example.com\u002Fgems\u002F\u003Crepo>\u002F",[427,1260,1261,1263],{},[442,1262,219],{},[442,1264,1265],{},[474,1266,1267],{},"sparse+https:\u002F\u002Frelic.example.com\u002Fcargo\u002F\u003Crepo>\u002Findex\u002F",[427,1269,1270,1272],{},[442,1271,223],{},[442,1273,1274],{},[474,1275,1276],{},"https:\u002F\u002Frelic.example.com\u002Fconan\u002F\u003Crepo>",[427,1278,1279,1281],{},[442,1280,207],{},[442,1282,1283],{},[474,1284,1285],{},"https:\u002F\u002Frelic.example.com\u002Fhelm\u002F\u003Crepo>",[427,1287,1288,1291],{},[442,1289,1290],{},"Terraform",[442,1292,1293,1296,1297],{},[474,1294,1295],{},"https:\u002F\u002Frelic.example.com\u002Fterraform\u002F\u003Crepo>\u002Fproviders\u002F","; modules as ",[474,1298,1299],{},"relic.example.com\u002F\u003Crepo>__\u003Cnamespace>\u002F\u003Cname>\u002F\u003Cprovider>",[427,1301,1302,1304],{},[442,1303,231],{},[442,1305,1306],{},[474,1307,1308],{},"HF_ENDPOINT=https:\u002F\u002Frelic.example.com\u002Fhuggingface\u002F\u003Crepo>",[427,1310,1311,1313],{},[442,1312,251],{},[442,1314,1315],{},[474,1316,1317],{},"https:\u002F\u002Frelic.example.com\u002Fnix\u002F\u003Crepo>",[427,1319,1320,1323],{},[442,1321,1322],{},"Git LFS",[442,1324,1325],{},[474,1326,1327],{},"lfs.url = https:\u002F\u002Frelic.example.com\u002Flfs\u002F\u003Crepo>",[427,1329,1330,1333],{},[442,1331,1332],{},"Debian, Alpine",[442,1334,1335,566,1338],{},[474,1336,1337],{},"https:\u002F\u002Frelic.example.com\u002Fdebian\u002F\u003Crepo>",[474,1339,1340],{},"https:\u002F\u002Frelic.example.com\u002Falpine\u002F\u003Crepo>",[427,1342,1343,1345],{},[442,1344,239],{},[442,1346,1347],{},[474,1348,1349],{},"https:\u002F\u002Frelic.example.com\u002Frpm\u002F\u003Crepo>",[427,1351,1352,1355],{},[442,1353,1354],{},"Docker, OCI, Helm OCI",[442,1356,1357],{},[474,1358,1359],{},"relic.example.com\u002F\u003Crepo>\u002F\u003Cimage>",[416,1361,1363],{"id":1362},"browsing","Browsing",[465,1365,1366,1369],{},[469,1367,1368],{},"Find by name"," searches the whole repository. An item's tabs:",[421,1371,1372,1382],{},[424,1373,1374],{},[427,1375,1376,1379],{},[430,1377,1378],{},"Tab",[430,1380,1381],{},"Shows",[437,1383,1384,1394,1404,1416,1426,1435,1448],{},[427,1385,1386,1391],{},[442,1387,1388],{},[469,1389,1390],{},"General",[442,1392,1393],{},"Path, URL, checksums and downloads.",[427,1395,1396,1401],{},[442,1397,1398],{},[469,1399,1400],{},"Properties",[442,1402,1403],{},"Editable properties.",[427,1405,1406,1413],{},[442,1407,1408,566,1410],{},[469,1409,255],{},[469,1411,1412],{},"SBOM",[442,1414,1415],{},"Scan results.",[427,1417,1418,1423],{},[442,1419,1420],{},[469,1421,1422],{},"Builds",[442,1424,1425],{},"Builds that produced or used the file.",[427,1427,1428,1432],{},[442,1429,1430],{},[469,1431,261],{},[442,1433,1434],{},"For administrators: who has which access, and which permission grants it.",[427,1436,1437,1445],{},[442,1438,1439,566,1442],{},[469,1440,1441],{},"Archive",[469,1443,1444],{},"View",[442,1446,1447],{},"Archive entries; text files.",[427,1449,1450,1453],{},[442,1451,1452],{},"Package tabs",[442,1454,1455],{},"npm, PyPI, Helm, Docker and Maven details.",[416,1457,1459],{"id":1458},"limits","Limits",[465,1461,1462],{},"A local repository can limit what it accepts:",[630,1464,1466],{"className":632,"code":1465,"language":634,"meta":635,"style":635},"apiVersion: relic.build\u002Fv1\nkind: Repository\nmetadata:\n  name: libs-local\nspec:\n  class: local\n  format: maven\n  maxUploadSize: 1073741824     # 1 GiB\n  maxStorage: 536870912000      # 500 GiB\n",[474,1467,1468,1476,1484,1490,1499,1505,1514,1523,1537],{"__ignoreMap":635},[639,1469,1470,1472,1474],{"class":641,"line":642},[639,1471,646],{"class":645},[639,1473,628],{"class":649},[639,1475,653],{"class":652},[639,1477,1478,1480,1482],{"class":641,"line":656},[639,1479,659],{"class":645},[639,1481,628],{"class":649},[639,1483,664],{"class":652},[639,1485,1486,1488],{"class":641,"line":667},[639,1487,670],{"class":645},[639,1489,673],{"class":649},[639,1491,1492,1494,1496],{"class":641,"line":676},[639,1493,679],{"class":645},[639,1495,628],{"class":649},[639,1497,1498],{"class":652}," libs-local\n",[639,1500,1501,1503],{"class":641,"line":687},[639,1502,690],{"class":645},[639,1504,673],{"class":649},[639,1506,1507,1509,1511],{"class":641,"line":695},[639,1508,698],{"class":645},[639,1510,628],{"class":649},[639,1512,1513],{"class":652}," local\n",[639,1515,1516,1518,1520],{"class":641,"line":706},[639,1517,709],{"class":645},[639,1519,628],{"class":649},[639,1521,1522],{"class":652}," maven\n",[639,1524,1525,1528,1530,1533],{"class":641,"line":717},[639,1526,1527],{"class":645},"  maxUploadSize",[639,1529,628],{"class":649},[639,1531,1532],{"class":744}," 1073741824",[639,1534,1536],{"class":1535},"siFmp","     # 1 GiB\n",[639,1538,1539,1542,1544,1547],{"class":641,"line":725},[639,1540,1541],{"class":645},"  maxStorage",[639,1543,628],{"class":649},[639,1545,1546],{"class":744}," 536870912000",[639,1548,1549],{"class":1535},"      # 500 GiB\n",[421,1551,1552,1561],{},[424,1553,1554],{},[427,1555,1556,1559],{},[430,1557,1558],{},"Setting",[430,1560,774],{},[437,1562,1563,1581,1591],{},[427,1564,1565,1570],{},[442,1566,1567],{},[474,1568,1569],{},"maxUploadSize",[442,1571,1572,1573,1576,1577,1580],{},"The largest file, in bytes; larger uploads fail with ",[474,1574,1575],{},"413",". ",[474,1578,1579],{},"RELIC_MAX_UPLOAD_SIZE"," sets a server-wide limit; the lower one applies.",[427,1582,1583,1588],{},[442,1584,1585],{},[474,1586,1587],{},"immutable",[442,1589,1590],{},"Refuse replacing a file with other content, so container tags cannot move. Re-uploading the same content succeeds.",[427,1592,1593,1598],{},[442,1594,1595],{},[474,1596,1597],{},"maxStorage",[442,1599,1600,1601,1603,1604,1607,1608,592],{},"The quota in bytes. A deploy, copy or move past it fails with ",[474,1602,1575],{},". A file in two repositories counts in both. ",[474,1605,1606],{},"relic get repository"," shows the current ",[474,1609,1610],{},"usedBytes",[416,1612,1614],{"id":1613},"cleanup-policies","Cleanup policies",[465,1616,1617,1618,1620,1621,628],{},"A cleanup policy moves old or unused items of local repositories to the trash can, daily.\nDefine policies on the ",[469,1619,1614],{}," page or with ",[474,1622,1623],{},"relic apply",[630,1625,1627],{"className":632,"code":1626,"language":634,"meta":635,"style":635},"apiVersion: relic.build\u002Fv1\nkind: CleanupPolicy\nmetadata:\n  name: old-app-versions\nspec:\n  enabled: true\n  repositories: [libs-local]\n  pathPattern: org\u002Fapp\u002F*\n  olderThanDays: 90\n  keepLatest: 5\n",[474,1628,1629,1637,1646,1652,1661,1667,1676,1690,1700,1710],{"__ignoreMap":635},[639,1630,1631,1633,1635],{"class":641,"line":642},[639,1632,646],{"class":645},[639,1634,628],{"class":649},[639,1636,653],{"class":652},[639,1638,1639,1641,1643],{"class":641,"line":656},[639,1640,659],{"class":645},[639,1642,628],{"class":649},[639,1644,1645],{"class":652}," CleanupPolicy\n",[639,1647,1648,1650],{"class":641,"line":667},[639,1649,670],{"class":645},[639,1651,673],{"class":649},[639,1653,1654,1656,1658],{"class":641,"line":676},[639,1655,679],{"class":645},[639,1657,628],{"class":649},[639,1659,1660],{"class":652}," old-app-versions\n",[639,1662,1663,1665],{"class":641,"line":687},[639,1664,690],{"class":645},[639,1666,673],{"class":649},[639,1668,1669,1672,1674],{"class":641,"line":695},[639,1670,1671],{"class":645},"  enabled",[639,1673,628],{"class":649},[639,1675,757],{"class":756},[639,1677,1678,1681,1683,1685,1688],{"class":641,"line":706},[639,1679,1680],{"class":645},"  repositories",[639,1682,628],{"class":649},[639,1684,1023],{"class":649},[639,1686,1687],{"class":652},"libs-local",[639,1689,1035],{"class":649},[639,1691,1692,1695,1697],{"class":641,"line":717},[639,1693,1694],{"class":645},"  pathPattern",[639,1696,628],{"class":649},[639,1698,1699],{"class":652}," org\u002Fapp\u002F*\n",[639,1701,1702,1705,1707],{"class":641,"line":725},[639,1703,1704],{"class":645},"  olderThanDays",[639,1706,628],{"class":649},[639,1708,1709],{"class":744}," 90\n",[639,1711,1712,1715,1717],{"class":641,"line":736},[639,1713,1714],{"class":645},"  keepLatest",[639,1716,628],{"class":649},[639,1718,1719],{"class":744}," 5\n",[421,1721,1722,1730],{},[424,1723,1724],{},[427,1725,1726,1728],{},[430,1727,1558],{},[430,1729,774],{},[437,1731,1732,1742,1767,1777,1787],{},[427,1733,1734,1739],{},[442,1735,1736],{},[474,1737,1738],{},"repositories",[442,1740,1741],{},"The local repositories covered.",[427,1743,1744,1749],{},[442,1745,1746],{},[474,1747,1748],{},"pathPattern",[442,1750,1751,1752,1755,1756,566,1759,1762,1763,1766],{},"Ant pattern of items to consider: ",[474,1753,1754],{},"org\u002Fapp\u002F*"," takes the version folders of ",[474,1757,1758],{},"org\u002Fapp",[474,1760,1761],{},"**\u002F*.tgz"," every tarball. Empty is ",[474,1764,1765],{},"**",". A folder moves with its contents.",[427,1768,1769,1774],{},[442,1770,1771],{},[474,1772,1773],{},"olderThanDays",[442,1775,1776],{},"Only items created more than this many days ago.",[427,1778,1779,1784],{},[442,1780,1781],{},[474,1782,1783],{},"notDownloadedDays",[442,1785,1786],{},"Only items not downloaded for this many days, or never downloaded and older.",[427,1788,1789,1794],{},[442,1790,1791],{},[474,1792,1793],{},"keepLatest",[442,1795,1796],{},"Keep this many newest matched items per folder.",[465,1798,1799,1800,1802],{},"A policy needs at least one of the last three. Files Relic generates, such as\n",[474,1801,491],{},", and held items are never selected. A policy whose last repository is\ndeleted is disabled until it names one again.",[465,1804,1805],{},"Preview what a policy selects, limited to what you may read:",[630,1807,1811],{"className":1808,"code":1809,"language":1810,"meta":635,"style":635},"language-bash shiki shiki-themes material-theme-lighter github-light-default github-dark-default","relic cleanup preview old-app-versions\n","bash",[474,1812,1813],{"__ignoreMap":635},[639,1814,1815,1819,1822,1825],{"class":641,"line":642},[639,1816,1818],{"class":1817},"seIyd","relic",[639,1820,1821],{"class":652}," cleanup",[639,1823,1824],{"class":652}," preview",[639,1826,1660],{"class":652},[465,1828,1829],{},"Run it now:",[630,1831,1833],{"className":1808,"code":1832,"language":1810,"meta":635,"style":635},"relic cleanup run old-app-versions\n",[474,1834,1835],{"__ignoreMap":635},[639,1836,1837,1839,1841,1844],{"class":641,"line":642},[639,1838,1818],{"class":1817},[639,1840,1821],{"class":652},[639,1842,1843],{"class":652}," run",[639,1845,1660],{"class":652},[416,1847,1849],{"id":1848},"legal-holds","Legal holds",[465,1851,1852],{},"A held item, or folder with its contents, cannot be deleted, moved, overwritten or cleaned up,\nand its repository cannot be deleted. Administrators place and release holds.",[465,1854,1855],{},"Place a hold:",[630,1857,1859],{"className":1808,"code":1858,"language":1810,"meta":635,"style":635},"relic hold add libs-local\u002Forg\u002Fapp\u002F1.4.0 --reason \"audit 2026-14\"\n",[474,1860,1861],{"__ignoreMap":635},[639,1862,1863,1865,1868,1871,1874,1878,1881,1884],{"class":641,"line":642},[639,1864,1818],{"class":1817},[639,1866,1867],{"class":652}," hold",[639,1869,1870],{"class":652}," add",[639,1872,1873],{"class":652}," libs-local\u002Forg\u002Fapp\u002F1.4.0",[639,1875,1877],{"class":1876},"smky3"," --reason",[639,1879,1880],{"class":1057}," \"",[639,1882,1883],{"class":652},"audit 2026-14",[639,1885,1886],{"class":1057},"\"\n",[465,1888,1889],{},"List the holds:",[630,1891,1893],{"className":1808,"code":1892,"language":1810,"meta":635,"style":635},"relic hold list\n",[474,1894,1895],{"__ignoreMap":635},[639,1896,1897,1899,1901],{"class":641,"line":642},[639,1898,1818],{"class":1817},[639,1900,1867],{"class":652},[639,1902,1903],{"class":652}," list\n",[465,1905,1906],{},"Release a hold:",[630,1908,1910],{"className":1808,"code":1909,"language":1810,"meta":635,"style":635},"relic hold remove libs-local\u002Forg\u002Fapp\u002F1.4.0\n",[474,1911,1912],{"__ignoreMap":635},[639,1913,1914,1916,1918,1921],{"class":641,"line":642},[639,1915,1818],{"class":1817},[639,1917,1867],{"class":652},[639,1919,1920],{"class":652}," remove",[639,1922,1923],{"class":652}," libs-local\u002Forg\u002Fapp\u002F1.4.0\n",[416,1925,1927],{"id":1926},"trash-can","Trash can",[465,1929,1930,1931,1934,1935,1938,1939,1942],{},"A deleted item moves to the ",[474,1932,1933],{},"auto-trashcan"," repository for 14 days (",[474,1936,1937],{},"RELIC_TRASH_RETENTION",").\nAdministrators restore or purge it in ",[469,1940,1941],{},"Administration → Trash can"," or the Relic API.\nDeleting a whole repository is permanent.",[465,1944,1945],{},"A folder with more than 100 items moves in several transactions of up to 100 items each, so other uploads and deletes go through while it moves.\nIt shows up as a trash entry once all of it has moved.\nIf the delete fails partway, the files already moved stay in the trash repository and the rest stays in place; deleting the folder again finishes the move.",[465,1947,1948],{},"List the newest 50 entries and the total:",[630,1950,1952],{"className":1808,"code":1951,"language":1810,"meta":635,"style":635},"relic api trash\n",[474,1953,1954],{"__ignoreMap":635},[639,1955,1956,1958,1961],{"class":641,"line":642},[639,1957,1818],{"class":1817},[639,1959,1960],{"class":652}," api",[639,1962,1963],{"class":652}," trash\n",[465,1965,1966],{},"List the next 50:",[630,1968,1970],{"className":1808,"code":1969,"language":1810,"meta":635,"style":635},"relic api 'trash?page=2'\n",[474,1971,1972],{"__ignoreMap":635},[639,1973,1974,1976,1978,1981,1984],{"class":641,"line":642},[639,1975,1818],{"class":1817},[639,1977,1960],{"class":652},[639,1979,1980],{"class":1057}," '",[639,1982,1983],{"class":652},"trash?page=2",[639,1985,1986],{"class":1057},"'\n",[465,1988,1989],{},"Restore one item:",[630,1991,1993],{"className":1808,"code":1992,"language":1810,"meta":635,"style":635},"relic api \u002Fapi\u002Frelic.v1.TrashService\u002FRestoreTrash -d '{\"path\": \"libs-local\u002Forg\u002Fapp\u002F1.0\u002Fapp-1.0.jar\"}'\n",[474,1994,1995],{"__ignoreMap":635},[639,1996,1997,1999,2001,2004,2007,2009,2012],{"class":641,"line":642},[639,1998,1818],{"class":1817},[639,2000,1960],{"class":652},[639,2002,2003],{"class":652}," \u002Fapi\u002Frelic.v1.TrashService\u002FRestoreTrash",[639,2005,2006],{"class":1876}," -d",[639,2008,1980],{"class":1057},[639,2010,2011],{"class":652},"{\"path\": \"libs-local\u002Forg\u002Fapp\u002F1.0\u002Fapp-1.0.jar\"}",[639,2013,1986],{"class":1057},[465,2015,2016,2017,2020,2021,592],{},"A restore fails if a file has since been deployed at the same path. Delete that file first,\nor restore elsewhere with ",[474,2018,2019],{},"toRepository"," and ",[474,2022,2023],{},"toPath",[465,2025,2026],{},"Empty the trash can:",[630,2028,2030],{"className":1808,"code":2029,"language":1810,"meta":635,"style":635},"relic api \u002Fapi\u002Frelic.v1.TrashService\u002FEmptyTrash -d '{}'\n",[474,2031,2032],{"__ignoreMap":635},[639,2033,2034,2036,2038,2041,2043,2045,2048],{"class":641,"line":642},[639,2035,1818],{"class":1817},[639,2037,1960],{"class":652},[639,2039,2040],{"class":652}," \u002Fapi\u002Frelic.v1.TrashService\u002FEmptyTrash",[639,2042,2006],{"class":1876},[639,2044,1980],{"class":1057},[639,2046,2047],{"class":652},"{}",[639,2049,1986],{"class":1057},[416,2051,177],{"id":2052},"replication",[465,2054,2055,2056,2059,2060,2063,2064,2066,2067,534],{},"Replication pushes a local repository to another server, pulls from one, or keeps two in\nsync (federated). It runs on a schedule; push with ",[474,2057,2058],{},"onChange"," and federated replication also\nrun after each change. Configure it in ",[469,2061,2062],{},"Administration → Replication"," or with a\n",[474,2065,177],{}," resource (see ",[479,2068,177],{"href":178},[2070,2071,2072],"style",{},"html pre.shiki code .smKOL, html code.shiki .smKOL{--shiki-light:#E53935;--shiki-default:#116329;--shiki-dark:#7EE787}html pre.shiki code .sWneD, html code.shiki .sWneD{--shiki-light:#39ADB5;--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sasMN, html code.shiki .sasMN{--shiki-light:#91B859;--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sIO_5, html code.shiki .sIO_5{--shiki-light:#F76D47;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sH4kE, html code.shiki .sH4kE{--shiki-light:#FF5370;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sX5mu, html code.shiki .sX5mu{--shiki-light:#39ADB5;--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .siFmp, html code.shiki .siFmp{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6E7781;--shiki-default-font-style:inherit;--shiki-dark:#8B949E;--shiki-dark-font-style:inherit}html pre.shiki code .seIyd, html code.shiki .seIyd{--shiki-light:#E2931D;--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .smky3, html code.shiki .smky3{--shiki-light:#91B859;--shiki-default:#0550AE;--shiki-dark:#79C0FF}",{"title":635,"searchDepth":656,"depth":656,"links":2074},[2075,2076,2077,2078,2079,2080,2081,2082,2083,2084,2085],{"id":418,"depth":656,"text":419},{"id":484,"depth":656,"text":485},{"id":941,"depth":656,"text":942},{"id":1132,"depth":656,"text":1129},{"id":1165,"depth":656,"text":1166},{"id":1362,"depth":656,"text":1363},{"id":1458,"depth":656,"text":1459},{"id":1613,"depth":656,"text":1614},{"id":1848,"depth":656,"text":1849},{"id":1926,"depth":656,"text":1927},{"id":2052,"depth":656,"text":177},"Create local, remote and virtual repositories, and set their limits, cleanup, holds and trash.","md",null,{},true,{"title":173,"description":2086},"S6qqbp7-4UQfz-4fY_IhszFmTSj30GYo75yQTkVu1qA",[2094,2096],{"title":163,"path":164,"stem":165,"description":2095,"children":-1},"Run Relic from source with go run and the web UI dev server, for working on Relic itself.",{"title":177,"path":178,"stem":179,"description":2097,"children":-1},"Copy a repository to or from another server, or keep two servers' repositories alike.",1793857336963]