With just about any other type of Workflow engine, I would suggest running a scheduled workflow that runs once a day that uses a filtered REST call to find all items that are 6 months old. Unfortunately, one of the biggest things missing from 2010 workflows is the ability to query for multiple items.
What 2010 workflows does have is the ability to "Pause". If you are looking to be alerted 6 months from the date the Item is created, then you can add these steps to your existing On Created workflow, after it emails the notifications about creating, it can initiate the "Pause" action here. If you need to base it on some other Date in the metadata that may change, then you will need to create a new workflow triggered on item creation and update. It will probably only have two steps, one to Pause for 180 days
, and then the next step would sent the email notification.
To make this send the mail notification when it has been more than 180 days since the Item was modified, set this workflow to be triggered on Item Created and Item Updated, then the next step After the Pause
action should check if the current date is greater than (the Item's modified date + 180 days), and if so, send the email, otherwise nothing. You will end up with multiple instances of this workflow being in progress for each item, once for every time the item is updated, but when each instance "wakes up" 180 days later, it checks again to see if it is still 180 days old before sending the email.
Note that due to the limitations of 2010 workflows not being able to simply query and loop through items, if you have any PowerShell skills, you may be better off writing a scheduled PowerShell script than implementing this complicated workflow.