Skip to content
/ f6n Public

A multi-cloud terminal UI for managing serverless functions, inspired by k9s.

License

Notifications You must be signed in to change notification settings

pastorenue/f6n

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

f6n - Serverless Function Manager

A multi-cloud beautiful terminal UI for managing serverless functions, inspired by k9s.

  _____  ________       
_/ ____\/  _____/ ____  
\   __\/   __  \ /    \ 
 |  |  \  |__\  \   |  \
 |__|   \_____  /___|  /
              \/     \/ 

Features

  • πŸ“‹ List all Lambda/Cloud functions in your AWS/GCP account
  • πŸ” Inspect function details including configuration, environment variables, and metadata
  • πŸ“Š View function metrics and status
  • πŸ”„ Refresh in real-time to see the latest changes
  • 🌍 Multi-region support - switch between AWS regions
  • 🎨 Beautiful TUI - clean and intuitive interface
  • ⌨️ Keyboard-driven - fast navigation with keyboard shortcuts

Planned Features

  • πŸ“ View CloudWatch logs for functions
  • πŸ”— Get API Gateway endpoints associated with functions
  • πŸ’» View function source code
  • 🌐 Switch between environments (dev, stage, prod)
  • πŸ”§ Support for GCP Cloud Functions (future)

Installation

Prerequisites

  • Go 1.24+ installed
  • AWS CLI configured with valid credentials
  • Access to AWS Lambda in your account

Install from source

# Clone the repository
git clone <repository-url>
cd f6n

# Build and install
make install

# Or build only
make build

Binary

After building, the binary will be available at ./bin/f6n

Configuration

AWS Credentials

f6n uses the standard AWS credential chain. You can configure it in several ways:

  1. AWS CLI Configuration (recommended)

    aws configure
  2. Environment Variables

    export AWS_ACCESS_KEY_ID=your_access_key
    export AWS_SECRET_ACCESS_KEY=your_secret_key
    export AWS_REGION=us-east-1
  3. AWS Profile

    f6n --profile my-profile

Command-line Options

f6n [options]

Options:
  --region string      AWS region (default: AWS_REGION env var or us-east-1)
  --env string         Environment name (default: STAGE env var or dev)
  --profile string     AWS profile to use (default: AWS_PROFILE env var)
  --log-level string   Log level: debug, info, warn, error (default: info)

Usage

Starting f6n

# Use default configuration
f6n

# Specify region
f6n --region us-west-2

# Use specific AWS profile
f6n --profile production

# Set environment
f6n --env prod

Keyboard Shortcuts

List View

  • ↑/↓ or j/k - Navigate through functions
  • Enter - View function details
  • r - Refresh function list
  • e - Change environment (coming soon)
  • l - View logs (coming soon)
  • a - View API Gateway endpoints (coming soon)
  • c - View function code (coming soon)
  • q or Ctrl+C - Quit

Detail View

  • ↑/↓ - Scroll through details
  • Esc - Return to list view
  • q - Quit

Development

Project Structure

f6n/
β”œβ”€β”€ cmd/
β”‚   └── f6n/           # Application entry point
β”‚       └── main.go
β”œβ”€β”€ internal/
β”‚   β”œβ”€β”€ aws/           # AWS Lambda client wrapper
β”‚   β”‚   β”œβ”€β”€ lambda.go
β”‚   β”‚   └── dummy.go   # Dummy data for testing
β”‚   β”œβ”€β”€ config/        # Configuration management
β”‚   β”‚   └── config.go
β”‚   └── ui/            # Terminal UI components
β”‚       β”œβ”€β”€ model.go   # TUI model and state
β”‚       β”œβ”€β”€ render.go  # Rendering logic
β”‚       β”œβ”€β”€ views.go   # View types
β”‚       └── styles/    # UI styling
β”‚           └── styles.go
β”œβ”€β”€ go.mod
β”œβ”€β”€ go.sum
β”œβ”€β”€ Makefile
└── README.md

Building

# Build the application
make build

# Run tests
make test

# Run linter
make lint

# Format code
make fmt

# Run the application
make run

Testing with Dummy Data

By default, the application uses dummy data for development. To use real AWS data:

Edit internal/aws/dummy.go and set:

var UseDummyData = false

Contributing

Contributions are welcome! Please follow these guidelines:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Code Style

  • Follow standard Go conventions
  • Run make fmt before committing
  • Ensure all tests pass with make test
  • Add tests for new features

Technologies Used

License

MIT License - see LICENSE file for details

Roadmap

  • CloudWatch Logs integration
  • API Gateway endpoint discovery
  • Function code viewer
  • Environment switching
  • Function invocation
  • Metrics and monitoring
  • Multi-cloud support (GCP Cloud Functions)
  • Configuration file support
  • Search and filtering
  • Function tagging support

Support

For issues, questions, or contributions, please open an issue on GitHub.

About

A multi-cloud terminal UI for managing serverless functions, inspired by k9s.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •