Installation Guide
Complete installation instructions for FinFocus Core across different platforms and deployment scenarios.
Table of Contents
Section titled “Table of Contents”- Prerequisites
- Installation Methods
- Platform-Specific Instructions
- Docker Installation
- Build from Source
- Installing as a Pulumi Tool Plugin
- Plugin Installation
- Verification
- Troubleshooting
Prerequisites
Section titled “Prerequisites”System Requirements
Section titled “System Requirements”- Operating System: Linux, macOS, or Windows
- Architecture: x86_64 (amd64) or ARM64
- Memory: Minimum 256MB RAM
- Storage: 50MB for binary, additional space for plugins and specs
Software Dependencies
Section titled “Software Dependencies”- Pulumi CLI: Required for generating plan JSON files
- Install from: https://www.pulumi.com/docs/get-started/install/
- Minimum version: 3.0.0
Installation Methods
Section titled “Installation Methods”1. Download Pre-built Binaries (Recommended)
Section titled “1. Download Pre-built Binaries (Recommended)”Download the latest release for your platform:
Linux (x86_64)
Section titled “Linux (x86_64)”curl -L https://github.com/rshade/finfocus/releases/latest/download/finfocus-linux-amd64 -o finfocuschmod +x finfocussudo mv finfocus /usr/local/bin/Linux (ARM64)
Section titled “Linux (ARM64)”curl -L https://github.com/rshade/finfocus/releases/latest/download/finfocus-linux-arm64 -o finfocuschmod +x finfocussudo mv finfocus /usr/local/bin/macOS (Intel)
Section titled “macOS (Intel)”curl -L https://github.com/rshade/finfocus/releases/latest/download/finfocus-darwin-amd64 -o finfocuschmod +x finfocussudo mv finfocus /usr/local/bin/macOS (Apple Silicon)
Section titled “macOS (Apple Silicon)”curl -L https://github.com/rshade/finfocus/releases/latest/download/finfocus-darwin-arm64 -o finfocuschmod +x finfocussudo mv finfocus /usr/local/bin/Windows (x86_64)
Section titled “Windows (x86_64)”# Download using PowerShellInvoke-WebRequest -Uri "https://github.com/rshade/finfocus/releases/latest/download/finfocus-windows-amd64.exe" -OutFile "finfocus.exe"
# Add to PATH (optional)Move-Item finfocus.exe $env:USERPROFILE\bin\$env:PATH += ";$env:USERPROFILE\bin"2. Package Managers
Section titled “2. Package Managers”Homebrew (macOS/Linux)
Section titled “Homebrew (macOS/Linux)”# Coming soon - not yet availablebrew install finfocusChocolatey (Windows)
Section titled “Chocolatey (Windows)”# Coming soon - not yet availablechoco install finfocusAPT (Ubuntu/Debian)
Section titled “APT (Ubuntu/Debian)”# Coming soon - not yet availablesudo apt updatesudo apt install finfocusPlatform-Specific Instructions
Section titled “Platform-Specific Instructions”Ubuntu/Debian
Section titled “Ubuntu/Debian”# Install dependenciessudo apt updatesudo apt install curl
# Download and installcurl -L https://github.com/rshade/finfocus/releases/latest/download/finfocus-linux-amd64 -o finfocuschmod +x finfocussudo mv finfocus /usr/local/bin/
# Verify installationfinfocus --versionCentOS/RHEL/Fedora
Section titled “CentOS/RHEL/Fedora”# Install dependenciessudo yum install curl # or dnf install curl
# Download and installcurl -L https://github.com/rshade/finfocus/releases/latest/download/finfocus-linux-amd64 -o finfocuschmod +x finfocussudo mv finfocus /usr/local/bin/
# Verify installationfinfocus --versionAlpine Linux
Section titled “Alpine Linux”# Install dependenciesapk add curl
# Download and installcurl -L https://github.com/rshade/finfocus/releases/latest/download/finfocus-linux-amd64 -o finfocuschmod +x finfocusmv finfocus /usr/local/bin/
# Verify installationfinfocus --versionUsing curl (Recommended)
Section titled “Using curl (Recommended)”# Download for your architecture# Intel Macscurl -L https://github.com/rshade/finfocus/releases/latest/download/finfocus-darwin-amd64 -o finfocus
# Apple Silicon Macscurl -L https://github.com/rshade/finfocus/releases/latest/download/finfocus-darwin-arm64 -o finfocus
# Installchmod +x finfocussudo mv finfocus /usr/local/bin/
# Verify installationfinfocus --versionBypass Gatekeeper (if needed)
Section titled “Bypass Gatekeeper (if needed)”# If macOS blocks the binary due to security settingssudo spctl --add /usr/local/bin/finfocussudo xattr -dr com.apple.quarantine /usr/local/bin/finfocusWindows
Section titled “Windows”PowerShell Installation
Section titled “PowerShell Installation”# Create bin directoryNew-Item -ItemType Directory -Force -Path $env:USERPROFILE\bin
# Download binaryInvoke-WebRequest -Uri "https://github.com/rshade/finfocus/releases/latest/download/finfocus-windows-amd64.exe" -OutFile "$env:USERPROFILE\bin\finfocus.exe"
# Add to PATH (persistent)[Environment]::SetEnvironmentVariable("PATH", $env:PATH + ";$env:USERPROFILE\bin", [System.EnvironmentVariableTarget]::User)
# Refresh current session$env:PATH += ";$env:USERPROFILE\bin"
# Verify installationfinfocus --versionWindows Subsystem for Linux (WSL)
Section titled “Windows Subsystem for Linux (WSL)”# Use Linux installation instructions inside WSLcurl -L https://github.com/rshade/finfocus/releases/latest/download/finfocus-linux-amd64 -o finfocuschmod +x finfocussudo mv finfocus /usr/local/bin/Docker Installation
Section titled “Docker Installation”Using Official Docker Image
Section titled “Using Official Docker Image”# Pull the latest imagedocker pull rshade/finfocus:latest
# Run with volume mountsdocker run --rm -v $(pwd):/workspace rshade/finfocus:latest \ cost projected --pulumi-json /workspace/plan.json
# Create an alias for easier usagealias finfocus='docker run --rm -v $(pwd):/workspace rshade/finfocus:latest'Docker Compose
Section titled “Docker Compose”version: '3.8'services: finfocus: image: rshade/finfocus:latest volumes: - ./plans:/workspace/plans:ro - ./specs:/workspace/specs:ro - ~/.finfocus:/root/.finfocus command: ['cost', 'projected', '--pulumi-json', '/workspace/plans/plan.json']Building Docker Image
Section titled “Building Docker Image”# Clone repositorygit clone https://github.com/rshade/finfocuscd finfocus
# Build imagedocker build -t finfocus .
# Rundocker run --rm finfocus --versionBuild from Source
Section titled “Build from Source”Prerequisites for Building
Section titled “Prerequisites for Building”- Go: Version 1.25.8 or later
- Install from: https://golang.org/dl/
- Git: For cloning the repository
- Make: For using build scripts (optional)
Build Steps
Section titled “Build Steps”# Clone the repositorygit clone https://github.com/rshade/finfocuscd finfocus
# Build using Make (recommended)make build
# Or build directly with Gogo build -o bin/finfocus ./cmd/finfocus
# Install to systemsudo cp bin/finfocus /usr/local/bin/
# Verify installationfinfocus --versionDevelopment Build
Section titled “Development Build”# Clone and setup for developmentgit clone https://github.com/rshade/finfocuscd finfocus
# Install dependenciesgo mod download
# Run testsmake test
# Build and runmake dev
# Or run directlygo run ./cmd/finfocus --helpCross-compilation
Section titled “Cross-compilation”# Build for different platformsGOOS=linux GOARCH=amd64 go build -o finfocus-linux-amd64 ./cmd/finfocusGOOS=darwin GOARCH=arm64 go build -o finfocus-darwin-arm64 ./cmd/finfocusGOOS=windows GOARCH=amd64 go build -o finfocus-windows-amd64.exe ./cmd/finfocusInstalling as a Pulumi Tool Plugin
Section titled “Installing as a Pulumi Tool Plugin”FinFocus can be installed as a Pulumi Tool Plugin, allowing you to run it through the Pulumi CLI.
Build and Install
Section titled “Build and Install”# Clone the repositorygit clone https://github.com/rshade/finfocuscd finfocus
# Build with the plugin binary namemake build-plugin# Or manually: go build -o pulumi-tool-cost ./cmd/finfocus
# Install into Pulumi plugins directorymkdir -p ~/.pulumi/plugins/tool-cost-v0.1.0/cp pulumi-tool-cost ~/.pulumi/plugins/tool-cost-v0.1.0/
# Verify installationpulumi plugin lsUsage as Plugin
Section titled “Usage as Plugin”Once installed, run FinFocus through the Pulumi CLI:
# Show helppulumi plugin run tool cost -- --help
# Calculate projected costspulumi plugin run tool cost -- cost projected --pulumi-json plan.json
# Get actual costspulumi plugin run tool cost -- cost actual --pulumi-json plan.json --from 2025-01-01Configuration Behavior
Section titled “Configuration Behavior”When running as a Pulumi plugin:
- Configuration is stored in
$PULUMI_HOME/finfocus/instead of~/.finfocus/ - Help text automatically shows
pulumi plugin run tool costsyntax - The
FINFOCUS_PLUGIN_MODE=trueenvironment variable can force plugin mode
Testing Plugin Installation
Section titled “Testing Plugin Installation”# Verify plugin is recognizedpulumi plugin ls
# Expected output:# NAME TYPE VERSION SIZE INSTALLED LAST USED# cost tool v0.1.0-dev 15 MB just now just now
# Test with a Pulumi plancd your-pulumi-projectpulumi preview --json > plan.jsonpulumi plugin run tool cost -- cost projected --pulumi-json plan.jsonPlugin Installation
Section titled “Plugin Installation”Plugin Directory Setup
Section titled “Plugin Directory Setup”Create the plugin directory structure:
# Create plugin directorymkdir -p ~/.finfocus/plugins
# Create specs directorymkdir -p ~/.finfocus/specsInstalling Plugins
Section titled “Installing Plugins”Kubecost Plugin Example
Section titled “Kubecost Plugin Example”# Download plugin binary (example)curl -L https://github.com/rshade/finfocus-plugin-kubecost/releases/latest/download/finfocus-kubecost-linux-amd64 \ -o ~/.finfocus/plugins/kubecost/1.0.0/finfocus-kubecost
# Make executablechmod +x ~/.finfocus/plugins/kubecost/1.0.0/finfocus-kubecost
# Create plugin manifest (optional)cat > ~/.finfocus/plugins/kubecost/1.0.0/plugin.manifest.json << EOF{ "name": "kubecost", "version": "1.0.0", "binary": "finfocus-kubecost", "supports": ["actual_cost"]}EOFPlugin Directory Structure
Section titled “Plugin Directory Structure”~/.finfocus/plugins/├── kubecost/│ └── 1.0.0/│ ├── finfocus-kubecost # Plugin binary│ └── plugin.manifest.json # Optional manifest├── aws-plugin/│ └── 0.1.0/│ └── finfocus-aws└── azure-plugin/ └── 0.2.0/ └── finfocus-azureInstalling Pricing Specs
Section titled “Installing Pricing Specs”Create local pricing specifications:
# Example AWS EC2 pricing speccat > ~/.finfocus/specs/aws-ec2-t3-micro.yaml << EOFprovider: awsservice: ec2sku: t3.microcurrency: USDpricing: instanceType: t3.micro onDemandHourly: 0.0104 monthlyEstimate: 7.59 vcpu: 2 memory: 1metadata: region: us-west-2 operatingSystem: linuxEOFVerification
Section titled “Verification”Basic Verification
Section titled “Basic Verification”# Check versionfinfocus --version
# Show helpfinfocus --help
# List available commandsfinfocus helpPlugin Verification
Section titled “Plugin Verification”# List installed pluginsfinfocus plugin list
# Validate plugin installationfinfocus plugin validateTest with Example
Section titled “Test with Example”# Test with provided examplecd finfocus # if you cloned the repofinfocus cost projected --pulumi-json examples/plans/aws-simple-plan.json
# Expected output should show resource cost estimatesIntegration Test
Section titled “Integration Test”# Test complete workflowcd your-pulumi-projectpulumi preview --json > plan.jsonfinfocus cost projected --pulumi-json plan.json
# Should display cost estimates for your resourcesTroubleshooting
Section titled “Troubleshooting”Common Issues
Section titled “Common Issues”Binary Not Found
Section titled “Binary Not Found”# Check if binary is in PATHwhich finfocus
# If not found, add directory to PATHexport PATH=$PATH:/usr/local/bin
# Or use full path/usr/local/bin/finfocus --versionPermission Denied (Linux/macOS)
Section titled “Permission Denied (Linux/macOS)”# Make binary executablechmod +x /usr/local/bin/finfocus
# Check file permissionsls -la /usr/local/bin/finfocusmacOS Security Warning
Section titled “macOS Security Warning”# Allow the binary to runsudo spctl --add /usr/local/bin/finfocussudo xattr -dr com.apple.quarantine /usr/local/bin/finfocusPlugin Not Found
Section titled “Plugin Not Found”# Check plugin directory structurels -la ~/.finfocus/plugins/
# Verify plugin permissionschmod +x ~/.finfocus/plugins/*/*/finfocus-*Network Issues
Section titled “Network Issues”# Use proxy if neededexport HTTP_PROXY=http://proxy.company.com:8080export HTTPS_PROXY=http://proxy.company.com:8080
# Or download manually and transfer# Download on another machine and copy via SCP/USBGetting Help
Section titled “Getting Help”If you encounter issues:
- Check the Troubleshooting Guide
- Review the GitHub Issues
- Join the community discussion
- File a bug report with:
- Operating system and version
- FinFocus version (
finfocus --version) - Complete error message
- Steps to reproduce
Next Steps
Section titled “Next Steps”After installation:
- Read the User Guide for detailed usage instructions
- Review Cost Calculations to understand methodologies
- Set up Plugin System for actual cost tracking
- Check out the Examples directory
Version Management
Section titled “Version Management”Updating FinFocus
Section titled “Updating FinFocus”# Check current versionfinfocus --version
# Download and replace binary with new versioncurl -L https://github.com/rshade/finfocus/releases/latest/download/finfocus-linux-amd64 -o /tmp/finfocuschmod +x /tmp/finfocussudo mv /tmp/finfocus /usr/local/bin/finfocus
# Verify updatefinfocus --versionMultiple Versions
Section titled “Multiple Versions”# Install specific versioncurl -L https://github.com/rshade/finfocus/releases/download/v0.3.0/finfocus-v0.3.0-linux-amd64.tar.gz -o finfocus-v0.3.0.tar.gztar -xzf finfocus-v0.3.0.tar.gzchmod +x finfocus
# Use specific version./finfocus --version