Creating your artifacts
Put files as file artifacts and environment artifacts, bundle them into a universe, and put new versions
This page stores Acme's data as artifacts: the Q3 numbers as file artifacts, and the inbox and
contacts book as environment artifacts for the email and contacts envs.
File artifacts
A file artifact is one file, of any type, stored and versioned. From the command line you put a folder at once: each file becomes a file artifact, and a file artifact universe bundles them under their names. The Q3 numbers, and a note on what they leave out, are one folder:
agent-env artifact file-artifact-universe put-bundled --id q3-workpapers \
--file-dir q3Uploading 2 file(s)...
notes.md
q3-numbers.csv
Created FileArtifactUniverse: id=q3-workpapers version=1 file_count=2 bundle_s3_url=…A file artifact names no environment, so it goes wherever a step sends it, such as into an agent's
container. Any number of agents can load the same q3-workpapers, and each step pins the version
it loads. Using Artifacts with Agents loads it.
Environment artifacts
An environment artifact is a file artifact together with the name of the environment it targets.
Acme's inbox is a file in the format EmailEnv reads through data/add:
{
"inbox": [
{"from": "dana@example.com", "subject": "Q3 numbers",
"body": "Can you send the Q3 numbers to Sam Lee in finance by Friday?"},
{"from": "priya@example.com", "subject": "Offsite",
"body": "The offsite moves to Thursday. Can you let Marcus know?"}
]
}This command puts it for environments named email:
agent-env artifact environment put --id acme-email --environment-name email \
--description "Acme inbox" acme/emails.jsonCreating FileArtifact...
Created FileArtifact: id=acme-email-file version=1 filename=emails.json
Creating EnvironmentArtifact...
Created EnvironmentArtifact: id=acme-email version=1 environment_name=email
pinned FileArtifact: acme-email-file:1The command puts the file as the file artifact acme-email-file, then the environment artifact
acme-email, which pins it. --environment-name is the name on an environment's
card, not an env id, so every env with a server named
email can load acme-email.
The contacts book, acme/contacts.json, goes the same way, for environments named contacts:
agent-env artifact environment put --id acme-contacts --environment-name contacts \
--description "Acme contacts book" acme/contacts.jsonUniverses
A universe bundles environment artifacts into one artifact, such as all of one company's data:
agent-env artifact environment-universe put --id acme \
--environment-artifact acme-email --environment-artifact acme-contactsCreated EnvironmentUniverseArtifact: id=acme version=1 environment_artifacts=['acme-email:1', 'acme-contacts:1'] metadata=NoneThe universe pins the version of each artifact that was latest at the put. Loading acme gives
each server the artifact with its name, so one universe seeds envs of different shapes: both
servers in office, the one server in email, and websites that computer-use agents work in a
browser.
New versions
Putting an id again adds a version and leaves the earlier ones unchanged. With Sam's reply added to
acme/emails.json, the same environment put stores version 2 of acme-email. acme still pins
version 1 until you put it again:
Created EnvironmentUniverseArtifact: id=acme version=2 environment_artifacts=['acme-email:2', 'acme-contacts:1'] metadata=NoneNo env changes: email, contacts and office are still at version 1. To see what a universe
holds, agent-env artifact environment-universe get --id acme --output-dir acme-out downloads its
files, one folder per environment name.
Using Artifacts with Environments loads them.
Last updated on