Local Storage
Local Storage
Section titled “Local Storage”The default storage backend that persists evaluation results to the local filesystem.
Configuration
Section titled “Configuration”Local storage works out of the box with no configuration required.
Default Location
Section titled “Default Location”Results are stored in ./artemis-runs/ relative to your project root:
artemis-runs/└── default/ ├── ar-20260115-abc123.json ├── ar-20260115-def456.json └── ...Results are organized by project name (defaults to default).
Custom Location
Section titled “Custom Location”Configure a custom path in your config file:
storage: type: local basePath: ./my-eval-resultsOr via environment variable:
export ARTEMIS_STORAGE_PATH=./my-eval-resultsFile Structure
Section titled “File Structure”Run Manifests
Section titled “Run Manifests”Each run creates a JSON file containing the complete evaluation results:
artemis-runs/<project>/<run-id>.jsonThe manifest includes:
- Run metadata (ID, timestamps, git info)
- Configuration used (provider, model, scenario)
- Aggregate metrics (success rate, latency, tokens)
- Individual case results
CLI Commands
Section titled “CLI Commands”View Run History
Section titled “View Run History”artemiskit history --limit 10Output:
Run ID Scenario Success Rate Datear-20260115-abc123 auth-tests 95.0% 1/15/2026, 10:30:00 AMar-20260114-xyz789 auth-tests 92.0% 1/14/2026, 3:45:00 PMFilter by project or scenario:
artemiskit history --project my-project --scenario auth-testsCompare Two Runs
Section titled “Compare Two Runs”artemiskit compare ar-20260115-abc123 ar-20260114-xyz789Generate Report from a Run
Section titled “Generate Report from a Run”artemiskit report ar-20260115-abc123Programmatic Usage
Section titled “Programmatic Usage”import { LocalStorageAdapter } from '@artemiskit/core';
const storage = new LocalStorageAdapter('./artemis-runs');
// Save a manifestawait storage.save(manifest);
// Load a manifestconst loaded = await storage.load('ar-20260115-abc123');
// List runs with filteringconst runs = await storage.list({ project: 'my-project', scenario: 'my-scenario', limit: 10,});
// Compare runsconst diff = await storage.compare( 'ar-20260115-abc123', 'ar-20260114-xyz789');
// Delete a runawait storage.delete('ar-20260115-abc123');Git Integration
Section titled “Git Integration”Add to .gitignore to exclude run results:
# ArtemisKit resultsartemis-runs/Limitations
Section titled “Limitations”- Single machine only - results not shared across team
- No querying beyond basic filtering
- Manual backup required
- No built-in trending or analytics
For team collaboration and CI/CD, consider Supabase Storage.