Kiev and pro-Russia rebels have agreed a memorandum on a peace plan for the conflict in east Ukraine.
The nine-point deal includes setting up a 19-mile buffer zone, a ban on overflights of part of eastern Ukraine by military aircraft and the withdrawal of “foreign mercenaries” on both sides.
The agreement was announced at talks in the Belarusian capital Minsk, where a ceasefire was agreed on September 5.
More than 3,000 have died in fighting in two eastern regions since April.
The original cease-fire has been frequently violated but is still holding.
Ukraine accuses Russia of arming separatists and sending Russian troops to the eastern Donetsk and Luhansk regions. The Kremlin denies it has any role there.
In a separate development on Saturday, a humanitarian convoy of about 200 trucks from Russia has arrived in the city of Donetsk, Russian news agencies report.
They say the convoy – Russia’s third in recent weeks – delivered food, water and generators, but this was done without Ukraine’s authorization.
The deal was reached after late-night talks between representatives of Ukraine, Russia, eastern separatists and the Organization for Security and Cooperation in Europe (OSCE).
Correspondents say it is an effort to add substance to the fragile ceasefire agreement.
Former Ukrainian President Leonid Kuchma, representing Kiev at Minsk talks, said that all sides had agreed to move back some of their heavy weapons.
“Heavy artillery will be moved 15 km away from the front line,” he said.
He added that the deal would be implemented within 24 hours and monitors from the OSCE would travel to the buffer zone to check for compliance.
Separatist leader Alexander Zakharchenko said that the two sides did not discuss the status of the rebel-held areas of Luhansk and Donetsk.
“We have our opinion on it while Ukraine has its own,” he said.
Earlier this week, Ukraine’s parliament passed a bill granting a three-year “self-rule” to parts of the Donetsk and Luhansk regions – a move described as “capitulation” by some Ukrainian lawmakers.
The Russian ambassador to Ukraine, Mikhail Zurabov, representing Moscow at the talks, said that “mercenaries” were fighting on both sides, and called on OSCE to oversee their removal.
Russia has repeatedly said that any of its citizens fighting alongside separatists in Ukraine are doing so in a private capacity.
[youtube WDiKviVSCC8 650]