# Licensing

Avo has two types of licenses. Community edition which is free and open source for personal and hobby projects and Pro for commercial usage.

# Community vs Pro

The Community version has features that you can use today like Resource management, quite a lot of feature-rich fields, out-of-the box sorting, filtering and actions and all the associations you need.

The Pro version has advanced authorization using Pundit, localization support, Custom tools, Custom fields and much more. More (opens new window) features are coming soon like Dashboards, Settings screens, and Themes.

# One license per site

Each license entitles you to run one site in one production environment.

# More installations/environments per site

You might have the same site running in multiple environments (development, staging, test, QA, etc.) for non-production purposes. You don't need extra licenses for those environments.

We only need to check that the license key and URL matches the purchased license you're using for that one site (in any environment).

# Sites

In you avohq.io account (opens new window) you can edit your sites and add the URLs for all your environments.

# Add the license key

After you purchase an Avo license add it to your config/initializers/avo.rb file along with changing the license type from community to pro.



 
 


# config/initializers/avo.rb
Avo.configure do |config|
  config.license = 'pro'
  config.license_key = '************************' # or use ENV['AVO_LICENSE_KEY']
end

# Purchase a license

You can purchase a license on the purchase (opens new window) page.

# License validation

# "Phone home" mechanism

Avo pings the HQ (opens new window) (the license validation service) with some information about the current Avo installation. You can find the full payload below.

# HQ ping payload
{
  license: Avo.configuration.license,
  license_key: Avo.configuration.license_key,
  avo_version: Avo::VERSION,
  rails_version: Rails::VERSION::STRING,
  ruby_version: RUBY_VERSION,
  environment: Rails.env,
  ip: current_request.ip,
  host: current_request.host,
  port: current_request.port
}

That information helps us to identify your license and return a license valid/invalid response back to Avo. The requests are made at boot time and every hour when you use Avo.