

# Generic packages overview
<a name="generic-packages-overview"></a>

Using the `generic` package format, you can upload any type of file to create a package in a CodeArtifact repository. Generic packages aren't associated with any specific programming language, file type, or package management ecosystem. This can be useful for storing and versioning arbitrary build artifacts, such as application installers, machine learning models, configuration files, and others.

A generic package consists of a package name, namespace, version, and one or more assets (or files). Generic packages can exist alongside packages of other formats in a single CodeArtifact repository.

You can use the AWS CLI or SDK to work with generic packages. For a full list of AWS CLI commands that work with generic packages, see [Supported commands for generic packages](generic-packages-supported-commands.md).

## Generic package constraints
<a name="generic-packages-constraints"></a>
+ They are never fetched from upstream repositories. They can only be obtained from the repository to which they were published.
+ They cannot declare dependencies to be returned from [ListPackageVersionDependencies](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_ListPackageVersionDependencies.html) or displayed in the AWS Management Console .
+ They can store README and LICENSE files, but they're not interpreted by CodeArtifact. Information in these files is not returned from [GetPackageVersionReadme](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_GetPackageVersionReadme.html) or [DescribePackageVersion](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_DescribePackageVersion.html), and doesn't appear in the AWS Management Console.
+ Like all packages in CodeArtifact, there are limits to asset size and the number of assets per package. For more information about limits and quotas in CodeArtifact, see [Quotas in AWS CodeArtifact](service-limits.md).
+ The asset names that they contain must follow these rules:
  + Asset names can use Unicode letters and numbers. Specifically, these Unicode character categories are allowed: Lowercase Letter (`Ll`), Modifier Letter (`Lm`), Other Letter (`Lo`), Titlecase Letter (`Lt`), Uppercase Letter (`Lu`), Letter Number (`Nl`), and Decimal Number (`Nd`).
  + The following special characters are allowed: `~!@^&()-_+[]{};,.`
  + Assets cannot be named `.` or `..`
  + Spaces are the only allowed whitespace character. Asset names cannot start or end with a space character, or include consecutive spaces.