Skip to content

amphi-ai/amphi-etl

Repository files navigation

Visual Data Preparation Powered by Python

Simple, intutive and easy to use with AI.


Test Slack License PyPI version PyPI Downloads PyPI - Downloads

amphi-github-banner

English · Try the demo · Report Bug · Request Feature

Table of contents

TOC

📦 Installation & Update

Amphi is available as both a standalone application or as a JupyterLab extension.

Amphi ETL (standalone) Amphi for JupyterLab (extension)
amphi-etl-home-page amphi-for-jupyterlab-homepage2
pip install amphi-etl pip install jupyterlab-amphi
pip install --upgrade amphi-etl pip install --upgrade jupyterlab-amphi

Note

If you prefer to install Amphi's Jupyterlab extension through the extension manager, make sure to install jupyerlab-amphi package


🔨 Usage

To start Amphi ETL (standalone), simply run:

amphi start

Use the following parameters to specify your:

  • workspace (where you can access files and create pipelines on your system),
  • IP address to expose
  • port to use

Deploy on your local machine

amphi start -w /your/workspace/path

Deploy on a server

For deploying on a server, you need to specify -i 0.0.0.0 to expose Amphi and access it through the internet. Optionaly specify a different port.

amphi start -w /your/workspace/path -i 0.0.0.0 -p 8888 

To update Amphi ETL run the following:

pip install --upgrade amphi-etl

✨ Features

Note

Amphi focuses on data transformation for data preparation, reporting and lightweight ETL. It's designed to be super simple to use, quick to ramp up and easy to use with AI (ChatGTP, Claude, Mistra, etc).

Data Preparation:

  • Visual Interface / Low-code: Accelerate data pipeline development and reduce maintenance time.
  • Python-code Generation: Generate native Python code leveraging common libraries such as pandas, DuckDB that you can run anywhere.
  • Private and Secure: Self-host Amphi on your laptop or in the cloud for complete privacy and security over your data.

🧩 Extensibility:

Amphi is extremely flexible and extensible.

  • Custom code: Directly use Python or SQL in your pipelines.
  • Custom components: Add custom components directly from the interface.

How to add a component:

// Component file: HelloDate.tsx

class HelloDate extends (globalThis as any).Amphi.BaseCoreComponent {
  constructor() {
    const description = 'Takes a date and outputs a pandas DataFrame with a message including that date.';
    const defaultConfig = { selectedDate: "" }; 
    
    const form = {
      idPrefix: 'component__form',
      fields: [
        { 
            type: 'date', 
            id: 'selectedDate', 
            label: 'Select a Date', 
            placeholder: 'Choose a date' 
        }
      ]
    };
    
    const icon = {
      name: 'amphi-date-input-hello',
      svgstr:
        '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M19 4h-1V2h-2v2H8V2H6v2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2Zm0 16H5V9h14v11Z"/><path d="M12 11h2v2h-2zM8 11h2v2H8zM16 11h2v2H8zM8 15h2v2H8zM12 15h2v2h-2zM16 15h2v2h-2z"/></svg>'
    };

    // Parameters: Display Name, Technical ID, Description, Output Type, Inputs, Category, Icon, DefaultConfig, Form
    super('Hello Date', 'helloDate', description, 'pandas_df_input', [], 'inputs', icon, defaultConfig, form);
  }

  provideImports() {
    return ['import pandas as pd'];
  }

  generateComponentCode({ config, outputName }) {
    const date = String(config?.selectedDate ?? '').trim() || 'No Date Selected';
    
    // We create a DataFrame and assign it to the outputName variable
    return `
data = {
    'event': ['Date Selection'],
    'selected_date': ['${date}'],
    'message': ['The user selected the date: ${date}']
}
${outputName} = pd.DataFrame(data)
`;
  }
}

export default new HelloDate();

Create a new file in your workspace, such as HelloDate.tsx and then right-click and select "Add Component". You should see a notification "ent "Hello Date" (helloDate) updated successfully." Then either open a new pipeline or refresh the component palette to see the new component appear in the Inputs.


🤝 Contributing

  • Use and Innovate: Try Amphi and share your use case with us. Your real-world usage and feedback help us improve our product.
  • Voice Your Insights: Encounter a bug? Have a question? Share them by submitting issues and help us enhance the user experience.
  • Shape the Future: Have code enhancements or feature ideas? We invite you to propose pull requests and contribute directly.

Every contribution is helpful.


📡 Telemetry

Amphi collects anonymous telemetry data to help us understand users and their use-cases better to improve the product. You can of course opt out in the settings and disable any telemetry data collection.



📝 License

Copyright © 2024-2026 - present Amphi Labs.
This project is ELv2 licensed.