Local storage reference
Source: core repository guide, snapshot
e58778bef40b. Synced 2026-10-24. Package versions are independent of milestone labels.
The local storage backend saves run manifests to the filesystem. This is the default storage backend and requires no configuration.
Configuration
Section titled “Configuration”Default Behavior
Section titled “Default Behavior”By default, ArtemisKit saves manifests to ./artemis-runs in your project directory:
artemis-runs/├── my-project/│ ├── ar-20260115-abc123.json│ ├── ar-20260115-abc123.html│ ├── ar-20260116-def456.json│ └── ar-20260116-def456.html└── another-project/ └── ...Custom Path
Section titled “Custom Path”Override the storage path via config file or environment variable:
Config file:
storage: type: local basePath: ./my-custom-runsEnvironment variable:
export ARTEMIS_STORAGE_PATH=./my-custom-runsFile Structure
Section titled “File Structure”Each run creates two files:
| File | Description |
|---|---|
{run_id}.json | Full run manifest with all results and metadata |
{run_id}.html | Interactive HTML report |
Manifest Structure
Section titled “Manifest Structure”The JSON manifest contains:
{ "version": "1.0", "run_id": "ar-20260115-abc123", "project": "my-project", "start_time": "2026-01-15T10:00:00Z", "end_time": "2026-01-15T10:05:00Z", "duration_ms": 300000, "config": { "scenario": "my-scenario.yaml", "provider": "openai", "model": "gpt-4o" }, "metrics": { "success_rate": 0.95, "total_cases": 20, "passed_cases": 19, "failed_cases": 1, "median_latency_ms": 450 }, "git": { "commit": "abc123", "branch": "main", "dirty": false }, "cases": [...]}CLI Commands
Section titled “CLI Commands”View History
Section titled “View History”# List recent runsartemiskit history --limit 10
# Filter by projectartemiskit history --project my-project
# Filter by scenarioartemiskit history --scenario auth-testsRegenerate Reports
Section titled “Regenerate Reports”# Regenerate HTML from a saved manifestartemiskit report artemis-runs/my-project/ar-20260115-abc123.jsonCompare Runs
Section titled “Compare Runs”# Compare two runsartemiskit compare ar-20260115-abc123 ar-20260116-def456Programmatic Usage
Section titled “Programmatic Usage”import { LocalStorageAdapter } from '@artemiskit/core';
const storage = new LocalStorageAdapter('./artemis-runs');
// Save a manifestconst path = await storage.save(manifest);
// Load a manifestconst loaded = await storage.load('ar-20260115-abc123');
// List runsconst runs = await storage.list({ project: 'my-project', limit: 10});
// Compare runsconst comparison = await storage.compare( 'ar-20260115-abc123', 'ar-20260116-def456');
// Delete a runawait storage.delete('ar-20260115-abc123');Limitations
Section titled “Limitations”- Single machine only - Files are stored locally and not accessible from other machines
- No query capabilities - Filtering is done by scanning files
- Manual cleanup - Old runs accumulate unless manually deleted
- No concurrent access - Not suitable for parallel CI jobs writing to same location
For team collaboration or CI/CD pipelines, consider using Supabase storage.