Saturday, August 24, 2013

Using Web Config Files in CGWatcher

Using Web Config Files in CGWatcher

While CGRemote will make managing all of your miners as easy as configuring just one, it is not yet finished. Until then, CGWatcher provides features that make this much easier than it has been in the past. A few features that specifically address this are:

Web Config Files

CGWatcher allows you to use URLs when specifying a config file in Profile Manager. This means you can create one config, save it online, and use it across some or all of your miners. Web Config Files are downloaded to each computer as is necessary because the miner doesn't allow URLs. It also saves each web config file as a Named Config File, meaning you can access its URL in the drop-down list in Profile Manager. 

Each time CGWatcher starts or restarts cgminer or bfgminer using a profile with a web config, it is re-downloaded to ensure it is using the latest settings. You can also update these files manually by either re-saving the profile in Profile Manager, or opening the web config file in Config File Editor and clicking the Reload button at the bottom next to its URL.

CGWatcher Variables

Variables allow you to create name/value pairs to use in config files, arguments, or batch files. When CGWatcher finds a variable name (enclosed in %...%) it replaces it with that variable's value. This means you can use a variable in multiple config files, and changing its value would change it for all. This also means that when you're using web config files to share a config file between miners, you can allow each miner to customize the config to its own hardware.

Variables are replaced in config files, arguments, and batch files right before the miner is started or restarted. CGWatcher now uses temporary config files and batch files, meaning your originals aren't modified.

To set variables, go to the Settings tab and click the 'Other Tools...' button, then select 'Manage Variables' in the popup menu. Alternatively you can press Ctrl+Shift+V.

This example shows two miners sharing a web config file that uses variables, allowing each miner to fill in its own settings.


While arguments in profiles have been around since profiles have, they can also be used to customize a web config file being shared by many miners. This is because arguments are stored locally on each miner, and these arguments override any settings that are also found in the config file. If the config file says "intensity" : "13" but Miner A has argument --intensity 15, it will use 15 intensity. Other miners using this web config would use 13 intensity unless they too have an intensity specified in their profile's arguments.

More Customization and Sharing
As many users know, profiles are stored in a file called profiles.dat. Variables are stored in a file called variables.ini. You can now change the location of these files if you wish, by moving them and then editing their paths in CGWatcher.exe.ini. Look for the following settings:



This would allow you to also share these files between miners, if you should find that useful. In an upcoming version you will also be able to store profiles online, so you can create a master list of profiles for all of your miners to use, while still being able to create profiles locally for each miner.

Need Somewhere to Store Config Files Online?

Pastebin is great for storing config files. Create an account so you can log in should you ever want to change settings. It is important though that when getting the paste's URL you only use the RAW URL in Profile Manager. You can get this by viewing the paste and then clicking the RAW link near the top. This will open up your paste in a new tab where only the text is displayed, no HTML or other web page elements. This is important because you do not want any HTML included in the config file when it is downloaded. The RAW link is a link to the paste text only, no HTML. If you use a different site to host your config files, make sure there is no HTML included in the config file.

An example of a normal paste URL: (do not use this type of URL)

Its RAW URL: (use this type of URL)

Questions/Comments? Feel free to share them below.

Sunday, July 7, 2013

Profitability Mining in CGWatcher

Update: This post has been updated to reflect changes in newer versions. As of this update, the latest version is 1.3.2.

Profitability Mining is mining whatever crypto-coin is most profitable at any given time based on how much it is worth in Bitcoins. This is not a new concept and has been in practice since the first alt-coin appeared. I did not come up with the idea, I just made it easier to do in CGWatcher. I realize Profitability Mining may not be the best name for it, as even mining one coin is done in hopes of being profitable. But I have to refer to it as something other than "switching coins often based on current profitability at the time of the switch".

CGWatcher 1.2.0 introduced profitability mining, the second most requested feature behind CGRemote (in beta). This post will explain how this works, and how the Scheduled Actions used to control profitability mining work.

Scheduled Actions
The previous scheduling feature in CGWatcher provided a basic "start miner" and "stop miner" option, and meant that the scheduled mining would have to occur on the set days at the set times every week. I didn't want to just duplicate this feature a few times, and instead wanted to allow for unlimited control of scheduling the miner to perform a variety of actions. I think the Scheduled Actions (similar to Window's Scheduled Tasks but named differently to avoid confusion) provide that and allow for additional actions to be easily added in the future. They allow you to fine-tune what your miner does and when it does it, down to the exact second.

The Scheduled Actions you create are displayed in the Schedule tab. They are sorted to display all enabled actions first, in chronological order of when they will next run. Disabled actions are displayed last.

List of Scheduled Actions

Each action has an enable/disable checkbox, Edit button, and Delete button. Click Add Scheduled Action... to create a new action.

The actions available as of version 1.3.2:
  • Start Mining
  • Stop Mining
  • Restart Mining
  • Restart Computer
  • Change Intensity
  • Change All Intensities
  • Switch Profile
  • Enable Device
  • Disable Device
  • Restart Device
  • Run Program
  • Send API Commands to Miner
  • Send E-Mail

Creating a scheduled action is as easy as building a sentence.

Along with switching to a specific profile, you can switch to the next profile (rotation) or have CGWatcher choose a profile based on profitability when the action is triggered.

When creating a scheduled action, think of creating a sentence instructing CGWatcher of what you want it to do. As you select one option, other available options may be changed or filtered.

After selecting an action, one or more "value" options may appear under it depending on which action you selected. For the Change Intensity action, this is the GPU and intensity you want to change to. For the Switch Profile action, a drop-down list of your profiles allows you to select which profile to switch to. There are some additional options at the bottom of this list related to profitability, which I'll go into more below.

Next in the sentence are the frequency options. You can choose to have the action run daily, on a specific day, weekdays, weekends, or at set intervals (you can use decimals in the interval to specify less than one hour). You can also choose to have the action triggered by an event - the computer becoming idle, a specific program starts running, or a wide variety of mining and coin-based events. Similar to actions, certain frequencies may have additional options that appear underneath when selected.

You can create scheduled actions that run at the exact same time, but if you want to ensure one runs before another you should add at least one second to the one you want to run last because they are ran in order of the time you set. If you schedule a Start Mining action to run at 3:00:00 PM and a Change Intensity action to run at 3:00:01 PM, the Change Intensity action will run once the Start Mining action has completed (which takes more than one second), so you do not have to worry about timing actions depending on what they do.

In addition to setting a time to trigger the action, in many cases you can set a stop time. When the stop time is reached, CGWatcher reverts the miner back to the settings that were in use before the action was triggered.

When using Every... N hour(s) actions, the timer for each of these actions begins when CGWatcher is started. So creating an action to run every 4 hours would run first 4 hours after CGWatcher was started. Then it will run 4 hours after that, and so on. However, if you either edit an action or enable a disabled action, the timer's start time is reset.

Addition options:

Start the miner for this action if it is not already running - this option is available for certain types of actions. If this option is enabled and the action causes the miner to be started, setting a stop time means the miner will be stopped when the stop time is reached.

Persist through miner restarts until stopped by user or stop time - when miner restarts occur can be unpredictable depending on the monitoring options you use. If a scheduled action to increase intensities occurs and shortly after, for example, the hashrate drops and CGWatcher is set to restart the miner when this occurs, you may still want those increased intensities applied after the miner is restarted. This option allows for that, and will continue to re-apply the action after the miner is restarted until either the user stops the miner (by clicking the Stop button) or the action's stop time is reached (if one is set).

Run this action once (action is deleted after running) - will delete the action immediately after running it.

If you move your mouse over a scheduled action in the Schedule tab of CGWatcher's main window, a tooltip will display the next time that action is set to run. (This only applies to enabled actions.)

Profitability Mining

So when using CGWatcher, profitability mining is using scheduled actions to automatically switch to mine the most profitable coin that you've setup to mine. It works by checking the current profitability of the various crypto-coins, and then switching to the profile with the most profitable coin (or whichever field you want it to base this decision on). This means that you'll want to create a separate profile for each coin that you mine, and assign a coin to each profile in Profile Manager. If you do not assign a coin to a profile, the profile is ignored when determining which profile is most profitable.

Profile Manager window

The Profile Manager now includes a drop-down list to select the coin to associate to that profile. The coin data is collected from, so new coins added to the website will become available in CGWatcher after the coin data is refreshed. CGWatcher also uses the data from coinchoose to determine profile profitability. See more information on adding and removing coins manually in the Coin Manager section below.

You'll need to assign a coin to at least two profiles in order for profitability mining to work. Otherwise if you did not assign a coin to any profiles, it would be unable to determine which is most profitable; and if you assign a coin to only one profile, that profile would always be the most profitable because there is nothing else to compare it to.

You can check profitability at any time by clicking an Other Tools... button and then selecting Coin Profitability from the menu. There is also a Profitability button in the Settings tab. These open the Coin Profitability window, which displays current profitability data from CoinChoose, along with some other information about each coin like hashing algorithm, difficulty, network hashrate, best price, and which exchange is currently offering the best price. You can create scheduled actions based on any of the numeric fields in this window, as well as the rank (e.g. 2nd most profitable, or 1st lowest difficulty, or 3rd highest reward, etc.) You can also create your own custom field that uses a mathematical expression you create to set its values. This allows you to create your own profitability formula using the other field values and common mathematical functions and operators (more information below).

Coin Profitability window

In the Coin Profitability window, you can sort columns by clicking on the column header cell once to sort ascending, then again to sort descending.

Coin profitability can be based on Bitcoin (default) or Litecoin. If you mine a coin at 300% profitability of Bitcoin, you should, in theory, be able to convert those mined coins to 3x the Bitcoins you would have earned if you had mined Bitcoins. You can change this any time in Coin Manager's Settings tab. For the next section, we'll assume you've selected profitability based on Bitcoin.

There are three columns relating to the coin profitability. The first, "Profitability", is the current profitability compared to Bitcoin. If profitability is 200%, mining that coin will earn you twice as many Bitcoins as mining Bitcoin itself (once you exchange the coin to Bitcoins). Obviously this value can change at any time, and you would need to convert the mined coins to Bitcoin immediately in order to preserve this increase. If you hold the coin and decide to convert to Bitcoins the next day when the coin's profitability may be at only 50%, you've now lost the additional coins you made by profitability mining. Likewise, there is the possibility that holding the coins allows you to convert when the profitability is even higher, so it is a gamble. Yes, there are miners who are not interested in converting everything to Bitcoin. But that is an essential part of profitability mining, since all profitability is based on Bitcoin (or Litecoin).

The second column is "Adjusted Profitability". This value has been adjusted for stales and is intended to give a more accurate estimate of profitability.

The third column is "Average Profitability", which is based on a 7-day average. This is useful if you are looking to mine something more continuously instead of jumping on whatever happens to be most profitable every couple hours.

The other numeric data columns like "reward", "difficulty", and "network hashrate" can also be used. If you're interested in just mining as many coins as possible, you can create a custom formula using reward, difficulty, and network hashrate together to determine which coin you can mine the most of. Then hold the mined coins until that coin is the speculators' coin-of-the-day and increases in value.

If you created your own custom profitability formula, you'll also see a 'Custom' field displayed in this window showing the value for each coin - calculated using the mathematical expression you created.

So back in the Scheduled Action window, you'll see that if you select the Switch Profile action, there are several profitability options in the profiles drop-down list matching the columns in the Coin Profitability window. Selecting one of these tells CGWatcher which profitability value you want it to use when determining which profile of yours is most profitable before switching to that profile.

By default, CGWatcher updates coin profitability data every 15 minutes. You can change this in Coin Manager's Settings tab. The minimum value is 5 minutes, and the maximum is 1380 (or 23 hours). When a scheduled action is triggered that switches profiles to most profitable, CGWatcher checks if the coin data has been refreshed in the past minute, and if it hasn't, it attempts to refresh it to ensure it is selecting the profile based on updated data. If that refresh should fail and CGWatcher finds that the coin profitability data has not been updated in the past 24 hours, it cancels the action (which is why the maximum refresh interval is 23 hours.)

Some example scheduled actions:

[Switch Profile] to [{Most Profitable}] [Every...] [8] hour(s)

[Switch Profile] to [{Most Profitable - adjusted}] [Weekdays] at [8:00:00 AM]

[Switch Profile] to [{Highest custom field value}] [Daily] at [5:00:00 PM]

[Switch Profile] to [{Lowest difficulty}] [when event occurs...] [0Profiles - Lowest difficulty changes] (*This is checked each time coin data is updated, default: every 15 minutes)

[Start Mining] [] [Weekdays] at [10:00:00 PM]

[Stop Mining] [] [Daily] at [4:00:00 PM]

[Restart Computer] [] [Monday] at [4:00:00 AM]

[Change Intensity] to [12] [when computer is idle for at least] [10 minutes]

[Disable device] [GPU0] [when program is running] named [C:\Games\BattleField 2\BF2.exe]

[Send email] to [] [when event occurs...] [Current pool goes down]

[Run program] to [12] named [C:\Program Files\TeamViewer\TeamViewer.exe] when [program is not running] named [C:\Program Files\TeamViewer\TeamViewer.exe] (this would make sure TeamViewer is restarted if it crashes)

Coin Manager

As its name implies, Coin Manager allows you to manage coins and exchanges used in profitability mining and displayed in the Coin Profitability window. You can access Coin Manager by clicking the 'Other Tools...' button in the Settings tab (or Profile Manager) and selecting Manage Coins from the popup menu.

Coin Manager allows you to manage coins and exchanges, coin-related settings, and create a custom field that can be used in profitability mining.

Creating a Custom Profitability Formula

If you think you have a better formula for calculating profitability than CoinChoose, or you just want to tweak it to increase the odds that you'll not be following the profitability-mining herd (and therefore, difficulty spikes), you can create your own formula in Coin Manager's Custom Field tab. Here you can use any of the existing coin data fields as variables along with common mathematical functions to create your own mathematical expression. Once you're happy with this formula, you can then create scheduled actions to switch profiles to the coin with the highest or lowest custom field value.

An example custom field expression (this is just an example and not thought-out, so I would not suggest using this particular expression) and a list of available values and functions. After creating the expression, you can click 'Test' to calculate it for a selected coin, or click 'Save' to see the results for all coins in the Coin Profitability window.

On the right are the variables for each existing coin data field. So using P in the expression means using the coin's profitability value. You can also select items from the drop-down (shown above) and click 'Insert' to insert them into the expression and they'll be automatically converted to their variable. Also listed in the drop-down are mathematical functions you can use. Note that some functions require parameters.

* When creating a custom field expression, you should also open the Coin Profitability window to see the values calculated for each coin. Depending on your expression, some coins may be calculated as 'Infinity', which may cause unwanted results when creating scheduled actions that switch to the coin with the highest custom field value. Each time you click Save in Coin Manager, the Coin Profitability window will be updated.

Things to Think About

I'm not suggesting you should or shouldn't mine based on profitability. I've provided the tools to do it because it has been one of the most requested features. There are some things you should keep in mind when deciding whether profitability mining is right for you:

  • Pool types: if you use PPLNS-type pools, switching pools often because of profitability changes could have a small negative effect on your earnings because these type of pools reward for consistent mining and try to penalize pool-hoppers, which is essentially what you are doing if you are constantly switching pools based on profitability. Therefore you should try to use PPS-type pools if you plan on switching profiles often.
  • If everyone is switching with you, the coin may not stay most profitable for long. I don't expect this to be a big problem because CGWatcher probably doesn't have enough users to make a big impact on sending a bunch of miners to the same coin at the same time. As of this post, CGWatcher has over 2,500 (est) users (in over 65 countries! maybe translations are in order) and averages 100+ downloads per day, so there is the chance it has an effect in the future. But this assumes that all users are mining all coins. If Bob is only mining Bitcoin and Litecoin, his most profitable coin might be Litecoin even though DigitalCoin is most profitable. Tom has a DigitalCoin profile so when DigitalCoin is most profitable, profitability mining would switch him to DigitalCoin but Bob will still be back on Litecoin. Then you have to consider that how often you switch profiles based on profitability depends on how you setup your scheduled actions, so while Tom might switch every few hours, Bob might only switch once per week. So these lessen the odds of sending a wave of miners to the same coin at the same time.
  • As I mentioned earlier, CGWatcher uses profitability values based on Bitcoin. So if you don't convert your more profitable coins to Bitcoin while they are still more profitable, you risk losing any gains you made by mining the more profitable coin.
  • Because of these things, there is no guarantee that profitability mining will actually be more profitable. It depends a lot on how you set up your pools and when and if you convert your mined coins to Bitcoin. CGWatcher makes it much easier to do, but there is still work before and after coins are mined that CGWatcher cannot do for you.
  • This is a new feature, so if you experience any problems with actions not running when they are supposed to, please let me know. I did quite a bit of testing, but there are always bugs that won't be found until it is released to users, especially with the wide range of setups miners use.
  • I will probably add this ability to CGRemote for non-Windows users by adding and switching pools via the API, but it is too early to say for sure. It may be limited to coins of the same algorithm since CGRemote will not have the same abilities as CGWatcher does if running on a remote computer. I'll have more info on this in the future as CGRemote progresses.
  • Only you can determine if profitability mining is a wise strategy for you. I am not suggesting it is or isn't. I take no responsibility for any losses, we all know how volatile prices can be. Likewise, I take no credit for gains... though you are still more than welcome to donate.

If you're not already using CGWatcher, you can find more info and download here:

Tuesday, March 26, 2013

CGWatcher - A GUI/monitor for CGMiner and BFGMiner

Current version: 1.3.6 (ReadMe)
Current version release: March 22, 2014
*includes only version 1.3.1 or newer

The CGWatcher page has moved!
It is now located at
Please use that link or the 'Check for Update' button on the About tab when checking for new versions. This page may not be updated for future versions.


CGWatcher is a GUI for bitcoin miners CGMiner and BFGMiner (32-bit and 64-bit). Along with giving a graphical interface to the miner, it has several options to monitor the miner and correct problems when they are detected, minimizing downtime. It is not affiliated with CGMiner or BFGMiner, it just helps to ensure they stay running while providing something a little easier to look at.

It works via the miner's API, which was created for this purpose - to allow other software to communicate with the miner. While there are several web applications to allow remote monitoring of these miners, that is not the purpose of CGWatcher. It is designed to run on the same computer as the miner, and will watch for the conditions you set to determine if the miner is working properly. If it is not, CGWatcher takes the appropriate actions to correct the problem. The idea is to create a program that does the monitoring for you, so you don't have to use those web applications to constantly check on your miners.

CGWatcher is a small and portable .NET application. It will run as a 64-bit application in 64-bit Windows, and a 32-bit application in 32-bit Windows. It can be run inside sandbox environments like Sandboxie if you don't trust it, however settings and profiles may not be saved. The application includes a few libraries (see credits below) and creates its own config file (CGWatcher.exe.ini), log (cgwatcher.log), log for mining events (miner.log) and data files for profiles and named config files (profiles.dat, config.dat).

Status Devices Pools Report
Remote Schedule Settings Log Tests
*Screenshots are as of version and do not include the About tab.

  • Monitor mining - Set an interval (in seconds) for checking mining status. This is how often CGWatcher will update mining data. This must be enabled to use the checking features, including:

    ■ Restarting the miner or computer when a sick or dead GPU is detected.
    ■ Restart the miner if the total hashrate falls below a specified number for a specified number of seconds.
    ■ Restart the miner if it had full API access but now only has read-only (in the same miner process), or if the API access was enabled but was lost completely.
    ■ Restart the miner if accepted or total shares do not increase for X number of minutes.
    ■ Restart the miner after X hours of continuous mining to cover any problems that other checks may have missed. That ensures that if a problem arises, at worst the downtime will be limited to the number of hours you set here.
    ■ Ensure miner stays running option makes sure that mining never stops unless you stop it using CGWatcher (by clicking the Pause Mining or Stop buttons.)
  • Statistics - These miners provide a lot of information. CGWatcher attempts to present it in an easier-to-read interface, using tabs to separate information. Basic mining stats can be found on the Status tab. Device-specific stats can be found on the Devices tab, and pool-specific on the Pools tab. More detailed information on the miner and CGWatcher can be found in the Report tab.
  • Control - You can easily change miner settings while it is running. Change GPU core, memory, voltage, or intensity. Re-prioritize and enable/disable pools. A large Pause/Start Mining button allows you to easily stop and resume mining. Another button opens the miner's configuration file in the Config File Editor. I've tried to add buttons to open files or directories wherever you may want to so you can do it all from inside the program.
  • Overheat Protection - CGMiner provides overheat protection for AMD cards. Using the temp-target, temp-overheat, and temp-cutoff settings, it can adjust fan and clock speeds to maintain a target temperature and disable devices that get too hot (if auto-fan and auto-gpu are enabled.) CGWatcher now also provides similar protection for Nvidia cards by adjusting intensity to maintain the target temperature and disabling GPUs that get too hot. It will enable and/or slowly raise intensity back to their original values once temperatures cool down back into the target range. I'm not sure if anyone mines with Intel HD integrated graphics since modern CPUs have better OpenCL support. Currently CGWatcher does not support overheat protection for Intel devices, but I will be doing some tests to see whether the CPU temperatures it is now capable of getting are enough to provide similar support for these devices. You can see if the miner or CGWatcher is providing overheat protection for a GPU in the GPU tab next to the temperature.

    For GPUs that miner is providing overheat protection for (AMD), CGWatcher takes a hands-off approach except for when the miner disables them for exceeding temp-cutoff. Although the miner is supposed to re-enable them once they return to target temperatures, this does not seem to happen so CGWatcher will restart the GPU once it has returned to temp-target temperature.
  • Scheduling - Scheduled actions give you complete control over what your miner does and when. Actions include start mining, stop mining, restart mining, restart computer, change intensity, switch profile, etc. Along with creating actions to run at specified times, you can create actions that run at set intervals.

    You can create profiles for each coin you mine, then set CGWatcher to switch to whatever is most profitable at the times or intervals you specify.

    You can also set CGWatcher to increase GPU intensities when the computer is idle, and it will return them to their original values once you start using the computer again. You set the intensity, you set how long the computer must be idle before intensities are changed.

    Scheduled Action


CGWatcher allows you to create mining profiles using different miners, config files, and/or arguments. When you first use it, it will create a default profile and try to locate a miner if one is running or one is located in the same directory or subdirectories of CGWatcher. If it cannot find a miner, you will have to manually specify where it is located and (optionally) a config file and/or arguments you want to use. You can do this by clicking the 'Manage Profiles...' button in the Settings tab. You can create as many profiles as you'd like for the different crypto-currencies you mine. You can also rename the default profile if you'd like, it just names the first one Default because I had to name it something.

Managing profiles in CGWatcher

When you switch to a new profile ("activate" a profile), CGWatcher will use that profile's settings any time it starts or restarts the miner. However, if you switch profiles while a miner is running, you will obviously need to restart the miner in order for the new profile to be used. You can see which profile a currently running miner is using on the Status tab. Ideally it would always be the same as the active profile you've set... but if you changed profiles while mining and chose not to restart the miner when prompted, keep in mind that the miner will still be running on the previous profile until it is restarted (or stopped and started).

Coin Profitability

Coin Profitability in CGWatcher

Coin profitability is updated continuously at regular intervals to show which coins are most profitable at the moment. This information is also used when you create scheduled actions to automatically switch to your most profitable profile.

Config File Editor

Config File Editor

The Config File Editor attempts to make editing your miner's configuration easier. To start, it displays the config file in a grid allowing you to see all available settings and a description of each. Settings that can only be enabled or disabled will have a true or false option. Settings that allow numbers only (not including lists of numbers) will only allow numbers. The 'Validate' button attempts to check your settings for errors that may prevent the miner from starting or working correctly. Some things to know about the Config File Editor:

  • Settings that are set to default values are not written to the config file upon saving. They are also not converted to arguments, because they are set to default values and don't need to be explicitly set.
  • To add, edit, or remove pools, locate Pools in the config file grid. (There may be a Pools category heading as well in Category view mode), but you want the Pools that says '(Collection)' in the cell next to it. Click on the word '(Collection)' and a small [...] button will appear in the cell. Click on this [...] button to open the pool window. If you've ever used a property grid in Microsoft or similar software, you will recognize this type of grid and the accompanying collection editor.
  • When editing pools, you can create names for them as well so they are more easily identifiable when editing them later on. Pool names are saved inside the config file, but will not cause a problem with the miner. To change pool priorities, use the up and down arrows in the pools window to move pools up and down the list. The top of the list is the first priority, the bottom of the list is last priority.
  • 'Name #' textbox - You can name your config files so when you're using them in profiles they will be easier to access. Enter a name for the config file in the Name textbox. Then when managing your profiles, you can select a Named config file from the Config File textbox drop-down instead of needing to browse your computer for it. After clicking out of the Config File textbox, it will be converted to the config file path automatically.
  • Ensure API is enabled upon saving' : If enabled, the API access needed by CGWatcher will always be enabled when saving the config file, regardless if these settings were enabled in the grid. It will not affect other groups/IP address in the api-allow setting, it only makes sure api-listen is enabled and that is included in the W: group of api-allow.
  • The Config File Editor Menu
          ■ File -> New - Create a new config file.
          ■ File -> Open - Open an existing config file.
          ■ File -> Save (As) - Save the current config file.
          ■ File -> Close - Close the Config File Editor.
          ■ Tools -> Import Settings -> From Config File... - select an existing config file to import settings from. The current settings will be overwritten, but will not be permanent until you save the config file.
          ■ Tools -> Import Settings -> From Named Config File -> <select> - if you've set names for config files using the Name textbox in Config File Editor, these config files can be loaded quickly by just this name, both in Config File Editor and in the Mining Profiles window. This is the same as the previous menu item, but quicker and easier.
          ■ Tools -> Import Settings -> From Arguments - enter or paste miner arguments to have them converted to a config file. If you have a config file open, you will be asked if you want to overwrite only the settings listed in the arguments, or if you want to create a new config file using only the settings listed in the arguments.
          ■ Tools -> Export Settings -> To Arguments - converts the current config file to miner arguments.
          ■ Tools -> Open this Config File in Notepad - opens config file in Notepad. There is also a button next to the config file's Path to open in Notepad.
          ■ Tools -> Validate this Config File - checks the config file for errors in the settings' formats or values.

CGWatcher runs on Windows and requires the .NET framework 4.0. It should work with the latest versions of CGMiner and BFGMiner, although changes to those miners may require changes to CGWatcher.

In order for CGWatcher to work correctly, it needs full access to the miner's API. While previous versions required that you ensure this is enabled manually, version now does this automatically when the miner is started using CGWatcher. Regardless of whether the api-listen and api-allow options are set correctly, CGWatcher will make sure they are enabled before starting the miner without altering your config file or arguments.

While you no longer need to manually ensure these options are set, the following is how you would set these options via arguments or a config file:

Command-line arguments:

    --api-listen --api-allow W:

Configuration file entries (separate entries with commas):

    "api-listen" : true
    "api-allow" : "W:"

To-Do List

- Originally created to use with CGMiner, testing with BFGMiner is not as thorough.

I am working on a program called CGRemote which will create a dashboard to monitor and control your miners remotely. It will communicate with CGWatcher or the miner directly (for non-Windows miners). It is currently in beta, more information available at:

You can send bugs or feature requests to the email address in the ReadMe or post in a comment here. You can check #cgwatcher on Freenode for live support. Donations are greatly appreciated as they motivate me and allow me to spend more time on this project. After all, the program's goal is to help you make more money. Feature requests from those who donate get priority.

Donation addresses:
BTC: 19msnBddmcaHnbTTQgFgzPDuy6PqfBgFJh
NMC: NJjD4rP5xy2mgSK8gXXsZwFkdknbvtvy3q
More donation options are available in the About tab.

The download link is now available on the new CGWatcher page at

AMS.Profile.dll by Alvaro Mendez
Newtonsoft.Json.dll by James Newton-King
CGMiner written by Con Kolivas
BFGMiner by Luke-Jr.
OpenHardwareMonitorLib.dll by Michael Möller
OpenCLNET.dll by ananth