Skip to main content

Projects & Workspaces

Projects are the top-level organizational unit in Strongly.AI. Each project groups together workspaces, data volumes, jobs, and collaborators into a single managed environment with persistent storage, access control, and activity tracking.

Core Concepts

ConceptDescription
ProjectContainer for workspaces, volumes, jobs, and collaborators with shared settings
WorkspaceCloud-based development environment (JupyterHub, VS Code, or custom)
Data VolumePersistent S3-backed storage with versioning, encryption, and backup
JobAutomated script, notebook, or command execution with scheduling
CollaboratorTeam member with editor or viewer access to the project

Project Lifecycle

Create --> Active --> Archive --> Restore (or Delete)

Projects have three statuses:

  • Active - Normal working state, all features available
  • Paused - Temporarily suspended (no running workspaces or jobs)
  • Archived - Read-only state; must be restored before making changes

Creating a Project

Step 1: Navigate to Projects

Click Projects in the main navigation sidebar, then click Create Project.

Step 2: Configure Project Details

FieldRequiredDescription
NameYesUnique project name within your organization (1-100 characters)
DescriptionYesPurpose and goals (up to 500 characters)
TagsNoCategorization labels (e.g., machine-learning, production)

Step 3: Automatic Setup

When you create a project, the platform automatically provisions:

  1. Default Data Volume -- 50GB S3-backed storage with AES256 encryption, versioning enabled, and daily backups
  2. Project README -- Markdown documentation template pre-filled with your project name and description
  3. Default Environment -- JupyterHub configuration with 2 CPU, 8GB memory, 50GB disk
  4. Activity Tracking -- All project actions are logged for audit purposes
  5. Auto-Stop Settings -- Workspaces auto-stop after 30 minutes of inactivity by default

Project Categories

Projects can be categorized for organization:

CategoryUse Case
machine-learningML model development and training
data-analysisData exploration and analytics
developmentGeneral software development (default)
researchResearch and experimentation

Project Visibility

LevelAccess
PrivateOnly owner and explicitly shared collaborators
OrganizationAll members in the same organization can access
GlobalAll platform users can access (Enterprise mode only)

Managing Projects

Updating Project Settings

Owners and editors can update project settings including name, description, tags, category, visibility, environment configuration, and notification preferences. Protected fields (owner, creation date, default volume, organization) cannot be changed.

Archiving a Project

Archiving puts a project into read-only mode. Before archiving:

  • All workspaces must be stopped
  • All running jobs must complete

To archive, navigate to the project and click Archive in settings. The archive timestamp is recorded for audit purposes.

Restoring an Archived Project

Click Restore on an archived project to return it to active status. All data volumes and settings are preserved.

Deleting a Project

Deletion is permanent. You have two options for data volumes:

  • Keep Volumes -- Project volumes are converted to shared volumes, accessible from other projects
  • Delete Volumes -- Project volumes and their data are permanently removed

A project with running workspaces cannot be deleted. Stop all workspaces first.

Collaborators

Adding a Collaborator

  1. Navigate to the project's Settings tab
  2. Click Add Collaborator
  3. Enter the collaborator's email address
  4. Select a role: Editor or Viewer
  5. Click Add

The collaborator must already have an account on the platform. In multi-tenant (SaaS) mode, collaborators must be in the same organization.

Collaborator Roles

RolePermissions
OwnerFull access: create, update, delete, manage collaborators, manage workspaces and volumes
EditorRead and write access to all project resources; cannot delete project or manage collaborators
ViewerRead-only access to project data, volumes, and job results

Updating Collaborator Roles

Owners can change a collaborator's role between editor and viewer at any time from the project settings.

Removing a Collaborator

Owners can remove any collaborator except themselves. Removing a collaborator immediately revokes their access to the project and all its resources.

Data Volumes

Data volumes provide persistent, S3-backed storage with enterprise features including versioning, encryption, automatic backups, and cross-project sharing.

Volume Types

TypeScopeDescription
ProjectSingle projectDefault type; tied to a specific project lifecycle
SharedMultiple projectsCan be attached to and accessed from multiple projects

Default Data Volume

Every project automatically receives a default data volume with:

  • 50GB storage capacity
  • AES256 encryption enabled
  • Versioning enabled (up to 10 versions)
  • Daily backups with 30-day retention
  • Auto-sync on workspace stop
  • Tagged with default and project-data

The default volume cannot be detached from its project.

Creating Additional Volumes

  1. Navigate to the project's Data Volumes tab
  2. Click Create Volume
  3. Configure:
FieldRequiredOptions
LabelYesDescriptive name (1-100 characters)
DescriptionNoPurpose of the volume
Size (GB)YesStorage capacity
Storage ClassNostandard (default), infrequent_access, glacier
VersioningNoEnable version history
BackupNoEnable automatic backups with frequency setting
TagsNoCategorization labels

Volume Storage Classes

ClassPerformanceCostUse Case
StandardHigh throughputStandardActive development, frequently accessed data
Infrequent AccessLower throughputReducedArchival data accessed occasionally
GlacierRetrieval delayLowestLong-term archival, compliance data

Volume Data Formats

Volumes track the format of stored data:

  • CSV, Parquet, JSON -- Single format volumes
  • Images -- Image datasets
  • Mixed -- Multiple data types (default)

Attaching and Detaching Volumes

Attach a shared volume to a project:

  1. Go to the project's Data Volumes tab
  2. Click Attach Volume
  3. Select from available shared volumes within your organization
  4. The volume appears in the project's volume list

Detach a volume:

  1. Select the volume
  2. Click Detach
  3. The volume remains as a shared volume, accessible from other projects

The default project volume cannot be detached.

Making a Volume Shared

To share a project volume with other projects:

  1. Navigate to the volume
  2. Click Make Shared
  3. The volume type changes from "project" to "shared"
  4. Other projects in the organization can now attach it

Volume Sync

Volumes support automatic synchronization between workspaces and S3 storage:

FrequencyBehavior
On Workspace StopSync when any workspace using this volume stops
HourlyAutomatic sync every hour
DailyAutomatic sync once per day
WeeklyAutomatic sync once per week

Sync status is tracked as: idle, syncing, or failed.

Volume Encryption

All volumes support encryption:

  • AES256 -- Server-side encryption with Amazon S3-managed keys (default)
  • aws:kms -- Server-side encryption with AWS KMS-managed keys (requires KMS key ID)

Volume Versioning

When versioning is enabled, each version snapshot records:

  • Version ID and number
  • Created timestamp and user
  • Size in GB
  • Changelog description
  • S3 storage location
  • Tags

The maximum number of versions is configurable (default: 10).

Deleting a Volume

Volumes can be deleted with an optional archive flag. When deleted:

  1. The volume is detached from all projects
  2. If archive: true, the volume data is archived to S3 before deletion
  3. The volume record is removed from the database

Three Volume Types in Workspaces

When working inside a workspace, you have access to three types of storage:

Volume TypeMount PathLifecycleScope
Workspace Volume/workspacePersists through stop/start; deleted with workspaceSingle workspace
Project Volume/project/<name>Persists through workspace deletion; deleted with projectAll workspaces in project
Shared Volume/shared/<name>Persists until explicitly deletedMultiple projects

Using Volumes in Code

import pandas as pd

# Workspace volume -- personal to this workspace
results_df.to_csv('/workspace/experiments/results.csv')

# Project volume -- shared across all workspaces in project
train_df = pd.read_csv('/project/training-data/train.csv')

# Shared volume -- organization-wide access
reference_df = pd.read_parquet('/shared/common-datasets/reference.parquet')
Important

Only files within /workspace, /project/*, or /shared/* persist. System-level installations (e.g., pip install, apt-get install) do not survive workspace restarts.

To persist Python packages, use a virtual environment:

python -m venv /workspace/venv
source /workspace/venv/bin/activate
pip install your-packages

Workspaces

Workspaces are cloud-based development environments running inside your project. Each workspace is a Kubernetes pod with its own compute resources, storage, and network configuration.

Development Environments

EnvironmentImagePortBest For
JupyterHubjupyter/datascience-notebook8888Data science, ML, interactive notebooks, Python/R
VS Codecodercom/code-server8080Full-stack development, debugging, version control
CustomUser-providedConfigurableSpecialized development environments

Creating a Workspace

  1. Navigate to your project
  2. Click Create Workspace
  3. Configure the workspace:
FieldRequiredDescription
NameYesWorkspace display name
DescriptionYesPurpose of this workspace
EnvironmentYesJupyterHub, VS Code, or Custom
Environment IDYesPre-configured environment template
CPUYesCPU allocation (e.g., 1, 2, 4)
MemoryYesRAM allocation (e.g., 2GB, 8GB, 16GB)
DiskYesWorkspace volume size (e.g., 20GB, 50GB)
GPUNoGPU allocation (e.g., 1 for NVIDIA T4)
Workspace Volume SizeNoOverride default workspace storage (default: 20GB)

Connecting Services to Workspaces

Workspaces can be connected to platform services via the STRONGLY_SERVICES environment variable:

Service TypeDescription
Add-onsManaged databases (PostgreSQL, MongoDB, Redis, etc.)
Data SourcesExternal database connections
AI GatewaysAI model endpoints (OpenAI, Anthropic, vLLM, etc.)
WorkflowsWorkflow execution endpoints

These are selected during workspace creation and injected as a JSON environment variable.

Workspace Lifecycle

Created --> Deploying --> Running --> Stopping --> Stopped
|
Error / Archived
  • Start -- Launch the workspace pod with configured resources
  • Stop -- Gracefully stop the pod, triggering data volume sync if enabled
  • Archive -- Delete the workspace and its workspace volume (project volumes are preserved)

Managing Workspaces

Start/Stop:

  • Stop idle workspaces to save compute costs
  • All volume data persists through stop/start cycles
  • Auto-stop triggers after configurable idle time (default: 30 minutes)

Resource Upgrades:

  • Stop the workspace before modifying resources
  • Change CPU, memory, GPU, or disk allocation
  • Restart with new configuration

Package Installation:

  • JupyterHub: Use pip, conda, or apt-get in terminal
  • VS Code: Install extensions from the marketplace
  • Use virtual environments in /workspace/venv to persist packages

Multiple Workspaces per Project

Projects support multiple workspaces simultaneously. Each workspace:

  • Has its own compute resources and environment configuration
  • Shares access to all project data volumes
  • Runs independently (starting/stopping one does not affect others)
  • Has its own workspace volume at /workspace

Project Settings

Auto-Stop Configuration

SettingDefaultDescription
Auto-Stop EnabledtrueAutomatically stop idle workspaces
Auto-Stop Minutes30Minutes of inactivity before stopping

Data Volume Backup

SettingDefaultDescription
Backup EnabledtrueEnable automatic backups
Backup FrequencydailyOptions: daily, weekly, manual
Retention Days30How long to keep backup copies

Notifications

SettingDefaultDescription
Job FailuretrueNotify on job failures
Job SuccessfalseNotify on job completions
Workspace Auto-StoptrueNotify when workspace auto-stops

Git Configuration

Projects support optional Git integration for version control:

SettingDescription
Repository URLGit remote URL (e.g., git@github.com:user/repo.git)
BranchTarget branch (default: main)
SSH Key IDReference to user's SSH key for authentication
Sync Directionpull, push, or both
Auto SyncAutomatically sync on schedule
Target PathPath within volume to sync to (default: root)

Sync status is tracked with last sync timestamp, commit hash, and commit message.

Project Statistics

The platform tracks comprehensive project statistics:

MetricDescription
Total JobsTotal number of jobs created
Successful JobsJobs completed successfully
Failed JobsJobs that failed
Running JobsCurrently executing jobs
Total Storage (GB)Combined storage across all volumes
Compute Hours UsedTotal compute time consumed
Estimated CostEstimated cost of all resources

Activity Tracking

All project actions are logged for audit purposes:

Activity TypeDescription
project_createdProject was created
project_accessedProject was viewed
project_updatedProject settings were changed
workspace_startedWorkspace was launched
workspace_stoppedWorkspace was stopped
workspace_archivedWorkspace was archived
job_startedJob execution began
job_completedJob execution finished
volume_createdNew volume was created
volume_updatedVolume settings were changed
volume_attachedVolume was attached to project
volume_detachedVolume was detached from project
collaborator_addedNew collaborator was added
collaborator_removedCollaborator was removed

Jobs

Jobs enable automated execution of scripts, notebooks, and commands within your project.

Job Execution Types

TypeDescriptionConfiguration
ScriptExecute a Python or shell scriptPath, entrypoint, arguments, working directory
NotebookRun a Jupyter notebookPath, parameters
CommandRun an arbitrary commandCommand string, arguments

Job Scheduling

Jobs can be triggered on various schedules:

Schedule TypeDescriptionExample
CronStandard cron expression0 0 * * * (daily at midnight)
IntervalFixed time intervalEvery 15 minutes
EventTriggered by platform eventsData volume updated, webhook, file change

Job States

StateDescription
ActiveJob is enabled and will run on schedule
PausedJob schedule is suspended
DisabledJob is deactivated

Job Environment

Each job runs in a containerized environment with:

  • Custom Docker image
  • Environment variables
  • Secrets (injected from secure storage)
  • Configurable CPU, memory, and optional GPU resources

GPU Options for Jobs

GPU TypeDescription
nvidia-t4NVIDIA T4 -- Good for inference
nvidia-a100NVIDIA A100 -- High-performance training
nvidia-v100NVIDIA V100 -- General ML workloads
nvidia-k80NVIDIA K80 -- Cost-effective option

Access Control and Multi-Tenancy

Projects use the platform's multi-tenancy security model:

  1. SaaS Mode -- Users can only access projects within their organization
  2. Owner Access -- Project owner has full control
  3. Admin Access -- Platform admins can access all projects
  4. Collaborator Access -- Based on assigned role (editor/viewer)
  5. Organization Visibility -- Organization members can access if visibility is set to "organization"
  6. Global Visibility -- All users can access (Enterprise mode only)

Name uniqueness is enforced within each organization (excluding archived projects).

API Reference

Project Methods

MethodParametersDescription
projects.create{ name, description, tags? }Create a new project
projects.updateprojectId, updatesUpdate project settings
projects.deleteprojectId, { archiveData?, deleteVolumes? }Delete a project
projects.archiveprojectIdArchive a project
projects.restoreprojectIdRestore an archived project
projects.list(none)List all accessible projects
projects.getStatsprojectIdGet project statistics
projects.trackAccessprojectIdRecord project access
projects.getRunningJobsCountprojectIdCount running jobs

Collaborator Methods

MethodParametersDescription
projects.addCollaboratorprojectId, email, role, userId?Add a collaborator
projects.removeCollaboratorprojectId, userIdRemove a collaborator
projects.updateCollaboratorRoleprojectId, userId, roleChange collaborator role

Workspace Methods

MethodParametersDescription
projects.createWorkspaceprojectId, optionsCreate a new workspace
projects.launchWorkspaceprojectId, options?Launch legacy single workspace
projects.stopWorkspaceprojectIdStop a running workspace
projects.archiveWorkspaceprojectIdDelete workspace and its volume

Volume Methods

MethodParametersDescription
volumes.create{ projectId, label, description?, sizeGB, ... }Create a new volume
volumes.syncvolumeIdTrigger volume sync
volumes.deletevolumeId, { archive? }Delete a volume
volumes.makeSharedvolumeIdConvert to shared volume
projects.attachVolumeprojectId, volumeIdAttach volume to project
projects.detachVolumeprojectId, volumeIdDetach volume from project
dataVolumes.getByIdsvolumeIds[]Get volumes by their IDs
tip

Start with a project closest to your needs. Use tags and categories to organize projects by team, department, or purpose. Take advantage of shared volumes to avoid duplicating large datasets across projects.