Your AWS
Run it in your own AWS account.
Our access role can't open a shell, read your disks or read your logs. Our software on your computers reports only setup and health, never your code, files or terminal output.
- 01
Your account runs the computers, disks and network. AWS bills you directly.
- 02
Our role is one you create, read and can revoke at any time.
- 03
It can only launch and manage your team's computers, and run the named actions your stack defines.
- 04
It can't open a shell, read logs, copy disks, add commands or change IAM.
- 05
Support shell access exists only while you grant it, with an expiry, and ends on its own.
- 06
Every action is logged in your account before it runs. We can't read or erase that log.
Where things run
Your account runs the computers. We run the controls.
Your AWS account
- Cloud computers and their disks, encrypted with your account's EBS key
- The network they use, with no inbound ports
- Our access role
- The named actions
- Your security log
Persistent Compute
- Sign-in and team admin
- Billing for members
- The service that asks your account to start, stop or update computers
Your private network
- Your devices reach each cloud computer over an encrypted private network
- No inbound ports are opened
The stack
Everything it creates. 69 resources at most.
Names match the stack's Resources tab in your AWS console. Cloud computers are launched later, tagged to your team.
AccessThe roles we can use in your account.4
ManagementRoleAWS::IAM::RoleOur access role. It trusts only our service, only with your connection’s external ID, for at most an hour per session.
ManagementGuardrailsAWS::IAM::ManagedPolicyEverything our access role is refused, such as deleting disks, changing logs, alerts or backups, or opening a session. It’s attached as the role is created, and the role can’t change it.
ManagementContainmentAWS::IAM::ManagedPolicyMore refusals for our access role: changing this stack or any IAM role, passing any role but the computers’ own, copying or exporting disks and images, reading parameters or logs, opening the network, and running the stack’s security collector.
SupportRoleAWS::IAM::RoleSupport access. Created only if you set SupportAccess to limited or full and a SupportAccessUntil time, and it stops working then. Only our audited staff console can use it.
Only if you turn it on
Support diagnosticsRead-only checks Limited support access can run. Our access role can’t run them.7
SupportGrantAWS::SSM::ParameterYour current support access level and expiry. Support commands and sessions check it before starting and refuse missing, expired or revoked grants. Persistent Compute’s access, support and computer roles cannot change it.
SupportHealthDiagnosticAWS::SSM::DocumentMemory, disk, uptime, out-of-memory count and setup status.
SupportServicesDiagnosticAWS::SSM::DocumentWhether our service, the network client and SSH are running.
SupportLogsDiagnosticAWS::SSM::DocumentRecent log lines from our service, the network client and SSH.
SupportNetworkDiagnosticAWS::SSM::DocumentPrivate network state and outbound HTTPS.
SupportShellDocumentAWS::SSM::DocumentThe only way Full support access can run a command. It writes the whole script to your security log first and refuses to run it if that write fails.
SupportSessionDocumentAWS::SSM::DocumentThe only Session Manager session Full support access can open. It streams the whole session to your security log and closes if its opening entry can’t be written.
ComputersWhat each cloud computer runs as.4
ComputerRoleAWS::IAM::RoleThe computer’s own role: Systems Manager, its own setup key, and adding to the security log, including support session recordings.
ComputerProfileAWS::IAM::InstanceProfileAttaches the computer role to each cloud computer.
ComputerLaunchTemplateAWS::EC2::LaunchTemplateThe only launch template our role can launch from: the computer role and required instance metadata tokens, with no user data.
EnrollmentKeyAWS::KMS::KeyEncrypts each computer’s one-time network key. Owned by your account, rotated yearly.
Kept if you delete the stack
Named actionsThe only commands our role can run on your computers.18
ActionInstalledRuntimeAWS::SSM::DocumentReport which version of our software is installed.
ActionImagePrerequisitesAWS::SSM::DocumentCheck the computer image has what setup needs.
ActionBootstrapInstallAWS::SSM::DocumentInstall our background service and network client, checked against fixed checksums.
ActionBootstrapStatusAWS::SSM::DocumentReport whether setup finished.
ActionNetworkEnrollAWS::SSM::DocumentJoin the computer to your private network with a one-time key.
ActionBootstrapConnectionAWS::SSM::DocumentCheck that the background service is connected.
ActionCodingToolsAWS::SSM::DocumentInstall git, Python, ripgrep or jq.
ActionAuthorizedKeysAWS::SSM::DocumentSame as the approved key list below, kept so the switch to this stack version never drops a key change.
ActionGrowRootFilesystemAWS::SSM::DocumentGrow the file system after a disk is resized.
ActionIdleProbeAWS::SSM::DocumentCheck whether the computer is idle.
ActionRuntimeUpdateSignedAWS::SSM::DocumentUpdate our background service and network client, checked against fixed checksums. Only signed releases unless you turn signature checks off, and only releases you accept, by the full digest of every file, if you pin them.
ActionAuthorizedKeysApprovedAWS::SSM::DocumentSet which SSH keys can sign in to the computer, keeping only keys your admin signed if you add an approval key.
ActionBootstrapInstallSignedAWS::SSM::DocumentInstall our background service and network client from the computer image, checked against fixed checksums. Only images whose files we signed unless you turn signature checks off.
ActionRuntimeUpdateApprovedAWS::SSM::DocumentThe same update, carrying your admin’s signature. If you add an approval key, both update actions refuse any release your admin didn’t sign, digest by digest, even one we signed.
ActionBootstrapInstallApprovedAWS::SSM::DocumentThe same first install, carrying your admin’s signature. If you add an approval key, every first install refuses a release your admin didn’t sign, even one we signed.
ActionDocumentFingerprintAWS::SSM::ParameterNames the current version of these documents and your release and device settings. An older version refuses to run, and our role can’t change this value.
CommandOutputBucketAWS::S3::BucketHolds the output of our named actions for one day, encrypted, with public access blocked. Our role reads only this bucket’s named-actions folder.
CommandOutputBucketPolicyAWS::S3::BucketPolicyRefuses any access to that bucket that isn’t over HTTPS.
Security logA record in your account that we can’t read or erase.3
SecurityLogAWS::Logs::LogGroupCloudWatch log group for every action and snapshot. Kept for 365 days unless you choose otherwise.
Kept if you delete the stack
SecurityCollectorDocumentAWS::SSM::DocumentRecords installed software, launch settings, SSH keys and SSH logins.
SecurityCollectorAssociationAWS::SSM::AssociationRuns that record on every cloud computer every 30 minutes.
Audit trailOn unless you set CreateTrail to false because an organization trail already covers the account.3
TrailAWS::CloudTrail::TrailRecords read and write management events across Regions, with log file validation. Data events are not enabled by this template.
TrailBucketAWS::S3::BucketHolds the trail’s logs, encrypted and versioned, with public access blocked.
Kept if you delete the stack
TrailBucketPolicyAWS::S3::BucketPolicyLets only this trail write to the bucket, over HTTPS.
Security alertsEmails SecurityAlertEmail, which every stack sets, when our role moves a disk, removes a computer, deletes a disk or launches a computer with its own user data, and when anyone changes your backups, this stack or the computers’ inbound rules.9
SecurityAlertTopicAWS::SNS::TopicSends the alerts.
SecurityAlertSubscriptionAWS::SNS::SubscriptionDelivers them to SecurityAlertEmail, once you confirm the subscription.
SecurityAlertTopicPolicyAWS::SNS::TopicPolicyLets only the stack’s alert rules publish.
DiskMoveAlertRuleAWS::Events::RuleOur role attaching, detaching or replacing a disk, or trying to change a computer's attributes. Disks move only for resizes and replacements.
UserDataLaunchAlertRuleAWS::Events::RuleOur role launching a computer with its own user data. We never send it, and our images ignore it.
DiskRemovalAlertRuleAWS::Events::RuleOur role or the disk custodian removing a computer, deleting a disk or touching a snapshot.
BackupChangeAlertRuleAWS::Events::RuleAnyone deleting a backup or changing a backup vault, its lock or a backup plan.
StackChangeAlertRuleAWS::Events::RuleAnyone updating or deleting this stack. Our role can’t, so this tells you when someone on your side changed a setting.
InboundRuleAlertRuleAWS::Events::RuleAnyone adding or changing an inbound rule on the computers’ security group, which needs none.
BackupsYour own copies of every cloud computer disk, in a vault our role can’t read, change or delete. Daily backups are off unless you set DailyBackups to true (about USD 3 per computer per month); a disk is always backed up before it’s deleted.4
BackupVaultAWS::Backup::BackupVaultHolds the backups. Its lock refuses to delete one before BackupRetentionDays (14 by default), and its policy refuses every change from our roles. Choose compliance in BackupVaultLockMode to make the lock permanent after three days.
Kept if you delete the stack
BackupRoleAWS::IAM::RoleLets AWS Backup take and restore the snapshots, with AWS’s own backup policies.
BackupPlanAWS::Backup::BackupPlanA backup of every disk once a day at 05:00 UTC, kept for BackupRetentionDays.
Only if you turn it on
BackupSelectionAWS::Backup::BackupSelectionPicks every disk tagged to this connection. Our role can’t remove those tags.
Only if you turn it on
Disk custodianThe only way our role can delete a disk or remove a computer. You can read its code in the template.5
DiskCustodianFunctionAWS::Lambda::FunctionRemoves a computer only after setting every disk to survive it, and deletes a detached disk only once a backup taken after the request is in your vault. Our role can call it and nothing else about it.
DiskCustodianRoleAWS::IAM::RoleLets the custodian delete and tag only your team’s disks, remove your team’s computers and start backups.
DiskCustodianLogGroupAWS::Logs::LogGroupThe custodian’s log: each call’s action and outcome.
Kept if you delete the stack
DiskCustodianSweepRuleAWS::Events::RuleEvery 15 minutes, finishes deletions whose backup has completed.
DiskCustodianSweepPermissionAWS::Lambda::PermissionLets only that rule start the custodian.
Disk move approvalOnly if you set RequireDiskMoveApproval to true. Every disk move then needs a team admin's signature from a key in DeviceApprovalKeys.4
DiskMoveApprovalGateAWS::IAM::RolePolicyDenies our access role attaching any disk itself and lets it call only the approval function.
DiskMoveApprovalFunctionAWS::Lambda::FunctionAttaches a disk only to one of the two computers an admin signed for, before the approval expires, once each.
DiskMoveApprovalRoleAWS::IAM::RoleThe function's role: attach your team's tagged disks and record each use.
DiskMoveApprovalUsesAWS::DynamoDB::TableRecords each approval's use so it can't be replayed.
NetworkOnly when you choose a new network. Otherwise you name your own subnet and security group.8
ComputerVpcAWS::EC2::VPCA dedicated VPC, 10.88.0.0/16.
ComputerInternetGatewayAWS::EC2::InternetGatewayOutbound internet access.
ComputerGatewayAttachmentAWS::EC2::VPCGatewayAttachmentAttaches the gateway to the VPC.
ComputerSubnetAWS::EC2::SubnetOne subnet, 10.88.0.0/20, in one Availability Zone.
ComputerRouteTableAWS::EC2::RouteTableRoutes for that subnet.
ComputerDefaultRouteAWS::EC2::RouteSends outbound traffic to the internet gateway.
ComputerSubnetRouteTableAssociationAWS::EC2::SubnetRouteTableAssociationLinks the subnet to its routes.
ComputerSecurityGroupAWS::EC2::SecurityGroupNo inbound connections. All outbound traffic.
Access role
What we can do. And what we can't.
One role, defined in your stack. Changing it takes a stack update that you apply.
Every IAM permissionMost apply only to resources tagged to your team.38
Security log
A record you own. We can't erase it.
A CloudWatch log group in your account, created by your stack.
Every action, before it runs
Each named action first writes an event to your log: which action, which computer and its inputs. Long inputs are recorded as a hash. If the write fails, the action stops.
A snapshot every 30 minutes
Your stack also records our installed software, the launch settings, authorized SSH keys and SSH logins on each computer.
Append-only for us
Computers can only add events. Our role has no CloudWatch Logs permissions, so we can't read, change or delete anything in it. Only your own AWS admins control it.
It keeps events for 365 days by default, and you can choose from 30 days to 10 years. It stays if you delete the stack.
CloudTrail too
AWS CloudTrail records each command we send, with the role that sent it.
Before you create it
Review it in your own AWS console.
Open AWS CloudFormation
A team admin starts from Your cloud in the console sidebar and chooses Open AWS CloudFormation.
Read the template
AWS opens its own quick-create page in your account, with the template link shown. You can also download the template from the setup page.
Create the stack
Nothing exists until you acknowledge the IAM roles and choose Create stack. Afterwards, the stack's Resources tab lists everything it made.
Enter your account ID
We check the role, its external ID, the template version, the network, outbound HTTPS and the disk key before any computer launches.
Removing it
Delete the stack. Our access goes with it.
Delete your cloud computers
Delete them from the console, or terminate them yourself in EC2, where they're tagged to your team. They're launched by our role, not by the stack, so do this first.
Delete the stack
CloudFormation deletes our access role, the named actions and the network it made. With the role gone, we can't act in your account.
Keep or delete the rest
Your security log and the stack's encryption key stay, so the record outlives our access. Delete them yourself when you no longer need them.
FAQ
Questions and answers.
What do we still have to trust you with?
Three things. Runtime updates install software we build, and your security log records exactly which releases ran. We choose which device keys can sign in, and every change is in your security log. And we run the private network your devices use to reach your computers.
Who pays for what?
AWS bills you directly for your cloud computers and their storage. We bill your team per member.
Can you open a shell on our computers?
Not with the access role. Support access is a separate role that exists only if you choose Limited or Full support access and an end time on the stack. It stops working at that time, even mid-session, and every session is recorded in CloudTrail. Limited runs only read-only diagnostics; Full allows a shell.
How long can you hold access?
Each session with the access role lasts at most 60 minutes, and only works with your connection's external ID.
Can we use our own VPC?
Yes. Choose your own network during setup and name a subnet and security group. Computers need outbound HTTPS and no inbound access.
Why isn't the template published here?
Each template is made for one team and carries that team's connection details. Your admin can read and download yours before creating anything.
Who can set it up?
Team admins, from Your cloud in the console sidebar. If you don't see it, email hello@persistentcompute.ai.